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