王彥軍,王秋萍,王曉峰
(西安理工大學 理學院,陜西西安710054)
群體智能(SI)技術是受自然啟發的元啟發式算法,是現在最為流行的尋優算法,在諸多領域中得到了成功應用。Mirjalili等模擬自然界中樽海鞘的群體行為,于2017年提出樽海鞘群算法(Salp Swarm Algorithm,SSA),該算法只有一個主要控制參數,因此算法結構較為簡單,易于實現,且研究結果表明該算法的尋優性能優于飛蛾火焰算法(MFO)、灰狼優化算法(GWO)和人工蜂群算法(ABC)等[1]。因此,SSA算法在科學和工程等領域中有著廣泛應用。
然而,與其他群智能算法類似,SSA算法也存在求解精度低、易陷入局部最優等缺陷。國內外學者針對這些缺陷提出了一系列改進。
Sayed[2]等提出一種基于混沌理論的SSA算法以解決SSA算法易陷入局部最優、收斂速度慢的缺點。
Ibrahim等[3]利用粒子群算法(PSO)的全局收斂性,提出一種基于SSA和PSO的混合優化算法以平衡算法的勘探和開發能力。
Faris等[4]使用交叉算子來代替平均算子,提出了一種帶交叉的二進制SSA算法以增強算法的全局探索。
王夢秋等[5]分析了SSA算法,發現追隨者位置更新方程具有一定的盲目性,在一定程度上限制了算法的搜索能力,提出了一種改進的SSA算法并將其應用于PMSM參數辨識。
為進一步提高基本SSA算法的求解精度和收斂速度,本文提出了一種改進樽海鞘群算法(Improved Salp Swarm Algorithm,ISSA)。該算法首先采用精英反向學習策略,有效地平衡算法的勘探和開發能力。然后,為增大搜索范圍,提高算法求解精度,引入一種差分策略來更新追隨者位置。最后,對食物位置進行Gauss變異,以避免算法陷入局部最優。對10個標準測試函數和一個經典工程問題的實驗結果表明,本文所提出的ISSA算法具有較好的搜索性能。
樽海鞘屬于海樽科,有著透明的圓柱形身體,是一種與水母非常相似的海洋生物。在海洋中,樽海鞘有一種被稱為樽海鞘鏈的群體行為,有關學者認為這種行為是為了幫助它們快速覓食和躲避天敵?;谶@一行為,Mirjalili等建立了樽海鞘鏈數學模型,并在優化問題中測試了該模型的有效性。
SSA算法首先將種群分成兩部分,即領導者和追隨者。領導者引導群體,追隨者相互追隨。與其他基于種群的算法類似,樽海鞘的位置是在n維搜索空間中定義的,其中n表示給定問題的維數。因此,所有樽海鞘的位置都存儲在一個N×n二維矩陣x中(N是種群規模)。
假設在搜索空間中有一個叫做F的食物源作為種群的搜索目標。
領導者根據下式更新位置:
(1)

(2)
式中:t是當前迭代次數;T是最大的迭代次數。
使用下式更新追隨者位置:
(3)

本文選取一半的樽海鞘個體作為領導者,其余個體作為追隨者。領導者(j≤N/2)按式(4)更新之后,執行精英反向學習策略。
(4)
采用差分策略更新追隨者位置,對食物位置進行Gauss變異使其跳出局部最優。
1.2.1精英反向學習策略
由于反向學習策略[6]通過同時對當前候選解和反向候選解進行評估,可以提供更多的機會找到更接近全局最優的候選解。因此反向學習策略在群智能優化算法中有效地提高了算法的搜索性能。
然而,反向學習策略并不能適用于所有類型的優化問題。例如,在求解多峰函數問題時,變換后的候選對象可能會偏離全局最優。為了避免這種情況的發生,汪慎文等[7]在一般反向學習的基礎上引入精英個體的良好信息,提出了精英反向學習策略,并給出了關于精英反向學習策略在群智能優化算法中具有全局收斂性的證明。
實驗結果表明,精英反向學習策略具有更優良的性能[7]。

(5)
式中,λ是[0,1]區間服從均勻分布的隨機數,ai(t)、bi(t)表達式為:
在文獻[7]中,作者對精英反向學習策略進行了分析。精英反向學習策略在反向解與當前解中選出優秀個體進入下一代群體中以增強種群的多樣性,降低算法陷入局部最優的概率。如果算法能收斂到全局最優解,則精英個體所構成的搜索區間必將收斂到最優解所在的區域。因此,在精英個體所構成的搜索區間上產生反向解,引導搜索過程向最優解逼近,從而提高算法的收斂速度。從而,精英反向學習策略可以較好地平衡算法的勘探和開發能力。
反向學習策略可以增加種群多樣性[8]。因此,本文利用領導者個體的搜索信息,在領導者個體所構成的搜索空間上產生反向解。
對反向解和當前解,采用貪心保留策略,選出更加優秀的個體進入下一代以增加種群多樣性,可以更好地避免算法陷入局部最優,且提高算法的收斂速度。
1.2.2差分策略
在基本SSA算法中,由式(3)可以看出,第j個樽海鞘的位置更新只與自身和跟隨的第j-1個樽海鞘的位置信息有關。這種在單向接收第j-1個樽海鞘的位置信息后立即更新位置,在一定程度上限制了算法搜索效果。
針對算法的這種缺陷,我們將引入第j-2個樽海鞘的位置信息,來引導追隨者個體增大搜索范圍,避免算法陷入局部最優,改善算法的搜索效果和提高算法的求解精度。

(6)

1.2.3Gauss變異策略
在樽海鞘群算法中,所有個體都直接或間接地向種群當前最好個體(食物)學習,在迭代后期種群多樣性的丟失是不可避免的。一旦最好個體陷入局部最優,則易導致群體出現搜索停滯,算法出現早熟收斂現象。
受文獻[10]啟發,本文將對食物進行Gauss變異操作,以提高跳出局部最優的能力。而另一方面,我們將對變異結果采取貪心保留策略,以保證算法有較好的全局收斂性。
在優化過程中,如果當前最好個體(食物)的適應度值連續smax次迭代沒有得到改善(smax設置為10),則對食物執行Gauss變異,具體為:
F′i=Fi(1+λξ)
(7)
式中:ξ是服從標準正態分布的隨機變量,λ=0.5。對Gauss變異的結果F′采用貪心保留策略,即:

(8)
式中:fit(x)為x的適應值。
1.2.4算法偽代碼
綜上所述,ISSA算法偽代碼為如下。
初始化參數,種群規模N,維數n,最大迭代次數T,在初始解空間中隨機初始化樽海鞘群的位置,進行適應度評估,排序,記錄當前最好個體位置F。
while(t 利用式(2)更新r1 forj= 1 toNdo ifj≤N/2 利用式(4)更新領導者個體 利用式(5)執行精英反向學習策略 else 利用式(6)更新追隨者個體 endif 根據變量的上下界對種群個體進行修正 適應度評估,更新食物位置 ifs==smax (s為食物適應值連續沒有改善的次數) 用式(7)~(8)對食物執行Gauss變異 endif endfor t=t+1 endwhile returnF 接下來計算ISSA算法的時間復雜度。 1) 分析算法迭代一次所需要的基本操作。 2) 更新領導者位置,追隨者位置和基于變量的上下界修正樽海鞘個體的位置的復雜度是O(Nn); 3) 計算適應度值和更新食物位置的復雜度是O(2N); 4) 對食物進行Gauss變異操作是O(kn),其中k是變異的次數; 5) 進行精英反向學習策略的復雜度是O(Nn/2)。 則算法迭代一次的復雜度是: O(Nn) +O(2N)+O(kn)+O(Nn/2)=O(CNn) 因此該算法的整體復雜度是O(CNnT),其中N是種群規模,n是維數,T是最大迭代次數,C是常數。 利用一組經典的基準函數,包括10個不同的函數(單峰和多峰函數),來評價該算法的優化性能。基準函數的定義及其細節見表1。 表1 標準測試函數Tab.1 Benchmark test functions 為體現本文所提算法的有效性,我們將引入樽海鞘群算法[1]、粒子群優化算法(Particle Swarm Optimization,PSO)[11-12]、飛蛾撲火優化算法(Moth-Flame Optimization,MFO)[13]以及混沌樽海鞘群算法(Chaotic Salp Swarm Algorithm,CSSA)[2]做對比實驗。 為體現實驗的公平性,我們將設置相同的實驗參數:種群規模為30,最大迭代次數為500,測試函數的維數均設置為30,領導者個數設置為N/2,smax設置為10。 五種算法在每個測試函數上均獨立運行30次,并記錄下平均值、標準差、最好值、最差值,實驗結果見表2。最好的結果以粗體顯示。 由表2可以得出,ISSA算法的求解精度在以上基準函數上都優于幾種對比算法,尤其在函數F3、F7和F9上顯著提高了求解精度,此外,ISSA算法的標準差值相對比較小,這說明該算法具有較強的魯棒性。在函數F8上CSSA算法的求解精度較低于SSA算法。雖然CSSA算法的尋優性能得到了一定的改善,但是效果不是很明顯。在函數F5上,ISSA算法的最好值沒有明顯地提升,但是,方差、均值、最差值都在一定的程度上有了較大提高。這說明該算法較好地平衡了局部開發和全局勘探能力。 由圖1可以很直觀地看到,在函數F5上,雖然ISSA算法、SSA算法和PSO算法求解精度相差不大,但是ISSA算法具有更快的收斂速度。在函數F7上可以看出,ISSA算法在迭代200次之后收斂到理論最優值,明顯優于其他幾種對比算法。 因此,本文所提出的ISSA算法與對比算法相比,該算法具有較好的尋優性能。 表2 5種算法對10個測試函數的尋優結果比較Tab.2 Comparison of optimization results of 11 test functions by 5 algorithms 圖1 測試函數收斂曲線圖Fig.1 Convergence curves of test functions 為分析三種改進策略的有效性,我們將繼續使用上述標準測試函數進行實驗。將僅采用Gauss變異策略的改進SSA算法記為GSSA算法,將僅采用差分策略的改進SSA算法記為DESSA算法,將僅采用精英反向學習策略的改進SSA算法記為OSSA算法。 為體現實驗的公平性,GSSA算法、DESSA算法、OSSA算法、ISSA算法、SSA算法均采用相同的初始化、相同的參數設置,種群規模為30,最大迭代次數為500,維數為30。5種算法在部分測試函數上的收斂曲線圖見圖2。 圖2 測試函數收斂曲線圖Fig.2 Test convergence curves of test function 由圖2可以清晰地看出,DESSA算法的收斂效果最為接近ISSA算法,現在我們有較充分的理由說明在標準SSA算法中,追隨者的位置更新缺乏一定的指導信息,嚴重影響了算法的尋優性能;與SSA算法相比,除了在函數F1和F5上,GSSA算法和OSSA算法的尋優效果基本上沒什么改善,在絕大多數測試函數上,都具有較高的求解精度和收斂速度。這說明了標準的SSA算法容易陷入局部最優、收斂速度較慢等,本文所采用的改進策略在一定程度上改善了這種缺陷,提高了算法的尋優性能。 利用經典工程問題(焊接梁設計問題)來評價該算法解決實際問題的性能。為體現該算法的有效性,將引入文獻[15-16]做對比實驗。 焊接梁問題是一個典型的數學規劃問題,該問題可以描述為:在滿足剪應力τ、梁的彎曲應力σ、桿上彎曲載荷Pc、梁端撓度δ和邊界條件等約束條件下,尋找最優的設計變量h、l、t和b,使得制造焊接梁的費用最小。四個設計變量的含義可參照圖3中焊接梁設計圖。 圖3 焊接梁設計圖Fig.3 Welded beam design 該設計問題的數學模型如下: x=[x1,x2,x3,x4]=[h,l,t,b] minf(x)=1.1047x12x2+0.04811x3x4(14.0+x2) g7(x)=0.10471x12+ 0.04811x3x4(14.0+x2)-5.0≤0 0.1≤x1,x4≤2 0.1≤x2,x3≤10 式中各變量表示為: (10) 式中:P=6 000,L=14,E=30×106,G=12×106。 罰函數方法是迄今為止處理約束的最常見和最簡單的方法,通過對目標函數加(或減)懲罰項,將約束優化問題轉化為無約束優化問題[14]。因此本文將采用罰函數方法來求解該問題,目標函數對應的罰函數為: (11) 式中:bi=max{0,gi(x)},1≤i≤7;ki>0為罰函數系數。 為保證實驗的公平性,本文的參數設置與文獻[15-16]相同。對該問題進行30次獨立運行,并提供統計結果,包括最好值、平均值和最劣值,得到的結果如下。 表3顯示了ISSA算法和文獻中的兩種算法解焊接梁問題的最優解的比較,結果表明ISSA算法具有更好搜索性能。 表4顯示了本文算法與文獻中的算法30次獨立運行的結果,實驗表明,本文算法與文獻中的算法相比,有較高的求解精度。 表3 不同算法解焊接梁問題的最優解Tab.3 Optimal solution of welded beam problem by different algorithms 表4 不同算法求焊接梁問題f(x)的統計數據Tab.4 Statistical data of welded beam problem solved by different algorithms 本文在基本SSA算法的基礎上提出了一種ISSA算法,在該算法中引入精英反向學習策略以更好地平衡算法的勘探和開發能力;為增大追隨者搜索范圍,引入差分策略來更新追隨者位置;最后,在搜索過程中對食物位置進行Gauss變異以提高跳出局部最優的能力,為算法進行全局搜索奠定基礎。通過10個經典的無約束基準函數,對ISSA算法的性能進行了評價。實驗結果表明,ISSA算法的性能優于文獻中其他算法。選取了1個工程優化問題,驗證了ISSA算法在解決實際約束工程問題中的性能。未來的研究重點應該是將ISSA算法擴展到解決多目標無約束優化和約束優化問題以及其他實際應用中。2 仿真實驗
2.1 參數設置和結果分析



2.2 改進策略的有效性分析

3 ISSA在焊接梁問題中的應用
3.1 焊接梁優化問題的數學模型

3.2 焊接梁優化問題求解


4 結 語