遼寧省財(cái)政廳信息中心 牛 旭
人工蜂群算法對(duì)于解決函數(shù)優(yōu)化問(wèn)題有顯著的效果但其也有其缺陷,如易于過(guò)早陷入局部最優(yōu)、后期收斂速度慢、對(duì)于復(fù)雜的問(wèn)題搜索最優(yōu)解能力弱[1],計(jì)算精度不高等問(wèn)題,針對(duì)以上缺陷,對(duì)該算法進(jìn)行優(yōu)化設(shè)計(jì)。
人工蜂群算法是一種群體智能優(yōu)化算法,主要思想是模擬蜂群的智能采蜜行為[2]。該算法首先,隨機(jī)產(chǎn)生初始種群P,SN個(gè)初始解,其中SN為采蜜蜂數(shù)也等于蜜源數(shù)。每個(gè)解都是一個(gè)D維的向量,D為優(yōu)化參數(shù)的個(gè)數(shù)。然后,以這些初始解為基礎(chǔ)對(duì)采蜜蜂、觀察蜂和偵查蜂進(jìn)行循環(huán)搜索[2]。
根據(jù)蜂源的花蜜量[3],觀察蜂選擇每個(gè)蜜源的概率為:
其中,為蜂源i的適應(yīng)值。
已知當(dāng)前記憶位置,通過(guò)下式產(chǎn)生新的候選位置vi,即ABC的搜索方程:
其中,k,j滿足k∈{1,2,…,SN},j∈{1,2,…,D},k不等于I,為[-1,1]區(qū)間內(nèi)的隨機(jī)數(shù)。
如果蜜源經(jīng)過(guò)指定的循環(huán)次數(shù)后仍沒(méi)有改進(jìn),則舍棄該位置。該處的采蜜蜂成為偵查蜂并按下式產(chǎn)生新位置。
其中,為搜索空間的上界和下界。
(1)ABC/best算法[4]:相比于標(biāo)準(zhǔn)ABC的搜索方程,ABC/best/1和ABC/best/2產(chǎn)生的候選解只分布在當(dāng)前種群的最優(yōu)個(gè)體附近。因此,改進(jìn)的搜索方程具有很強(qiáng)的開發(fā)能力。同時(shí),ABC/best算法的結(jié)構(gòu)比較簡(jiǎn)單易于執(zhí)行。只要在標(biāo)準(zhǔn)ABC算法框架中更換搜索方程即可。
(2)GABC算法[5]:受粒子群算法的啟發(fā),GABC算法采用以下搜索方程:
其中,k,j滿足k∈{1,2,…,SN},j∈{1,2,…,D},k不等于i,為[-1,1]之間的隨機(jī)數(shù),為[0,1.5]之間的隨機(jī)數(shù),為當(dāng)前種群的最優(yōu)個(gè)體??梢钥闯?,受粒子群?jiǎn)l(fā)的搜索方程(4),由于有當(dāng)前群體的最優(yōu)個(gè)體的引導(dǎo),在保證算法探索能力的同時(shí),在一定程度上也提高了算法的開發(fā)能力。
為了更大程度地提高計(jì)算精度和收斂速度,本文在研究ABC/best和GABC算法的基礎(chǔ)上,提出了新型的基于人工蜂群的EABC算法。以下方程分別為采蜜蜂階段和觀察蜂階段的搜索方程:
其中,r1,r2,j滿足r1,r2∈{1,2,…,SN},j∈{1,2,…,D},r1,r2,i互不相等,為當(dāng)前群體最優(yōu)個(gè)體,α為[0,A]之間的隨機(jī)數(shù),β為rand*B,這里B是一個(gè)均值為μ,方差為σ的高斯分布數(shù)。以下給出了EABC算法的偽代碼:
Step 1) 初始化:
Step 2) 采蜜蜂階段:For i=1,...SN,執(zhí)行以下程序
Step 2.1)采用式(1)產(chǎn)生一個(gè)新的候選位解Vi; 計(jì)算f(Vi),令FES=FES+1.
Step 2.2)如果
Step 3) 計(jì)算概率值Pi,令t=0,i=1.
Step 4) 觀察蜂階段:
While t<=SN,執(zhí)行以下程序
Step 4.1) IF rand(0,1),產(chǎn)生一個(gè)新的候選解Vi; 計(jì)算
f(Vi),令
Step 4.2) 令i=i+1,IF i=SN,令i=1.
Step 5) 偵查蜂階段:
隨機(jī)產(chǎn)生一個(gè)解替換Xi.
Step 6) IF FES>=Max.FES,結(jié)束運(yùn)行并輸出最優(yōu)解,最優(yōu)個(gè)體;ELSE,轉(zhuǎn)至Step 2.
為比較EABC算法與幾種對(duì)比算法的性能,本章從文獻(xiàn)中選取了11個(gè)D=30或D=60的測(cè)試函數(shù),1個(gè)D=100或D=200的測(cè)試函數(shù),2個(gè)D=10的測(cè)試函數(shù),1個(gè)D=4的低維測(cè)試函數(shù),1個(gè)D=24的測(cè)試函數(shù)和2個(gè)D=30的測(cè)試函數(shù)。
對(duì)所有的測(cè)試函數(shù),設(shè)置種群的規(guī)模為100(SN=50),limit=0.6*SN*D。為了能對(duì)算法結(jié)果進(jìn)行有效統(tǒng)計(jì),每個(gè)函數(shù)獨(dú)立優(yōu)化30次,統(tǒng)計(jì)其平均最優(yōu)值(Mean)和標(biāo)準(zhǔn)方差(SD)在對(duì)不同算法進(jìn)行比較時(shí),每個(gè)獨(dú)立運(yùn)行的算法采用相同的初始群體,這樣使得每個(gè)算法之間的比較是公平的,實(shí)驗(yàn)結(jié)果如圖1。
圖1 各算法運(yùn)行比較
圖2 GABC/ EABC算法運(yùn)行結(jié)果
為更直觀的反映算法的尋優(yōu)效果,將EABC算法與標(biāo)準(zhǔn)ABC算法,ABCbest1算法,ABCbest2算法,GABC算法進(jìn)行比較。五種算法對(duì)相關(guān)測(cè)試函數(shù)的收斂曲線如圖1所示。由上圖可以看出,EABC算法的計(jì)算精度和收斂速度比標(biāo)準(zhǔn)ABC算法和GABC算法都有很大程度的提高。ABCbest1算法在多數(shù)函數(shù)中也取得了較好的結(jié)果。
本文的數(shù)據(jù)是ABC算法, ABC/best/1算法, ABC/best/2算法,GABC算法, EABC算法分別在f1函數(shù), f2函數(shù)……, f32函數(shù)中實(shí)現(xiàn)得到的, 結(jié)果如圖2所示。
本文針對(duì)蜂群算法的改進(jìn)策略及適應(yīng)性能進(jìn)行探討和研究。針對(duì)現(xiàn)有算法存在的不足之處,受蟻群算法、差分進(jìn)化算法、粒子群優(yōu)化算法的啟發(fā),設(shè)計(jì)出了一些新的搜索方程,提出了改進(jìn)的EABC算法。相比于標(biāo)準(zhǔn)ABC的搜索方程,EABC通過(guò)在采蜜蜂和觀察蜂階段采用不同的搜索方程來(lái)提高算法的開發(fā)能力。最后,通過(guò)數(shù)值試驗(yàn),驗(yàn)證了所提出的搜索方程可以顯著地提高人工蜂群算法的性能。使其在保證探索能力的基礎(chǔ)上,可以提高開發(fā)能力。
[1]江銘焱.人工蜂群算法[M].北京:科學(xué)出版社,2015:56-57.
[2]賈俊平.統(tǒng)計(jì)學(xué)[M].北京:中國(guó)人民大學(xué)出版社,2015:11-17.
[3]BruceJohnson.VisualStudio2015高級(jí)編程(第6版) [M].北京:清華大學(xué)出版社,2016:105-108.
[4]申元霞,王國(guó)胤.新型粒子群優(yōu)化模型及應(yīng)用[M].北京:科學(xué)出版社,2016:22-23.
[5]劉新宇.算法新解[M].北京:人民郵電出版社,2016:34-39.