范 千,陳振健,夏樟華
(福州大學(xué) 土木工程學(xué)院, 福州 350116)
近年來(lái),優(yōu)化問(wèn)題在不同的學(xué)科和工程領(lǐng)域受到越來(lái)越多的關(guān)注,其主要分為三個(gè)類(lèi)別:約束優(yōu)化、無(wú)約束優(yōu)化和約束工程優(yōu)化問(wèn)題[1].在優(yōu)化過(guò)程中,有必要在合理的時(shí)間內(nèi)和復(fù)雜的約束下找到給定問(wèn)題的最優(yōu)解,因此如何構(gòu)建有效的尋優(yōu)策略是一個(gè)重要的研究方向.隨著計(jì)算機(jī)技術(shù)的蓬勃發(fā)展,越來(lái)越多的群智能優(yōu)化算法被相繼提出.目前,常見(jiàn)的群智能算法有差分進(jìn)化算法[2]、粒子群算法[3]、果蠅優(yōu)化算法[4]、灰狼優(yōu)化算法[5]、鯨魚(yú)優(yōu)化算法[6]等.不同于傳統(tǒng)優(yōu)化算法,這些新型算法具有參數(shù)設(shè)置簡(jiǎn)單、無(wú)衍生機(jī)制、魯棒性強(qiáng)等優(yōu)點(diǎn)[7],已經(jīng)被應(yīng)用于多個(gè)研究領(lǐng)域.
樽海鞘群算法(Salp Swarm Algorithm,SSA)是Mirjalili等在2017年提出的一種新型的群體智能優(yōu)化算法[8],該算法模仿了樽海鞘群體在海洋中的群體覓食行為.試驗(yàn)表明,與其它元啟發(fā)式算法相比,SSA算法能夠有效改進(jìn)待優(yōu)化問(wèn)題的初始解并且能收斂到全局最優(yōu).因此原SSA算法被應(yīng)用到各個(gè)學(xué)科優(yōu)化問(wèn)題的研究中,如:時(shí)差定位的非線性問(wèn)題求解[9],燃料電池的最佳參數(shù)提取[10],非線性高光譜圖像的處理[11]等.而為了進(jìn)一步提高SSA的性能,不同的學(xué)者也對(duì)其進(jìn)行了改進(jìn):文獻(xiàn)[12]將混沌映射與SSA算法結(jié)合,文獻(xiàn)[13]提出了二進(jìn)制SSA算法,文獻(xiàn)[14]將粒子群算法與SSA算法進(jìn)行混合等.這些算法在不同程度上提高了原SSA算法的性能.
根據(jù)“無(wú)免費(fèi)午餐”(No-Free-Lunch,NFL)定理,沒(méi)有一種算法能夠適用于所有的優(yōu)化問(wèn)題[15].因此,為了在實(shí)際應(yīng)用中獲得更好的結(jié)果,修改現(xiàn)有算法、開(kāi)發(fā)新算法或混合不同種算法的研究工作是非常有價(jià)值的.針對(duì)原SSA算法存在的收斂速度慢、容易陷入局部最優(yōu)等不足,本文提出一種新型的改進(jìn)SSA算法,并將其稱(chēng)之為基于折射反向?qū)W習(xí)與自適應(yīng)控制因子的改進(jìn)樽海鞘群算法(Modified SSA Based on Refracted Oppositional Learning and Adaptive Control Factor, RCSSA).該算法首先在求解過(guò)程中引入折射反向?qū)W習(xí)機(jī)制,以提高算法收斂速度和精度,其次在部分位置更新中加入了原算法已有的自適應(yīng)控制因子,進(jìn)一步改進(jìn)算法的探索性能.通過(guò)多組不同種類(lèi)和維數(shù)的基準(zhǔn)測(cè)試函數(shù)對(duì)RCSSA算法的性能進(jìn)行詳細(xì)測(cè)試,同時(shí)與其他算法進(jìn)行對(duì)比分析,以驗(yàn)證所采用改進(jìn)策略的可行性和有效性.
SSA算法的靈感來(lái)自于樽海鞘群體在海洋中的游動(dòng)和覓食行為.樽海鞘通過(guò)吸入和排出海水來(lái)推動(dòng)自身游動(dòng),并以水中的浮游植物為食,如圖1所示.在覓食過(guò)程中,樽海鞘種群中的個(gè)體彼此相連并形成環(huán)狀的長(zhǎng)鏈.該樽海鞘長(zhǎng)鏈可分為兩部分:一部分為引導(dǎo)者,位于海鞘鏈的前端,負(fù)責(zé)探索食物的位置;另一部分樽海鞘為追隨者,逐個(gè)相連,緊跟在引導(dǎo)者之后,如圖2所示.引導(dǎo)者以食物源為目標(biāo),不斷更新自身位置,該數(shù)學(xué)模型為
(1)
式中:x1,j表示搜索空間第j維上第一個(gè)樽海鞘的位置,F(xiàn)j表示食物的位置,ubj和lbj分別是搜索空間第j維的上界和下界,c2和c3是兩個(gè)相互獨(dú)立并服從[0,1]均勻分布的隨機(jī)數(shù),c1為算法中的控制因子,其值從2非線性遞減至趨于0,如圖3所示,其計(jì)算公式如下
(2)
式中:t表示當(dāng)前迭代次數(shù),T是預(yù)先設(shè)定好的最大迭代次數(shù).
圖3 控制因子c1的變化曲線
當(dāng)引導(dǎo)者位置更新后,追隨者隨之移動(dòng),其位置更新的數(shù)學(xué)模型為
(3)
式中:xi,j表示搜索空間第j維上第i個(gè)樽海鞘的位置,且i≥2.
SSA算法包括探索和開(kāi)發(fā)兩個(gè)階段.首先,探索階段是從一組隨機(jī)生成的解開(kāi)始,其目標(biāo)是在搜索空間中擴(kuò)大搜索區(qū)域,以尋找全局最優(yōu)解.接著,算法進(jìn)入開(kāi)發(fā)階段,在前一階段所得的搜索區(qū)域中進(jìn)一步尋優(yōu),以提高最優(yōu)解的準(zhǔn)確性.其中,控制因子c1對(duì)算法的收斂效果影響較大,有能夠平衡算法的探索和開(kāi)發(fā)能力:當(dāng)c1>1時(shí),算法進(jìn)行全局探索;當(dāng)c1<1時(shí),算法對(duì)局部進(jìn)行開(kāi)發(fā).在達(dá)到最大迭代次數(shù)時(shí),算法終止并輸出所得的最優(yōu)結(jié)果.
與其他元啟發(fā)式算法類(lèi)似,原SSA算法也存在收斂速度慢、容易陷入局部最優(yōu)等缺點(diǎn).為此本文從兩個(gè)方面對(duì)其進(jìn)行改進(jìn):首先,在種群個(gè)體更新時(shí)采用折射反向?qū)W習(xí)機(jī)制,從而提高種群多樣性,避免算法陷入局部最優(yōu);其次,在追隨者位置更新中引入自適應(yīng)控制因子,進(jìn)一步提高求解精度和收斂速度.
反向?qū)W習(xí)(Opposition-Based Learning,OBL)是由Tizhooshs提出的一種強(qiáng)大的優(yōu)化機(jī)制[16],其通過(guò)計(jì)算當(dāng)前解的反向解來(lái)擴(kuò)大搜索范圍,由此找出給定問(wèn)題更好的候選解.將元啟發(fā)式算法與OBL的結(jié)合,能夠有效地提高算法尋優(yōu)的精度[17].但是OBL存在一定的缺點(diǎn),如引入OBL的算法盡管在早期迭代能夠加強(qiáng)算法的尋優(yōu)性能,但在迭代后期OBL無(wú)法使算法跳出局部最優(yōu),從而導(dǎo)致收斂精度和速度均變差.
折射反向?qū)W習(xí)(Refracted Opposition-Based Learning,ROBL)是一種新型的算法改進(jìn)機(jī)制,其本質(zhì)是在反向?qū)W習(xí)的基礎(chǔ)上,結(jié)合光的折射定律來(lái)尋找更優(yōu)的候選解.近年被用于改進(jìn)原粒子群優(yōu)化算法[18]與飛蛾撲火算法[19]等,已被證明能夠在不同程度上改善基本算法的性能.本文嘗試將該機(jī)制引入SSA算法以提升其優(yōu)化性能.ROBL的基本原理如圖4所示.
圖4 折射反向?qū)W習(xí)機(jī)制
在圖4中,x軸上的解的搜索區(qū)間為[a,b],y軸表示法線,入射光線和折射光線的長(zhǎng)度分別為l和l*,α和β分別為入射角和折射角,交點(diǎn)O是區(qū)間[a,b]的中點(diǎn).由圖中線段的幾何關(guān)系,可得:
sinα=((a+b)/2-x)/l,
(4)
sinβ=(x*-(a+b)/2)/l*.
(5)
由折射率的定義可知n=sinα/sinβ,將其與以上二式結(jié)合得到
(6)
令k=l/l*,帶入上式可得
(7)
將式(7)進(jìn)行變換,得到折射反向?qū)W習(xí)解的計(jì)算公式
(8)
當(dāng)k=1,n=1時(shí),上式可轉(zhuǎn)化為標(biāo)準(zhǔn)的反向?qū)W習(xí)公式
x*=a+b-x.
(9)
顯然OBL僅為ROBL的一個(gè)特例.相對(duì)于OBL只能得到固定的候選解,ROBL可以通過(guò)調(diào)整參數(shù)獲得動(dòng)態(tài)的新候選解,這也將會(huì)提高算法跳出局部最優(yōu)的概率.當(dāng)優(yōu)化問(wèn)題的空間維度增加時(shí),折射反向?qū)W習(xí)解可按下式計(jì)算
(10)
在原SSA算法中,隨著算法的迭代進(jìn)化,樽海鞘群體中的引導(dǎo)者不斷向食物源移動(dòng),其余追隨者依次相連,逐漸向種群中適應(yīng)度較優(yōu)的引導(dǎo)者靠攏.然而,從式(3)中可看到,追隨者的位置只跟自身和相鄰個(gè)體的位置相關(guān),其行為較為單一.因此,當(dāng)種群中的引領(lǐng)者陷入局部最優(yōu)時(shí),追隨者必然隨之陷入局部最優(yōu),從而導(dǎo)致算法出現(xiàn)早熟收斂現(xiàn)象.
前文已經(jīng)提到:控制因子c1隨著迭代次數(shù)的增加,從2非線性降低到趨于0.這樣的變化有利于算法在迭代初期進(jìn)行全局探索,在迭代后期能夠在局部進(jìn)行開(kāi)發(fā).為此,本文提出將控制因子c1引入追隨者的位置更新,此時(shí)追隨者也能夠與引導(dǎo)者一樣,產(chǎn)生自適應(yīng)更新,從而提高算法跳出局部最優(yōu)的能力,并加快整體的收斂速度.新的追隨者公式為
(11)
其中c1的表達(dá)式見(jiàn)式(2).
綜合上述策略對(duì)基本SSA算法進(jìn)行改進(jìn)后,得到的RCSSA算法實(shí)現(xiàn)流程如下:
Step1:設(shè)置算法參數(shù):種群規(guī)模N,最大迭代次數(shù)T,搜索維數(shù)D,搜索范圍[lb,ub];隨機(jī)生成樽海鞘種群;
Step2:計(jì)算每個(gè)個(gè)體的適應(yīng)度值,將適應(yīng)度值最小的個(gè)體位置作為食物源;
Step3: 更新控制因子c1,判斷種群數(shù)是否超過(guò)N/2:超過(guò)則進(jìn)入Step5,否則進(jìn)入Step4;
Step4:更新隨機(jī)數(shù)c2、c3,根據(jù)式(1)更新每個(gè)引導(dǎo)者個(gè)體的位置,同時(shí)采用式(10)計(jì)算其折射反向解,比較二者適應(yīng)度大小,取較小的一個(gè)個(gè)體為新的位置,并進(jìn)入Step6;
Step5:根據(jù)式(3)更新每個(gè)追隨者個(gè)體的位置,采用引入控制因子c1的式(11)計(jì)算其折射反向解,比較二者適應(yīng)度大小,取較小的一個(gè)個(gè)體為新的位置;
Step6:比較食物源和當(dāng)前樽海鞘最優(yōu)個(gè)體的適應(yīng)度大小,取較小的一個(gè)為新的食物源;
Step7:若當(dāng)代迭代次數(shù)達(dá)到最大迭代次數(shù)T,則輸出最優(yōu)個(gè)體,即算法找到的最優(yōu)解;否則,返回Step2.
為了測(cè)試RCSSA在解決全局優(yōu)化問(wèn)題中的效果,本文從文獻(xiàn)[6]中選取23個(gè)基準(zhǔn)測(cè)試函數(shù)進(jìn)行算法性能測(cè)試.根據(jù)函數(shù)特征將這23個(gè)測(cè)試函數(shù)分為三個(gè)不同類(lèi)型:可縮放單峰、多峰函數(shù)以及固定維度多峰函數(shù).其中,函數(shù)F1~F7屬于維度可變單峰函數(shù),其僅包含一個(gè)全局最優(yōu),因此這些函數(shù)能夠測(cè)試算法的開(kāi)發(fā)能力;而維度可變多峰函數(shù)(F8~F13)包含多個(gè)局部最優(yōu),不易找到全局最優(yōu),可用于驗(yàn)證算法的全局探索能力;固定維多峰函數(shù)(F14~F23)的極值點(diǎn)較多,但由于維度較低,尋優(yōu)較容易,可用來(lái)測(cè)試算法的穩(wěn)定性.這些函數(shù)的表達(dá)式、維度、搜索范圍、理論最優(yōu)值和類(lèi)型如表1所示.
表1 基準(zhǔn)測(cè)試函數(shù)
續(xù)表1
利用RCSSA算法對(duì)23個(gè)基準(zhǔn)測(cè)試函數(shù)進(jìn)行尋優(yōu)求解,并與基本SSA、僅加入折射反向?qū)W習(xí)機(jī)制的SSA算法(RSSA)以及僅采用自適應(yīng)控制因子的SSA算法(CSSA)進(jìn)行對(duì)比,以驗(yàn)證所提綜合改進(jìn)策略的效果.此外,選擇了5種群智能算法進(jìn)行對(duì)比測(cè)試,這5種算法分別為: PSO[3],GWO[5],WOA[6],多元宇宙優(yōu)化算法(MVO)[20]和正弦余弦算法(SCA)[21].這些算法已被證明具有較好的優(yōu)化性能,并被應(yīng)用到了不同的學(xué)科與工程領(lǐng)域.因此,將本文所提的RCSSA算法與之進(jìn)行對(duì)比,可驗(yàn)證所提算法在優(yōu)化性能方面是否具有優(yōu)越性.
為了對(duì)比的公平性,將所有算法的參數(shù)設(shè)置為一致:迭代次數(shù)設(shè)為500,種群規(guī)模均設(shè)為30,控制因子初始值均設(shè)為2.其余算法參數(shù)按原論文進(jìn)行取值,其中,RCSSA與RSSA中的縮放因子k=10 000.
3.3.1 精度分析
為防止隨機(jī)性造成的誤差,在相同條件下,將各算法在MATLAB2017a中獨(dú)立運(yùn)行30次,得到30維、100維函數(shù)的試驗(yàn)結(jié)果見(jiàn)表2、表3.表中的適應(yīng)度平均值和標(biāo)準(zhǔn)差分別反映不同算法在給定獨(dú)立運(yùn)行次數(shù)下的收斂精度和穩(wěn)定性,表中的加粗?jǐn)?shù)據(jù)為最佳試驗(yàn)結(jié)果.
從表2可以看出,對(duì)于30維單峰基準(zhǔn)函數(shù)(F1~F7)和多峰基準(zhǔn)函數(shù)(F8~F13),在除函數(shù)F6之外的其他函數(shù)上,RSSA算法和CSSA算法的平均適應(yīng)度均小于原SSA算法,其中在函數(shù)F9和F10上收斂到了最小值,其標(biāo)準(zhǔn)差也是遠(yuǎn)小于SSA算法.這表明兩種策略的加入對(duì)于提升原始算法的精度是有效的.同時(shí)可以看出,聯(lián)合兩種策略的RCSSA算法相對(duì)于兩種單策略改進(jìn)算法又有很大程度的提高.除了在函數(shù)F1和F3上得到了理論最優(yōu)解,RCSSA算法在其他函數(shù)上也獲得了比另外兩種算法更好的結(jié)果.而相對(duì)于其他5種優(yōu)化算法,RCSSA在30維函數(shù)上的平均適應(yīng)度獲得了9次領(lǐng)先,其中在函數(shù)F1~F4和F9~F11上的優(yōu)勢(shì)尤為明顯.其余函數(shù)結(jié)果中,RCSSA在函數(shù)F8和F12上,分別僅次于WOA和PSO算法.
為了進(jìn)一步測(cè)試RCSSA處理高維優(yōu)化問(wèn)題的性能,將基準(zhǔn)函數(shù)F1~F13的維度擴(kuò)大至100維,算法參數(shù)設(shè)置不發(fā)生改變,測(cè)試結(jié)果如表3所示.隨著維度的提高,原SSA算法和其他群優(yōu)化算法的求解精度越來(lái)越差,而RCSSA仍然能保持較高的搜索精度,并且全面超過(guò)SSA算法.
函數(shù)F14~F23為固定維多峰函數(shù),由于維度較低,因此相對(duì)于可變維度的多峰函數(shù)來(lái)說(shuō)其局部最優(yōu)值并不多.這類(lèi)函數(shù)可測(cè)試算法在平衡探索和開(kāi)發(fā)能力之間的性能.從表4可以看到,幾種算法在函數(shù)F16~F20上的結(jié)果相差不大,均能接近理論值,但是在函數(shù)F21~F23上,僅有RCSSA算法的結(jié)果能夠最接近理論值.并且就標(biāo)準(zhǔn)差而言,所提出的算法也在大多數(shù)函數(shù)中實(shí)現(xiàn)了更好的性能.
表2 30維基準(zhǔn)測(cè)試函數(shù)尋優(yōu)結(jié)果對(duì)比
表3 100維基準(zhǔn)測(cè)試函數(shù)尋優(yōu)結(jié)果對(duì)比
表4 固定維基準(zhǔn)測(cè)試函數(shù)尋優(yōu)結(jié)果對(duì)比
3.3.2 收斂性分析
圖5給出了各算法在30維基準(zhǔn)函數(shù)和固定維多峰函數(shù)上的尋優(yōu)收斂曲線,由此可直觀地比較9種算法的收斂性能.從圖中可以看出,在單峰函數(shù)F1~F7上,RCSSA算法從迭代初期就保持較高的收斂速度,并且獲得了函數(shù)F1和F3的全局最優(yōu).而很明顯SSA算法和其他算法在這些函數(shù)上陷入了局部最優(yōu).多峰函數(shù)F9~F13上,RCSSA在不到10次已經(jīng)找到全局最優(yōu).在固定維函數(shù)F14和F16~F20上,幾種算法的收斂速度相差不大,但是在F21~F23上,顯然RCSSA算法的收斂速度和精度均優(yōu)于其他算法.這些收斂圖像充分表明了RCSSA算法在低維函數(shù)上優(yōu)越的尋優(yōu)能力.
通過(guò)分析表2~表4以及圖5,可以得出結(jié)論:聯(lián)合ROBL機(jī)制和自適應(yīng)控制因子的RCSSA算法在總體上優(yōu)于原SSA算法、兩種單策略改進(jìn)的SSA算法和其他5種優(yōu)化算法,表現(xiàn)出更高的搜索精度、收斂速度以及穩(wěn)定性.
0≤x1,x2≤99,10≤x3,x4≤200.
根據(jù)文獻(xiàn)[23],將RCSSA算法的種群規(guī)模和最大迭代次數(shù)分別設(shè)置為20和500,獨(dú)立運(yùn)行20次后取最優(yōu)值.在相同試驗(yàn)條件下,所得結(jié)果以及文獻(xiàn)中已有的試驗(yàn)結(jié)果列于表5.由表5可知,RCSSA是處理該問(wèn)題的最佳優(yōu)化算法,與其他算法相比可獲得更好的結(jié)果.進(jìn)一步說(shuō)明了RCSSA可應(yīng)用于實(shí)際問(wèn)題且具有較好的優(yōu)化效果.
圖5 各種算法收斂曲線
圖6 壓力容器設(shè)計(jì)問(wèn)題
本文基于折射反向?qū)W習(xí)機(jī)制與自適應(yīng)控制因子
提出了一種新型改進(jìn)SSA算法.首先采用ROBL機(jī)制在每一次個(gè)體的求解中計(jì)算折射反向解,從而能夠提高探索和增加原SSA算法的收斂能力.其次將SSA算法中引導(dǎo)者的自適應(yīng)控制因子引入至跟隨者的位置更新中,有效地控制整個(gè)搜索過(guò)程并增加了算法的局部開(kāi)發(fā)能力.
對(duì)23個(gè)不同類(lèi)型與維數(shù)的基準(zhǔn)測(cè)試問(wèn)題以及一個(gè)工程設(shè)計(jì)優(yōu)化問(wèn)題進(jìn)行了仿真實(shí)驗(yàn)研究,詳細(xì)分析了所提算法的探索、開(kāi)發(fā)和跳出局部最優(yōu)的能力.其研究結(jié)果表明:所提RCSSA算法可以有效提升原SSA算法的優(yōu)化性能,其在整體性能上要明顯優(yōu)于GWO、WOA、SCA等多個(gè)當(dāng)前最先進(jìn)的群智能優(yōu)化算法,并適用于處理高維函數(shù)優(yōu)化問(wèn)題.RCSSA在對(duì)工程設(shè)計(jì)問(wèn)題進(jìn)行優(yōu)化時(shí),其求解精度、收斂速度也均具有顯著的優(yōu)越性.在未來(lái)的研究工作中,RCSSA算法將進(jìn)一步與工程應(yīng)用相結(jié)合,以期解決更多實(shí)際優(yōu)化問(wèn)題.
表5 各算法的壓力容器設(shè)計(jì)結(jié)果對(duì)比