范 千,陳振健,夏樟華
(福州大學 土木工程學院, 福州 350116)
近年來,優化問題在不同的學科和工程領域受到越來越多的關注,其主要分為三個類別:約束優化、無約束優化和約束工程優化問題[1].在優化過程中,有必要在合理的時間內和復雜的約束下找到給定問題的最優解,因此如何構建有效的尋優策略是一個重要的研究方向.隨著計算機技術的蓬勃發展,越來越多的群智能優化算法被相繼提出.目前,常見的群智能算法有差分進化算法[2]、粒子群算法[3]、果蠅優化算法[4]、灰狼優化算法[5]、鯨魚優化算法[6]等.不同于傳統優化算法,這些新型算法具有參數設置簡單、無衍生機制、魯棒性強等優點[7],已經被應用于多個研究領域.
樽海鞘群算法(Salp Swarm Algorithm,SSA)是Mirjalili等在2017年提出的一種新型的群體智能優化算法[8],該算法模仿了樽海鞘群體在海洋中的群體覓食行為.試驗表明,與其它元啟發式算法相比,SSA算法能夠有效改進待優化問題的初始解并且能收斂到全局最優.因此原SSA算法被應用到各個學科優化問題的研究中,如:時差定位的非線性問題求解[9],燃料電池的最佳參數提取[10],非線性高光譜圖像的處理[11]等.而為了進一步提高SSA的性能,不同的學者也對其進行了改進:文獻[12]將混沌映射與SSA算法結合,文獻[13]提出了二進制SSA算法,文獻[14]將粒子群算法與SSA算法進行混合等.這些算法在不同程度上提高了原SSA算法的性能.
根據“無免費午餐”(No-Free-Lunch,NFL)定理,沒有一種算法能夠適用于所有的優化問題[15].因此,為了在實際應用中獲得更好的結果,修改現有算法、開發新算法或混合不同種算法的研究工作是非常有價值的.針對原SSA算法存在的收斂速度慢、容易陷入局部最優等不足,本文提出一種新型的改進SSA算法,并將其稱之為基于折射反向學習與自適應控制因子的改進樽海鞘群算法(Modified SSA Based on Refracted Oppositional Learning and Adaptive Control Factor, RCSSA).該算法首先在求解過程中引入折射反向學習機制,以提高算法收斂速度和精度,其次在部分位置更新中加入了原算法已有的自適應控制因子,進一步改進算法的探索性能.通過多組不同種類和維數的基準測試函數對RCSSA算法的性能進行詳細測試,同時與其他算法進行對比分析,以驗證所采用改進策略的可行性和有效性.
SSA算法的靈感來自于樽海鞘群體在海洋中的游動和覓食行為.樽海鞘通過吸入和排出海水來推動自身游動,并以水中的浮游植物為食,如圖1所示.在覓食過程中,樽海鞘種群中的個體彼此相連并形成環狀的長鏈.該樽海鞘長鏈可分為兩部分:一部分為引導者,位于海鞘鏈的前端,負責探索食物的位置;另一部分樽海鞘為追隨者,逐個相連,緊跟在引導者之后,如圖2所示.引導者以食物源為目標,不斷更新自身位置,該數學模型為
(1)
式中:x1,j表示搜索空間第j維上第一個樽海鞘的位置,Fj表示食物的位置,ubj和lbj分別是搜索空間第j維的上界和下界,c2和c3是兩個相互獨立并服從[0,1]均勻分布的隨機數,c1為算法中的控制因子,其值從2非線性遞減至趨于0,如圖3所示,其計算公式如下
(2)
式中:t表示當前迭代次數,T是預先設定好的最大迭代次數.


圖3 控制因子c1的變化曲線
當引導者位置更新后,追隨者隨之移動,其位置更新的數學模型為
(3)
式中:xi,j表示搜索空間第j維上第i個樽海鞘的位置,且i≥2.
SSA算法包括探索和開發兩個階段.首先,探索階段是從一組隨機生成的解開始,其目標是在搜索空間中擴大搜索區域,以尋找全局最優解.接著,算法進入開發階段,在前一階段所得的搜索區域中進一步尋優,以提高最優解的準確性.其中,控制因子c1對算法的收斂效果影響較大,有能夠平衡算法的探索和開發能力:當c1>1時,算法進行全局探索;當c1<1時,算法對局部進行開發.在達到最大迭代次數時,算法終止并輸出所得的最優結果.
與其他元啟發式算法類似,原SSA算法也存在收斂速度慢、容易陷入局部最優等缺點.為此本文從兩個方面對其進行改進:首先,在種群個體更新時采用折射反向學習機制,從而提高種群多樣性,避免算法陷入局部最優;其次,在追隨者位置更新中引入自適應控制因子,進一步提高求解精度和收斂速度.
反向學習(Opposition-Based Learning,OBL)是由Tizhooshs提出的一種強大的優化機制[16],其通過計算當前解的反向解來擴大搜索范圍,由此找出給定問題更好的候選解.將元啟發式算法與OBL的結合,能夠有效地提高算法尋優的精度[17].但是OBL存在一定的缺點,如引入OBL的算法盡管在早期迭代能夠加強算法的尋優性能,但在迭代后期OBL無法使算法跳出局部最優,從而導致收斂精度和速度均變差.
折射反向學習(Refracted Opposition-Based Learning,ROBL)是一種新型的算法改進機制,其本質是在反向學習的基礎上,結合光的折射定律來尋找更優的候選解.近年被用于改進原粒子群優化算法[18]與飛蛾撲火算法[19]等,已被證明能夠在不同程度上改善基本算法的性能.本文嘗試將該機制引入SSA算法以提升其優化性能.ROBL的基本原理如圖4所示.

圖4 折射反向學習機制
在圖4中,x軸上的解的搜索區間為[a,b],y軸表示法線,入射光線和折射光線的長度分別為l和l*,α和β分別為入射角和折射角,交點O是區間[a,b]的中點.由圖中線段的幾何關系,可得:
sinα=((a+b)/2-x)/l,
(4)
sinβ=(x*-(a+b)/2)/l*.
(5)
由折射率的定義可知n=sinα/sinβ,將其與以上二式結合得到
(6)
令k=l/l*,帶入上式可得
(7)
將式(7)進行變換,得到折射反向學習解的計算公式
(8)
當k=1,n=1時,上式可轉化為標準的反向學習公式
x*=a+b-x.
(9)
顯然OBL僅為ROBL的一個特例.相對于OBL只能得到固定的候選解,ROBL可以通過調整參數獲得動態的新候選解,這也將會提高算法跳出局部最優的概率.當優化問題的空間維度增加時,折射反向學習解可按下式計算
(10)

在原SSA算法中,隨著算法的迭代進化,樽海鞘群體中的引導者不斷向食物源移動,其余追隨者依次相連,逐漸向種群中適應度較優的引導者靠攏.然而,從式(3)中可看到,追隨者的位置只跟自身和相鄰個體的位置相關,其行為較為單一.因此,當種群中的引領者陷入局部最優時,追隨者必然隨之陷入局部最優,從而導致算法出現早熟收斂現象.
前文已經提到:控制因子c1隨著迭代次數的增加,從2非線性降低到趨于0.這樣的變化有利于算法在迭代初期進行全局探索,在迭代后期能夠在局部進行開發.為此,本文提出將控制因子c1引入追隨者的位置更新,此時追隨者也能夠與引導者一樣,產生自適應更新,從而提高算法跳出局部最優的能力,并加快整體的收斂速度.新的追隨者公式為
(11)
其中c1的表達式見式(2).
綜合上述策略對基本SSA算法進行改進后,得到的RCSSA算法實現流程如下:
Step1:設置算法參數:種群規模N,最大迭代次數T,搜索維數D,搜索范圍[lb,ub];隨機生成樽海鞘種群;
Step2:計算每個個體的適應度值,將適應度值最小的個體位置作為食物源;
Step3: 更新控制因子c1,判斷種群數是否超過N/2:超過則進入Step5,否則進入Step4;
Step4:更新隨機數c2、c3,根據式(1)更新每個引導者個體的位置,同時采用式(10)計算其折射反向解,比較二者適應度大小,取較小的一個個體為新的位置,并進入Step6;
Step5:根據式(3)更新每個追隨者個體的位置,采用引入控制因子c1的式(11)計算其折射反向解,比較二者適應度大小,取較小的一個個體為新的位置;
Step6:比較食物源和當前樽海鞘最優個體的適應度大小,取較小的一個為新的食物源;
Step7:若當代迭代次數達到最大迭代次數T,則輸出最優個體,即算法找到的最優解;否則,返回Step2.
為了測試RCSSA在解決全局優化問題中的效果,本文從文獻[6]中選取23個基準測試函數進行算法性能測試.根據函數特征將這23個測試函數分為三個不同類型:可縮放單峰、多峰函數以及固定維度多峰函數.其中,函數F1~F7屬于維度可變單峰函數,其僅包含一個全局最優,因此這些函數能夠測試算法的開發能力;而維度可變多峰函數(F8~F13)包含多個局部最優,不易找到全局最優,可用于驗證算法的全局探索能力;固定維多峰函數(F14~F23)的極值點較多,但由于維度較低,尋優較容易,可用來測試算法的穩定性.這些函數的表達式、維度、搜索范圍、理論最優值和類型如表1所示.

表1 基準測試函數

續表1
利用RCSSA算法對23個基準測試函數進行尋優求解,并與基本SSA、僅加入折射反向學習機制的SSA算法(RSSA)以及僅采用自適應控制因子的SSA算法(CSSA)進行對比,以驗證所提綜合改進策略的效果.此外,選擇了5種群智能算法進行對比測試,這5種算法分別為: PSO[3],GWO[5],WOA[6],多元宇宙優化算法(MVO)[20]和正弦余弦算法(SCA)[21].這些算法已被證明具有較好的優化性能,并被應用到了不同的學科與工程領域.因此,將本文所提的RCSSA算法與之進行對比,可驗證所提算法在優化性能方面是否具有優越性.
為了對比的公平性,將所有算法的參數設置為一致:迭代次數設為500,種群規模均設為30,控制因子初始值均設為2.其余算法參數按原論文進行取值,其中,RCSSA與RSSA中的縮放因子k=10 000.
3.3.1 精度分析
為防止隨機性造成的誤差,在相同條件下,將各算法在MATLAB2017a中獨立運行30次,得到30維、100維函數的試驗結果見表2、表3.表中的適應度平均值和標準差分別反映不同算法在給定獨立運行次數下的收斂精度和穩定性,表中的加粗數據為最佳試驗結果.
從表2可以看出,對于30維單峰基準函數(F1~F7)和多峰基準函數(F8~F13),在除函數F6之外的其他函數上,RSSA算法和CSSA算法的平均適應度均小于原SSA算法,其中在函數F9和F10上收斂到了最小值,其標準差也是遠小于SSA算法.這表明兩種策略的加入對于提升原始算法的精度是有效的.同時可以看出,聯合兩種策略的RCSSA算法相對于兩種單策略改進算法又有很大程度的提高.除了在函數F1和F3上得到了理論最優解,RCSSA算法在其他函數上也獲得了比另外兩種算法更好的結果.而相對于其他5種優化算法,RCSSA在30維函數上的平均適應度獲得了9次領先,其中在函數F1~F4和F9~F11上的優勢尤為明顯.其余函數結果中,RCSSA在函數F8和F12上,分別僅次于WOA和PSO算法.
為了進一步測試RCSSA處理高維優化問題的性能,將基準函數F1~F13的維度擴大至100維,算法參數設置不發生改變,測試結果如表3所示.隨著維度的提高,原SSA算法和其他群優化算法的求解精度越來越差,而RCSSA仍然能保持較高的搜索精度,并且全面超過SSA算法.
函數F14~F23為固定維多峰函數,由于維度較低,因此相對于可變維度的多峰函數來說其局部最優值并不多.這類函數可測試算法在平衡探索和開發能力之間的性能.從表4可以看到,幾種算法在函數F16~F20上的結果相差不大,均能接近理論值,但是在函數F21~F23上,僅有RCSSA算法的結果能夠最接近理論值.并且就標準差而言,所提出的算法也在大多數函數中實現了更好的性能.

表2 30維基準測試函數尋優結果對比

表3 100維基準測試函數尋優結果對比

表4 固定維基準測試函數尋優結果對比
3.3.2 收斂性分析
圖5給出了各算法在30維基準函數和固定維多峰函數上的尋優收斂曲線,由此可直觀地比較9種算法的收斂性能.從圖中可以看出,在單峰函數F1~F7上,RCSSA算法從迭代初期就保持較高的收斂速度,并且獲得了函數F1和F3的全局最優.而很明顯SSA算法和其他算法在這些函數上陷入了局部最優.多峰函數F9~F13上,RCSSA在不到10次已經找到全局最優.在固定維函數F14和F16~F20上,幾種算法的收斂速度相差不大,但是在F21~F23上,顯然RCSSA算法的收斂速度和精度均優于其他算法.這些收斂圖像充分表明了RCSSA算法在低維函數上優越的尋優能力.
通過分析表2~表4以及圖5,可以得出結論:聯合ROBL機制和自適應控制因子的RCSSA算法在總體上優于原SSA算法、兩種單策略改進的SSA算法和其他5種優化算法,表現出更高的搜索精度、收斂速度以及穩定性.

0≤x1,x2≤99,10≤x3,x4≤200.
根據文獻[23],將RCSSA算法的種群規模和最大迭代次數分別設置為20和500,獨立運行20次后取最優值.在相同試驗條件下,所得結果以及文獻中已有的試驗結果列于表5.由表5可知,RCSSA是處理該問題的最佳優化算法,與其他算法相比可獲得更好的結果.進一步說明了RCSSA可應用于實際問題且具有較好的優化效果.

圖5 各種算法收斂曲線

圖6 壓力容器設計問題
本文基于折射反向學習機制與自適應控制因子
提出了一種新型改進SSA算法.首先采用ROBL機制在每一次個體的求解中計算折射反向解,從而能夠提高探索和增加原SSA算法的收斂能力.其次將SSA算法中引導者的自適應控制因子引入至跟隨者的位置更新中,有效地控制整個搜索過程并增加了算法的局部開發能力.
對23個不同類型與維數的基準測試問題以及一個工程設計優化問題進行了仿真實驗研究,詳細分析了所提算法的探索、開發和跳出局部最優的能力.其研究結果表明:所提RCSSA算法可以有效提升原SSA算法的優化性能,其在整體性能上要明顯優于GWO、WOA、SCA等多個當前最先進的群智能優化算法,并適用于處理高維函數優化問題.RCSSA在對工程設計問題進行優化時,其求解精度、收斂速度也均具有顯著的優越性.在未來的研究工作中,RCSSA算法將進一步與工程應用相結合,以期解決更多實際優化問題.

表5 各算法的壓力容器設計結果對比