趙克新,黃長(zhǎng)強(qiáng),王 淵
(空軍工程大學(xué)航空航天工程學(xué)院,西安 710038)
蟻獅優(yōu)化算法[1](Ant Lion Optimizer,ALO)作為一種新的群智能優(yōu)化算法,是澳大利亞學(xué)者Seyedali在2015年提出來的。相比于遺傳算法[2]、粒子群算法[3]、人工蜂群算法[4-5](Artificial Beecolony Algorithm,ABC)、蟻群算法[6],由于蟻獅優(yōu)化算法包含螞蟻游走和蟻獅捕獵兩種行為,在求解復(fù)雜函數(shù)優(yōu)化問題時(shí)表現(xiàn)出了更強(qiáng)的探索能力和開發(fā)能力[7]。同時(shí)該算法具有調(diào)節(jié)參數(shù)少,易于實(shí)現(xiàn)等優(yōu)點(diǎn),引起了很多學(xué)者的關(guān)注。在建立離散濾波器模型[8]、解決無線傳感網(wǎng)絡(luò)的數(shù)據(jù)收集[9]問題、可再生分布式產(chǎn)能的優(yōu)化配置[10]、解決無人機(jī)航跡規(guī)劃[11-12]問題等方面表現(xiàn)出優(yōu)越的性能。
ALO算法作為新的群智能優(yōu)化算法,本身還有很多待優(yōu)化的方面,螞蟻在精英蟻獅的周圍隨機(jī)游走,步長(zhǎng)隨著算法迭代次數(shù)的增加而減小,算法在后期容易出現(xiàn)陷入局部最優(yōu)[13]、收斂速度慢、搜索精度不高等問題,從而給算法的實(shí)際應(yīng)用帶來了負(fù)面影響[14-15]。針對(duì)這一問題,本文提出了一種具有隨機(jī)分形自適應(yīng)搜索策略的蟻獅優(yōu)化算法(Ant Lion optimizer With Stochastic Fractal and Self-adaption Searching Strategy,SFSALO)。仿真結(jié)果表明,SFSALO算法很好地平衡了全局開發(fā)與局部探索能力,能夠有效解決復(fù)雜多維函數(shù)的優(yōu)化問題。
蟻獅優(yōu)化算法的靈感來源于蟻獅幼蟲捕食螞蟻的行為:螞蟻為了尋找食物在空間內(nèi)隨機(jī)游走,蟻獅在沙丘內(nèi)利用設(shè)計(jì)好的錐形陷阱獵捕螞蟻,當(dāng)隨機(jī)游走的螞蟻落入陷阱,蟻獅便捕捉到了螞蟻并重新挖好陷阱等待另外的螞蟻。算法首先按照下式進(jìn)行初始化:
螞蟻和蟻獅分別隨機(jī)生成SN個(gè)初始解,并計(jì)算每個(gè)蟻獅位置的優(yōu)劣或者適應(yīng)度值,同時(shí)進(jìn)行排序,全局最優(yōu)值。式(1)中,xn,i表示螞蟻或者蟻獅的位置,,ul和ub分別表示游走空間的下界和上界。螞蟻隨機(jī)游走數(shù)學(xué)表達(dá)式為:
式(2)中,cumsum表示計(jì)算數(shù)組累;m為螞蟻的數(shù)量;t為當(dāng)前的迭代次數(shù);r(t)是一個(gè)隨機(jī)函數(shù),如下:
式(3)中,rand表示0到1之間的隨機(jī)數(shù)。
下列矩陣保存螞蟻的位置:
式中,d表示變量的維度,Ai,j表示第i只螞蟻在第j維上的位置。通過適應(yīng)度函數(shù)評(píng)價(jià)螞蟻位置的優(yōu)劣,螞蟻的適應(yīng)度值保存在如下函數(shù)矩陣:
蟻獅的數(shù)量與螞蟻一致,其位置與適應(yīng)度函數(shù)用下列矩陣表示:
式(4)中,d表示變量的維度,通過適應(yīng)度函數(shù)MAP評(píng)價(jià)蟻獅的位置。螞蟻在第i維的位置更新公式:
式(8)中,ai和bi為第i只螞蟻隨機(jī)游走的最小步長(zhǎng)和最大步長(zhǎng);cti和dti分別為螞蟻第t次迭代時(shí)的變量的最小值和最大值。cti和dti分別定義如下:
式中,ct表示蟻獅第t次迭代時(shí)變量的最小值和最大值。ct、dt的數(shù)學(xué)表達(dá)式如下:
式中,w為常值,t表示當(dāng)前迭代次數(shù),Tg表示最大迭代次數(shù)。
ALO算法將每次迭代的精英蟻獅個(gè)體EAntlion保存下來,螞蟻通過輪盤賭[20]的方式對(duì)蟻獅進(jìn)行貪婪選擇并和螞蟻一樣在自身周圍隨機(jī)游走,表達(dá)式如下:
蟻獅在捉到螞蟻后的位置更新公式如下:
群智能優(yōu)化算法的探索與開發(fā)能力是決定算法效率的關(guān)鍵。開發(fā)能力指的是算法在特定區(qū)域內(nèi)尋找并提取較優(yōu)的解,探索能力是指在搜索空間內(nèi)確定較優(yōu)解的能力。ALO算法的螞蟻和蟻獅位置更新方程因選擇精英蟻獅進(jìn)行游走而具有較強(qiáng)的開發(fā)能力。但同時(shí)可以看出,ALO算法的探索能力較弱,因而存在易陷入局部最優(yōu)的問題。針對(duì)這一問題,提出了隨機(jī)分形自適應(yīng)搜索策略,該策略主要是根據(jù)螞蟻的游走行為,提出了增強(qiáng)探索能力的隨機(jī)分形搜索方程;根據(jù)蟻獅重挖陷阱的行為,提出了增強(qiáng)開發(fā)能力的自適應(yīng)搜索方程。下面對(duì)提出的策略進(jìn)行詳細(xì)說明。
分形現(xiàn)象是自然界很常見的一種現(xiàn)象,例如植物的生長(zhǎng)、山河的形成以及大腦皮層等,這種部分以某種方式與整體相似的形式稱為分形。隨機(jī)分形一般由不同的隨機(jī)原則反復(fù)迭代產(chǎn)生。常用的隨機(jī)原則有高斯游走(Gaussian Walk)、列維飛行(levy Flight)、自回避游走(Self-avoiding Walks)。列維飛行具有較強(qiáng)的全局搜索能力,將列維飛行與蟻獅優(yōu)化算法中螞蟻的搜索行為相結(jié)合,提出了螞蟻隨機(jī)分形搜索方程:
式中,q表示種群數(shù)量,α表示比例因子,Xi表示最初的螞蟻位置。通過上述改進(jìn)有效地提高了螞蟻對(duì)整個(gè)解空間的探索能力。
圖1 單個(gè)粒子隨機(jī)分形示意圖
標(biāo)準(zhǔn)ALO算法中蟻獅根據(jù)螞蟻進(jìn)行陷阱位置的調(diào)整,蟻獅與螞蟻采用相同的搜索方程,經(jīng)過對(duì)算法的原理分析得到:蟻獅的行為方式影響了算法對(duì)解的精細(xì)化搜索。所以受到文獻(xiàn)[15]的啟發(fā),提出了蟻獅自適應(yīng)搜索方程:
式中,r是0到1之間的隨機(jī)數(shù),Elibest表示蟻獅全局最優(yōu)位置,表示種群i中第t只蟻獅的位置,iter表示當(dāng)前迭代的次數(shù)。隨著迭代次數(shù)的增加,蟻獅搜索范圍自適應(yīng)減小,在全局最優(yōu)位置附近進(jìn)行精細(xì)開發(fā)。
在標(biāo)準(zhǔn)的ALO算法的基礎(chǔ)上引入隨機(jī)分形自適應(yīng)搜索策略,首先針對(duì)螞蟻的行為引入隨機(jī)分形原則,對(duì)其游走方程進(jìn)行了改進(jìn),該方程利用列維飛行能夠很好地對(duì)搜索空間進(jìn)行探索。其次在蟻獅設(shè)置陷阱行為的基礎(chǔ)上引入自適應(yīng)因子,隨著循環(huán)次數(shù)的增加,自適應(yīng)地平衡算法的開發(fā)與探索能力。算法的具體步驟如下:
1)初始化算法的各個(gè)參數(shù);
2)計(jì)算每個(gè)蟻獅對(duì)應(yīng)位置的適應(yīng)度值并記錄全局最優(yōu)值;
3)while結(jié)束條件不滿足;
4)螞蟻根據(jù)式(16)進(jìn)行隨機(jī)分形游走,并計(jì)算更新后的適應(yīng)度值,與全局最優(yōu)值進(jìn)行比較,采用貪婪選擇機(jī)制進(jìn)行更替;
5)位置最佳蟻獅根據(jù)式(18)進(jìn)行自適應(yīng)陷阱設(shè)置,應(yīng)用貪婪機(jī)制更新蟻獅最優(yōu)位置;
6)判斷當(dāng)前迭代次數(shù)是否超過極限值,如果條件不滿足,轉(zhuǎn)至第4)步;否則進(jìn)入第7)步;
7)結(jié)束循環(huán),輸出最優(yōu)解。
為了驗(yàn)證本文提出的SFSALO算法的特性,選取了3個(gè)單峰,3個(gè)多峰基準(zhǔn)函數(shù)作為被測(cè)函數(shù),并與ABC算法、ALO算法的測(cè)試結(jié)果進(jìn)行比較。實(shí)驗(yàn)硬件條件為 Inter(R)Core(TM)i5-6500,CPU,3.20 GHz,4 GB,RAM,Win7操作系統(tǒng),仿真軟件為MATLAB R2013a。3種算法種群規(guī)模SN設(shè)置為50和100,迭代次數(shù)macycle為300次,試驗(yàn)次數(shù)100次。通過對(duì)比100次獨(dú)立實(shí)驗(yàn)的最優(yōu)值、平均值、最差值、方差等參數(shù),評(píng)價(jià)各個(gè)算法的優(yōu)化能力。
下頁(yè)表1為6個(gè)基準(zhǔn)函數(shù)的數(shù)學(xué)公式、理論最優(yōu)值、搜索空間。為單峰測(cè)試函數(shù),為多峰測(cè)試函數(shù)。圖2是在50維下6個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù)的收斂過程,表2為測(cè)試結(jié)果(100維收斂過程省略)。
表1 測(cè)試函數(shù)
從圖2可以看出,改進(jìn)后的SFSALO算法比標(biāo)準(zhǔn)的ALO算法具有明顯的優(yōu)勢(shì)。分析圖2(a)、2(b)、2(c)可知,在對(duì)單峰測(cè)試函數(shù)進(jìn)行尋優(yōu)時(shí),SFSALO算法的收斂速度明顯快于ALO算法,并總能夠找到理論最優(yōu)值,而標(biāo)準(zhǔn)ALO算法卻很難達(dá)到理論最優(yōu)值;分析圖 2(d)、2(e)、2(f)可知,在對(duì)多峰測(cè)試函數(shù)進(jìn)行尋優(yōu)時(shí),SFSALO算法在對(duì)測(cè)試函數(shù)4和5尋優(yōu)時(shí),可以在較少的迭代次數(shù)內(nèi)收斂到理論最優(yōu)值,尋優(yōu)的尋優(yōu)精度強(qiáng)于標(biāo)準(zhǔn)ALO算法。在對(duì)函數(shù)6進(jìn)行尋優(yōu),雖然SFSALO算法沒有收斂到理論最優(yōu)值,但是收斂精度和速度明顯優(yōu)于ALO算法。
通過下頁(yè)表2可以看出,改進(jìn)后的算法無論是收斂精度還是穩(wěn)定性,都優(yōu)于標(biāo)準(zhǔn)的ALO算法,SFSALO算法對(duì)于單峰還是多峰函數(shù)都具有較好的適應(yīng)性。在對(duì)復(fù)雜函數(shù)進(jìn)行尋優(yōu)時(shí),螞蟻的隨機(jī)搜索具有很好的探索性,不容易陷入局部最優(yōu)值;蟻獅的自適應(yīng)搜索具有很好的開發(fā)性,能夠在適應(yīng)度較高的位置附近進(jìn)行精細(xì)搜索。改進(jìn)后的算法很好地平衡了開發(fā)能力與探索能力。
圖2 不同基準(zhǔn)函數(shù)的測(cè)試收斂過程
為了進(jìn)一步說明SFSALO算法的優(yōu)越性,對(duì)ABC算法,PSO算法,GWO算法進(jìn)行了比較,維度設(shè)為50,最大迭代次數(shù)為300。圖3和圖4分別是4種算法對(duì)Sphere函數(shù)、Griewank函數(shù)的收斂過程對(duì)比。
圖3 Sphere函數(shù)收斂曲線
圖4 Griewank函數(shù)收斂曲線
表2 6個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù)仿真結(jié)果比較(50維)
仿真結(jié)果分析表明SFSALO算法的收斂精度和收斂速度明顯比其他3種算法效果顯著。對(duì)Sphere高維單峰函數(shù)和Griewank多峰函數(shù)進(jìn)行優(yōu)化時(shí),SFSALO算法在較少的迭代次數(shù)內(nèi)都可以搜索到理論最優(yōu)值。
為了解決標(biāo)準(zhǔn)ALO算法易陷入局部最優(yōu)值和收斂速度慢等缺點(diǎn),更好地平衡算法的開發(fā)與探索能力,在隨機(jī)搜索思想的啟發(fā)下,結(jié)合自適應(yīng)策略,提出了具有隨機(jī)搜索自適應(yīng)蟻獅優(yōu)化算法。改進(jìn)后算法中的螞蟻通過隨機(jī)搜索方程提高了探索能力;蟻獅利用自適應(yīng)搜索的方式對(duì)自身進(jìn)一步精細(xì)開發(fā),兩者協(xié)作共同提高了算法的全局搜索能力。通過對(duì)單峰、多峰函數(shù)進(jìn)行測(cè)試,并且與其他常見的幾種算法進(jìn)行比較,充分表明了SFSALO算法具有收斂速度快、尋優(yōu)精度高、適用廣泛等優(yōu)越的性能。