史洪巖,蔡志豪
(沈陽化工大學(xué)信息工程學(xué)院,遼寧沈陽 110142)
群智能優(yōu)化算法根據(jù)對(duì)自然界中生物群落個(gè)體之間的互相合作以及信息交換的模仿來找尋各種繁雜優(yōu)化問題的最優(yōu)解。近年來,群智能優(yōu)化算法憑借其簡單靈活的特點(diǎn)在優(yōu)化領(lǐng)域中受到了廣泛的關(guān)注。
麻雀搜索算法是薛建凱[1]在2020 年提出的一種群智能優(yōu)化算法,自提出以來,麻雀算法相較于其他優(yōu)化算法,憑借其原理簡單高效、搜索速度快等優(yōu)勢(shì)被廣泛應(yīng)用。然而,基本的麻雀算法同大多數(shù)優(yōu)化算法一樣,仍然面臨著求解精度不足、不能跳出局部最優(yōu)值等問題。因此,部分學(xué)者對(duì)其進(jìn)行了改進(jìn)。文獻(xiàn)[2]在發(fā)現(xiàn)者位置公式中引入自適應(yīng)權(quán)重并改進(jìn)邊界約束,增強(qiáng)算法的尋優(yōu)效果及搜尋速度。文獻(xiàn)[3]通過引入自適應(yīng)T 分布對(duì)麻雀?jìng)€(gè)體進(jìn)行變異擾動(dòng)的方式,防止算法陷入局部最優(yōu)。以上研究從不同角度在一定程度上對(duì)SSA 的尋優(yōu)性能有了提升,但仍有改進(jìn)的余地。
針對(duì)SSA 存在的不足以及為了提高SSA 的尋優(yōu)性能,提出一種基于自適應(yīng)權(quán)重與透鏡成像反向?qū)W習(xí)的改進(jìn)麻雀搜索算法(LIW-SSA)。通過找尋九個(gè)基準(zhǔn)測(cè)試函數(shù)最優(yōu)解并進(jìn)行對(duì)比,證明LIW-SSA 是有效可行的。
麻雀搜索算法是受大自然中麻雀種群的行為特征啟發(fā)而設(shè)計(jì)的一種優(yōu)化算法,根據(jù)模仿麻雀種群的覓食與反覓食活動(dòng)來實(shí)現(xiàn)全局尋優(yōu)求解。在麻雀種群中發(fā)現(xiàn)者的作用通常是搜索食物并且為其他麻雀供應(yīng)食物來源,加入者則通過監(jiān)視發(fā)現(xiàn)者掌握食物來源。另外,當(dāng)某只加入者的食物來源優(yōu)于發(fā)現(xiàn)者,便取代了發(fā)現(xiàn)者的身份。反捕食行為由麻雀種群中意識(shí)到危險(xiǎn)的警界者負(fù)責(zé),當(dāng)危險(xiǎn)來臨時(shí),迅速向其他位置移動(dòng)。
發(fā)現(xiàn)者的位置更新公式為:
加入者的位置更新公式為:
式中,Xworst表示在所有麻雀中占據(jù)的最劣位置,n為麻雀數(shù)量,是發(fā)現(xiàn)者中的最優(yōu)位置,A是1×d的矩陣(所有元素均隨機(jī)取值為1 或者-1),且A+=AT(AAT)-1。
警界者的位置更新公式為:
在基本的麻雀搜索算法中,麻雀種群的產(chǎn)生是隨機(jī)的,這往往會(huì)出現(xiàn)麻雀種群多樣性低且分布不均勻的問題[4]?;煦缬成淇梢陨苫煦缧蛄?,混沌序列分布與隨機(jī)生成相比更為均勻,故可以用來生成麻雀種群[5]。目前,常被使用的映射有Logistic 映射、Circle 映射等,如圖1 所示,在分別經(jīng)過300 次與500次迭代后,Logistic 映射生成的混沌序列在接近1 和0處分布相對(duì)密集,而Circle 映射與之相比整體分布較為均勻,所以該文將Circle 映射用來生成麻雀種群。
圖1 混沌映射分布圖
Circle 映射公式如下所示:
其中,a=0.5,b=0.2,i為映射產(chǎn)生的序列號(hào)。采用Circle 映射生成種群的步驟如下:首先,隨機(jī)生成一組d維序列,然后,根據(jù)式(4)進(jìn)行迭代,直至產(chǎn)生N(麻雀種群規(guī)模)組d維序列,最后,將其映射到算法的優(yōu)化空間中。
通過采用Circle 映射策略來代替麻雀算法中的隨機(jī)生成種群方式,使得麻雀種群質(zhì)量更高且分布更均勻,從而提升算法找尋最優(yōu)解的速度。
在基本麻雀算法中,式(3)中的β由于取值為隨機(jī)值,使得算法在前后期的搜索能力大打折扣[6]。在文獻(xiàn)[7]的啟發(fā)下,將自適應(yīng)權(quán)重因子w引進(jìn)到麻雀警戒者更新公式中,在搜索前期,權(quán)重較大,能夠很好地提高算法的全局開發(fā)能力;在搜索后期,權(quán)重較小,又能大大提高算法的局部挖掘能力。w的數(shù)學(xué)表達(dá)式為:
式中,t為算法當(dāng)前迭代次數(shù),P的值為500。
引入w后的警戒者更新公式如下:
通過在警戒者的更新公式中引進(jìn)自適應(yīng)權(quán)重因子,有利于加強(qiáng)算法早期所需的全局開發(fā)與末期所需的局部挖掘能力,從而能夠進(jìn)一步提升算法的求解性能。
針對(duì)麻雀搜索算法跳出局部最優(yōu)能力弱的缺陷,許多學(xué)者引入反向?qū)W習(xí)策略[8-11]來改善算法的性能,根據(jù)當(dāng)前麻雀位置生成反向位置,以此尋求最優(yōu)解。與反向?qū)W習(xí)相比,透鏡成像反向?qū)W習(xí)策略[12-13]能更好地?cái)U(kuò)大搜索范圍,找尋最優(yōu)解。透鏡成像原理圖如圖2 所示。
圖2 透鏡成像原理圖
如圖2 所示,假設(shè)在區(qū)間[lb,ub]的空間范圍內(nèi)存在個(gè)體P,其高度為h,在x軸上的投影為X。通過放置在o點(diǎn)(為[lb,ub]的中點(diǎn))的凸透鏡成像可得到高度為h′的P′,其在x軸上的投影為X′,則由成像原理可以得到:
由式(8)可以清晰地看出,當(dāng)k的值為1 時(shí),公式變?yōu)橐话惴聪驅(qū)W習(xí)策略。另外,通過式(8)可以得到在D維空間中的公式如下:
該文將一般反向?qū)W習(xí)策略與Circle 映射相結(jié)合來初始化麻雀種群,Circle 映射可以使初始麻雀?jìng)€(gè)體在搜索空間內(nèi)分布較為廣泛,再通過一般反向?qū)W習(xí)策略生成反向種群,根據(jù)麻雀?jìng)€(gè)體優(yōu)劣確定最終種群,因此提升了算法的初始種群質(zhì)量以及收斂速度。最后采用透鏡成像反向?qū)W習(xí)策略對(duì)當(dāng)前最優(yōu)麻雀?jìng)€(gè)體進(jìn)行擾動(dòng),生成新的麻雀?jìng)€(gè)體,并引入貪婪機(jī)制:首先求出最優(yōu)麻雀?jìng)€(gè)體與透鏡成像反向?qū)W習(xí)策略生成的反向個(gè)體的適應(yīng)度值,然后對(duì)適應(yīng)度值進(jìn)行比較,最后選擇適應(yīng)度值較優(yōu)的麻雀?jìng)€(gè)體作為當(dāng)前的最優(yōu)麻雀?jìng)€(gè)體,從而大大降低了算法陷入局部最優(yōu)的可能性。
LIW-SSA 算法的整體實(shí)施流程如下:
步驟一:確定相關(guān)參數(shù):如搜索空間界限、種群數(shù)量、算法迭代次數(shù)、發(fā)現(xiàn)者數(shù)量、警戒者數(shù)量等。
步驟二:初始化麻雀種群:首先,將Circle 映射用來生成麻雀種群(種群規(guī)模為N),然后,利用一般反向?qū)W習(xí)策略產(chǎn)生一個(gè)與之相反的種群并與初始種群合并(種群規(guī)模為2N),最后,根據(jù)麻雀?jìng)€(gè)體的適應(yīng)度值大小選取前N個(gè)麻雀作為最終種群。
步驟三:記錄最優(yōu)、最差麻雀?jìng)€(gè)體的適應(yīng)度值與相應(yīng)位置。
步驟四:根據(jù)麻雀的適應(yīng)度將排在較前的個(gè)體視為發(fā)現(xiàn)者,根據(jù)式(1)進(jìn)行位置更新。
步驟五:除發(fā)現(xiàn)者外的所有麻雀均為加入者,根據(jù)式(2)進(jìn)行位置更新。
步驟六:在所有麻雀中隨機(jī)抽取部分個(gè)體為警戒者,根據(jù)式(6)進(jìn)行位置更新。
步驟七:按照式(9)對(duì)當(dāng)前最優(yōu)麻雀進(jìn)行透鏡成像學(xué)習(xí),生成新的麻雀?jìng)€(gè)體,并根據(jù)適應(yīng)度值大小決定是否替換。
步驟八:更新最優(yōu)值、最差值以及對(duì)應(yīng)位置。
步驟九:反復(fù)執(zhí)行步驟四至八,直到達(dá)到算法最大迭代次數(shù),輸出最終結(jié)果。
為了檢驗(yàn)該文提出的LIW-SSA 是有效可行的,從文獻(xiàn)[14]中選取F1-F8、F13九個(gè)基準(zhǔn)測(cè)試函數(shù)并對(duì)其進(jìn)行尋優(yōu)求解,在文中表示為F1-F9,其中F8-F9為多峰測(cè)試函數(shù),其余均為單峰測(cè)試函數(shù),所有測(cè)試函數(shù)的維度均為30。
將LIW-SSA 與SSA、GWO(灰狼優(yōu)化算法)[15]、WOA(鯨魚優(yōu)化算法)[16-17]進(jìn)行性能測(cè)試對(duì)比,每種算法的種群規(guī)模均為30,算法迭代次數(shù)均設(shè)置為500,麻雀算法中的發(fā)現(xiàn)者和警戒者數(shù)量分別占種群規(guī)模的20%、10%。另外,由于群智能優(yōu)化算法存在很大的不確定性,故為了確保測(cè)試結(jié)果的公平每種算法均測(cè)試30 次,最終仿真測(cè)試結(jié)果如表1 所示。
根據(jù)表1 可以看出,在函數(shù)F8中,GWO 的標(biāo)準(zhǔn)差最小,SSA 次之,LIW-SSA 與WOA 不相上下。在除F8之外的其余函數(shù)中,LIW-SSA 的標(biāo)準(zhǔn)差均小于其他算法,說明了LIW-SSA 算法比其余三種算法的穩(wěn)定性能要好。另 外,對(duì)于函數(shù)F1、F3,LIW-SSA 與SSA 相較于另外兩種算法都能夠達(dá)到理論最優(yōu)值,而對(duì)于函數(shù)F4,只有LIW-SSA 找到了理論最優(yōu)值,對(duì)于函數(shù)F2,F(xiàn)5-F9來說,盡管LIW-SSA 沒有找到理論最優(yōu)值,但相較于另外三種算法均有不同程度的提升。在所有測(cè)試函數(shù)的仿真實(shí)驗(yàn)中,LIW-SSA 的平均值遠(yuǎn)遠(yuǎn)領(lǐng)先于另外三種算法。通過對(duì)最優(yōu)值以及平均值的比較,證明了LIW-SSA 的尋優(yōu)性能較好。綜上所述,LIW-SSA 算法穩(wěn)定性及尋優(yōu)精度均優(yōu)于其余三種算法。
為了驗(yàn)證不同改進(jìn)策略對(duì)SSA 的貢獻(xiàn),將LIW-SSA 與SSA、融合透鏡成像反向?qū)W習(xí)策略的LI-SSA以及引入自適應(yīng)權(quán)重因子[18-19]的W-SSA 進(jìn)行尋優(yōu)實(shí)驗(yàn)對(duì)比。在測(cè)試過程中,算法的迭代次數(shù)均設(shè)置為1 000 次,麻雀種群規(guī)模均設(shè)定為100,發(fā)現(xiàn)者和警戒者數(shù)量分別設(shè)置為種群規(guī)模的20%、10%。目標(biāo)函數(shù)的最終仿真測(cè)試結(jié)果如表2 所示。
表2 不同策略的仿真數(shù)據(jù)
根據(jù)表2 分析得出,兩種不同的改進(jìn)策略對(duì)麻雀搜索算法均有不同程度的提升。通過函數(shù)F1-F4的仿真,雖然四種算法都能夠達(dá)到目標(biāo)函數(shù)的最優(yōu)值,但LIW-SSA 的平均值以及標(biāo)準(zhǔn)差有了極大的提升,同樣在函數(shù)F5、F7的對(duì)比中,LIW-SSA 的平均值以及標(biāo)準(zhǔn)差也有了幾個(gè)量級(jí)的提升。在函數(shù)F6、F8、F9中,W-SSA 的尋優(yōu) 精度是 最高的,LIW-SSA 次之??傮w而言,在九個(gè)測(cè)試函數(shù)中,LIW-SSA 尋優(yōu)效果較好。在其余算法的比較中,LI-SSA 在函數(shù)F1-F4中表現(xiàn)較好,W-SSA 在函數(shù)F5-F9中占據(jù)明顯優(yōu)勢(shì)。因此驗(yàn)證了SSA融合兩種改進(jìn)方法是有效可行的。
為了更加直觀地觀測(cè)改進(jìn)策略對(duì)SSA 的影響,給出函數(shù)的收斂曲線如圖3 所示??梢钥闯?,對(duì)于函數(shù)F1-F4,LIW-SSA 與LI-SSA 都能夠 找到目標(biāo)函數(shù)最優(yōu)值,且求解精度與速度領(lǐng)先于另外兩種算法,W-SSA 在收斂速度以及尋優(yōu)精度上略微領(lǐng)先于SSA。通過函數(shù)F5、F8可以看出LIW-SSA 和W-SSA在收斂速度以及尋優(yōu)性能上表現(xiàn)良好,LI-SSA 的收斂速度與SSA 大致相同,但在求解精度上略勝一籌。在函數(shù)F6、F7、F9上雖然四種算法收斂速度不相上下,但LIW-SSA、LI-SSA、W-SSA 的尋優(yōu)精度與SSA 相比均有不同程度的提升,故通過收斂曲線的對(duì)比再次證明了該文提出的改進(jìn)策略的有效性以及LIW-SSA 的優(yōu)越性。
圖3 收斂曲線圖
該文在SSA 的基礎(chǔ)上利用Circle 映射+一般反向?qū)W習(xí)機(jī)制初始化麻雀種群,提升了種群豐富性,然后通過將自適應(yīng)權(quán)重因子w引入到警戒者更新公式中,加強(qiáng)了算法前期所需的全局開發(fā)以及后期所需的局部挖掘能力,最后將透鏡成像反向?qū)W習(xí)策略應(yīng)用到當(dāng)前麻雀最優(yōu)個(gè)體上,避免算法陷入局部最優(yōu)。經(jīng)過九個(gè)基準(zhǔn)測(cè)試函數(shù)的尋優(yōu)求解對(duì)比實(shí)驗(yàn),證明了該文提出的LIW-SSA 與其他群智能優(yōu)化算法如GWO、WOA 以及單策略的LI-SSA、W-SSA 相比,無論是算法的尋優(yōu)精度還是穩(wěn)定性都得到了極大改善。