張文彬
(上海電力大學(xué) 自動(dòng)化工程學(xué)院, 上海 200090)
樽海鞘群算法(Salp Swarm Algorithm,SSA)是2017年由MIRJALILI S等人[1]提出的一種新的智能算法。作為一種元啟發(fā)式算法,SSA具有收斂速度快、設(shè)定參數(shù)少、簡(jiǎn)單易懂等優(yōu)點(diǎn),但也存在易陷入局部極值點(diǎn)、收斂精度不高等問(wèn)題。目前,已有學(xué)者對(duì)該算法進(jìn)行了改進(jìn)并應(yīng)用于相關(guān)研究。文獻(xiàn)[2]引入了評(píng)估移動(dòng)策略來(lái)增強(qiáng)算法的開(kāi)發(fā)能力,并成功用于永磁同步電機(jī)的多參數(shù)辨識(shí);文獻(xiàn)[3]通過(guò)引入levy飛行機(jī)制來(lái)提高算法的全局搜索能力,并用于多閾值圖像分割時(shí)的優(yōu)化;文獻(xiàn)[4]結(jié)合了混沌精英質(zhì)心拉伸機(jī)制,有效地提高了SSA的收斂速度和收斂精度;文獻(xiàn)[5]用Tent映射來(lái)初始化種群個(gè)體,并在食物源的位置中加入“瘋狂”算子,提高了算法的開(kāi)發(fā)能力。本文在SSA中引入天體運(yùn)動(dòng)算子來(lái)提高算 法的開(kāi)發(fā)能力,并通過(guò)7個(gè)常用的算法測(cè)試函數(shù)驗(yàn)證改進(jìn)算法的有效性。
SSA的思想來(lái)源于樽海鞘聚集成一條鏈?zhǔn)降男袨?即前后個(gè)體之間相互影響。將樽海鞘群中的個(gè)體劃分為領(lǐng)導(dǎo)者和追隨者,其中領(lǐng)導(dǎo)者在鏈的前端,對(duì)周圍的環(huán)境有更好的判斷。SSA的具體運(yùn)算步驟如下[6]。
1.1.1 種群的隨機(jī)初始化
設(shè)種群總數(shù)為N,其中領(lǐng)導(dǎo)者個(gè)數(shù)為Nl,追隨者個(gè)數(shù)為Nf,解空間維數(shù)為D維,搜索空間的上限和下限分別為:ub=[ub1ub2ub3…ubD]和lb=[lb1lb2lb3…lbD],那么樽海鞘個(gè)體的位置可以表示為xi=[x1x2x3…xD]。
1.1.2 領(lǐng)導(dǎo)者的位置更新
對(duì)第i個(gè)領(lǐng)導(dǎo)者在第j維上的位置進(jìn)行更新,表達(dá)式為
(1)
(2)
式中:Fj——目標(biāo)食物的位置;
c2,c3——隨機(jī)產(chǎn)生的數(shù),范圍均為[0,1];
t,tmax——當(dāng)前迭代次數(shù)和最大迭代次數(shù)。
參數(shù)c1的值對(duì)于算法的開(kāi)發(fā)和探索能力的平衡起著至關(guān)重要的作用。由式(2)可以看出c1的值由2遞減到0。
1.1.3 追隨者的位置更新
對(duì)第i個(gè)追隨者在第j維上的位置進(jìn)行更新,表達(dá)式為
(3)
式中:a——加速度;
t0——時(shí)間;
v0——初始速度。
(4)
天體運(yùn)動(dòng)更新的思想來(lái)自于天體物理學(xué)中行星繞太陽(yáng)運(yùn)動(dòng)的軌跡[7]。本文將這一思想與SSA結(jié)合,得到天體運(yùn)動(dòng)更新的樽海鞘群算法(Astrophysics-inspired Salp Swarm Algorithm,ASSA)。其具體改進(jìn)方法如下。
從N個(gè)種群中隨機(jī)選擇k個(gè)樽海鞘個(gè)體,讓這k個(gè)個(gè)體圍繞當(dāng)前種群中最優(yōu)的個(gè)體來(lái)更新位置,其更新表達(dá)式為
Yi,new=Ybest+Ri,bestU(-2,2)
(5)
式中:Yi,new——被選擇的個(gè)體更新后的位置;
Ybest——當(dāng)前最優(yōu)個(gè)體;
Ri,best——個(gè)體i與最優(yōu)個(gè)體間的距離;
U(-2,2)——區(qū)間[-2,2]內(nèi)的隨機(jī)數(shù),與參數(shù)c1的變化相對(duì)應(yīng)。
同時(shí),最優(yōu)個(gè)體也更新其自身位置,更新公式為
Ybest,new=YbestU(-2,2)
(6)
將更新后的位置與原位置相比,選擇適應(yīng)度較好的作為最終更新位置,即
(7)
改進(jìn)后的樽海鞘群算法流程如圖1所示。
圖1 ASSA的流程示意
文獻(xiàn)[4-5]中為了驗(yàn)證所提出的改進(jìn)算法的有效性,將其與其他智能算法對(duì)基準(zhǔn)函數(shù)進(jìn)行了多次獨(dú)立重復(fù)實(shí)驗(yàn),并最終比較了各個(gè)算法的最佳值(Best)、平均值(Mean)、標(biāo)準(zhǔn)差(Standard Deviation,Std),以及算法的成功率(Success Rate,SR)。為了驗(yàn)證本文所提出的ASSA的有效性,對(duì)7個(gè)常用的測(cè)試函數(shù)進(jìn)行最小值尋優(yōu)仿真,并將結(jié)果與SSA、蟻獅算法(Ant Lion Optimization,ALO)[8-9]、灰狼優(yōu)化算法(Gray Wolf Optimization,GWO)[10-11]、粒子群優(yōu)化算法(Particle Swarm Optimization,PSO)進(jìn)行比較,測(cè)試函數(shù)的詳細(xì)信息如表1所示。其中,U表示單峰,M表示多峰,S表示可分,N表示不可分。
表1 測(cè)試函數(shù)信息
為了避免單次測(cè)試帶來(lái)的偶然性影響,對(duì)每個(gè)函數(shù)進(jìn)行30次獨(dú)立實(shí)驗(yàn),比較每種算法結(jié)果的最佳值、平均值、標(biāo)準(zhǔn)差和算法的成功率。判斷每次試驗(yàn)是否成功的公式為
(8)
式中:FA——每次實(shí)際求解最佳值;
FT——測(cè)試函數(shù)理論最佳值。
算法參數(shù)設(shè)置如下:上述4種算法的種群數(shù)N=30;最大迭代次數(shù)tmax=200;PSO算法的慣性權(quán)重和學(xué)習(xí)因子分別為w=1,c1,PSO=c2,PSO=1.5[4];SSA和ASSA中領(lǐng)導(dǎo)者個(gè)數(shù)Nl和追隨者個(gè)數(shù)Nf設(shè)成Nl=Nf[2,12-13],且Nl=Nf=N/2=15;ASSA中k=15%×N≈5。
表2為5種算法的實(shí)驗(yàn)結(jié)果。其中,最優(yōu)值和平均值這兩個(gè)指標(biāo)能夠很好地反映算法的收斂精度,而收斂精度的高低在很大程度上決定了算法的優(yōu)劣。由表2可以看出,對(duì)于單峰函數(shù)f1~f4,ASSA的收斂精度非常高,達(dá)到了1.0×10-50以上,而SSA對(duì)這4種函數(shù)的尋優(yōu)最優(yōu)值均較大,其中對(duì)函數(shù)f3的尋優(yōu)值甚至超過(guò)890,具有較大的誤差。由此可見(jiàn),ASSA能夠改善SSA存在的收斂精度不高的問(wèn)題。對(duì)于多峰函數(shù)f6,ASSA的收斂精度達(dá)到了1.0×10-16,遠(yuǎn)高于其他4種算法(GWO的收斂精度為1.0×10-5,PSO為2.7,SSA為5,ALO為8),滿足了算法的精度要求。對(duì)于多峰函數(shù)f5和f7,ASSA收斂到了理論上的最優(yōu)值零,這是其他算法所不能比擬的。
標(biāo)準(zhǔn)差和成功率能夠反映算法的穩(wěn)定性。ASSA的標(biāo)準(zhǔn)差遠(yuǎn)小于其他4種算法,采用ASSA優(yōu)化的7個(gè)基準(zhǔn)函數(shù)的標(biāo)準(zhǔn)差基本保持在1.0×10-30,SSA的標(biāo)準(zhǔn)差在1~200,GWO的標(biāo)準(zhǔn)差最好的也只有1.0×10-8。由此可以看出,ASSA對(duì)于不同函數(shù)的運(yùn)算結(jié)果的穩(wěn)定性比其他算法要好。對(duì)7個(gè)基準(zhǔn)測(cè)試函數(shù),在規(guī)定的200次迭代次數(shù)內(nèi),ASSA優(yōu)化結(jié)果的成功率都是100%,而其他算法如GWO在對(duì)函數(shù)f3~f5時(shí)均難以達(dá)到100%,PSO和SSA的成功率甚至為零。
以上是基于30次獨(dú)立運(yùn)行的平均值、標(biāo)準(zhǔn)差的對(duì)比實(shí)驗(yàn),無(wú)法反映每一次運(yùn)行時(shí)各個(gè)算法之間的差異。文獻(xiàn)[14]提出,應(yīng)該對(duì)改進(jìn)的算法進(jìn)行統(tǒng)計(jì)性檢驗(yàn),以驗(yàn)證其是否具有明顯優(yōu)勢(shì)。
因此,本文在5%顯著性水平下進(jìn)行了Wilcoxon秩和檢驗(yàn)。在7個(gè)基準(zhǔn)測(cè)試函數(shù)下,5種算法在Wilcoxon秩和檢驗(yàn)中求得的p-value值如表3所示。將每個(gè)函數(shù)的最佳算法的值標(biāo)記為N/A,以符號(hào)“+,=,-”分別表示ASSA的性能優(yōu)于、等于和劣于相比較的算法。
文獻(xiàn)[14]指出,p-value值小于0.05就可以被認(rèn)為是拒絕秩和假設(shè)。由表3可以看出,與其他算法相比,ASSA的p-value值均小于0.05,可以認(rèn)為在統(tǒng)計(jì)上ASSA比其他算法更具優(yōu)越性,即ASSA具有更高的收斂精度。
文獻(xiàn)[15]提出了一個(gè)有效并且可行的判別算法性能的指標(biāo),即為平均絕對(duì)誤差(Mean Absolute Error,MAE)。其計(jì)算公式為
表2 各個(gè)算法的結(jié)果對(duì)比
表3 7個(gè)基準(zhǔn)函數(shù)下5種算法的Wilcoxon秩和檢驗(yàn)的pvalue值
(9)
式中:mi——算法多次獨(dú)立測(cè)試后得到的最優(yōu)結(jié)果的平均值;
Nb——測(cè)試函數(shù)的個(gè)數(shù);
oi——測(cè)試函數(shù)的理論最優(yōu)值。
本文同樣用MAE來(lái)鑒別5種算法的優(yōu)劣性,其結(jié)果如表4所示。
表4 5種算法的MAE排名
由表4可以看出,ASSA的MAE值最小,幾乎為零,遠(yuǎn)遠(yuǎn)小于SSA算法的MAE值524,再一次驗(yàn)證了ASSA算法的優(yōu)越性。
圖2是5種算法對(duì)不同基準(zhǔn)測(cè)試函數(shù)的平均收斂曲線。其中,ASSA在函數(shù)f5和函數(shù)f7的尋優(yōu)過(guò)程中達(dá)到了最優(yōu)值為零,故ASSA曲線的后面部分沒(méi)有顯示。
圖2 不同基準(zhǔn)測(cè)試函數(shù)下5種算法的平均收斂曲線
由圖2可以看出,對(duì)于7個(gè)基準(zhǔn)函數(shù),ASSA的收斂速度很快,并且在200次的迭代中并沒(méi)有出現(xiàn)陷入局部極值點(diǎn)的現(xiàn)象。其他4種算法的收斂速度遠(yuǎn)遠(yuǎn)不及ASSA,并且在迭代后期曲線平緩,下降速度慢,容易陷入局部極值點(diǎn)。對(duì)于函數(shù)f1,函數(shù)f3和函數(shù)f4,ASSA均以非??斓乃俣仁諗?而SSA,GWO,ALO的收斂速度十分緩慢,PSO則容易陷入局部極值點(diǎn);對(duì)于函數(shù)f2,PSO,SSA,ALO分別在迭代到18次、20次和100次左右便陷入局部極值;對(duì)于函數(shù)f5和f7,ASSA經(jīng)不到100次迭代就達(dá)到了理論最優(yōu)值,而其他3種算法依舊收斂速度緩慢,且最終精度也不高。
不論是針對(duì)單峰還是多峰函數(shù),ASSA的收斂速度都很快,且收斂精度高。
本文在SSA的基礎(chǔ)上,隨機(jī)選取部分個(gè)體圍繞全局最優(yōu)個(gè)體進(jìn)行位置更新,以探索最優(yōu)個(gè)體附近的區(qū)域。通過(guò)7個(gè)基準(zhǔn)測(cè)試函數(shù)對(duì)ASSA的性能進(jìn)行檢驗(yàn),結(jié)果表明,ASSA的最優(yōu)值、平均值、標(biāo)準(zhǔn)差等各項(xiàng)指標(biāo)都十分優(yōu)異,與SSA算法相比,其性能有了極大的提高。