蔡藝君,賀興時,楊新社
(1.西安工程大學 理學院,陜西 西安 710048;2.密德薩斯大學 科學與技術學院,英國 倫敦 NW4 4BT)
在經(jīng)濟社會和自然科學等領域中都存在復雜優(yōu)化問題,而傳統(tǒng)的優(yōu)化方法如牛頓法、共軛梯度法等在解決這些問題時存在一定局限性。為此,科研工作者通過模擬生物群體行為設計了大量群智能算法[1],如粒子群算法[2]、蟻群算法[3]、蝙蝠算法[4]、布谷鳥算法[5]等。這類算法在過去的二三十年里得到了迅速發(fā)展,并且已經(jīng)在數(shù)據(jù)挖掘、工程技術、能源、網(wǎng)絡、經(jīng)濟、醫(yī)學等多個領域得到了廣泛應用。
樽海鞘是一種類似水母的海洋生物,它們通常首尾相連形成樽海鞘鏈在海洋中移動和覓食。受此啟發(fā),MIRJALILI等提出了樽海鞘算法(salp swarm algorithm,SSA)[6]。相比于其他群智能算法,該算法具有模型簡單、參數(shù)少、易實現(xiàn)等優(yōu)點,自提出以來受到了國內(nèi)外學者的廣泛關注,目前已被成功應用在特征選擇[7]、圖像處理[8]、混合動力系統(tǒng)[9]、目標分類[10]等領域中。
雖然SSA對大多數(shù)優(yōu)化問題具有很強的求解能力,但在解高維復雜函數(shù)優(yōu)化問題時存在收斂速度慢、尋優(yōu)精度低、易陷入局部最優(yōu)的缺點。為此,許多科研工作者針對該算法的不足做了相應改進。文獻[11]提出一種基于混沌的SSA,利用混沌映射產(chǎn)生的混沌數(shù)代替原有的隨機數(shù),在一定程度上解決了算法易陷入局部最優(yōu)、收斂速度慢的缺點,并將其應用于特征選擇問題;文獻[12]提出了一種增強型的SSA,并將其應用于變速風力發(fā)電機;文獻[13]在SSA領導者位置更新公式中引入萊維飛行策略,提升了算法的全局搜索能力和收斂速度;文獻[14]提出一種帶交叉算子的二進制,以SSA增強算法的全局搜索能力;文獻[15]提出一種集成隨機慣性權重和差分變異操作的SSA,提高了算法收斂速度和精度。
上述改進的SSA在不同方面、不同程度上彌補了該算法的缺點,但是從實驗結果看,改進算法的收斂速度、精度、搜索能力和穩(wěn)定性等仍有待提高。因此,為了使SSA具有更高的收斂精度,更快的收斂速度以及更好的全局和局部搜索能力,本文提出一種基于指數(shù)慣性權重和自適應t分布變異的改進樽海鞘算法(improved salp swarm algorithm, ISSA)。
在樽海鞘算法中,樽海鞘鏈由位于鏈前端的領導者及其跟隨者組成。該算法流程[16]如下:
(1)
2) 根據(jù)目標函數(shù)計算N個樽海鞘個體的適應度值。
3) 選定食物源的位置。對樽海鞘的適應度值排序,最優(yōu)適應度值對應的樽海鞘位置即為食物源的位置。
4) 選定領導者和跟隨者。選定食物位置后,群體中剩余N-1個樽海鞘,按照樽海鞘個體的排序,將排在前端的樽海鞘視為領導者,其余樽海鞘視為跟隨者。
5) 更新樽海鞘領導者的位置。
(2)
c1=2exp(-(4l/L)2)
(3)
式中:l為當前迭代次數(shù);L為最大迭代次數(shù)。
6) 更新跟隨者的位置。
(4)
7) 計算更新后的個體的適應度。將更新后每個樽海鞘個體的適應度值與當前食物的適應度值進行比較,若更新后樽海鞘的適應度值優(yōu)于食物,則以適應度值更優(yōu)的樽海鞘位置作為新的食物源位置。
8) 判斷是否滿足終止條件。若是,則輸出結果;否則,轉(zhuǎn)到4)繼續(xù)迭代。
原算法中跟隨者根據(jù)自己的歷史位置和前一個個體的歷史位置更新自己的位置,所以會出現(xiàn)盲目跟從和易陷入局部最優(yōu)的問題。為了增強對局部搜索能力的開拓,改善樽海鞘盲目跟從問題,將上一代前一個體的位置由上一代最優(yōu)位置(即食物源的位置)代替,促使追隨者們向最優(yōu)位置移動以達到更好的尋優(yōu)目的。改進后的跟隨者位置更新公式定義如下:
(5)
平衡種群的全局和局部搜索能力在一定程度上會影響算法的尋優(yōu)性能,而慣性權重策略可以提升算法的搜索能力,平衡局部搜索和全局搜索之間的關系。在粒子群優(yōu)化算法中,文獻[17]提出慣性權重能克服算法陷入局部最優(yōu),加快收斂速度。并指出如果慣性權重較大,粒子具有較強的全局搜索能力,但搜索能力較差效率低;反之,慣性權重小,粒子具有較強的局部搜索能力,但容易陷入局部最優(yōu)。基于以上觀點,文獻[18]進一步提出線性遞減的慣性權重有效地平衡全局和局部搜索,使得粒子早期具有很強的全局搜索能力,后期具有較強的局部搜索能力,能搜索到相對精確的結果。受此啟發(fā),本文在改進后的跟隨者位置更新公式中引入指數(shù)遞減慣性權重w(l)。w(l)的更新公式及加入權重后追隨者位置更新公式如下:
(6)
(7)
式中:wmax和wmin分別表示權重因子w(l)的最大值和最小值,分別取0.8和0.2;l為當前迭代次數(shù),L為最大迭代次數(shù)。在初始迭代階段,權重因子較大,搜索范圍也大,保證了全局搜索能力;隨著迭代次數(shù)增加,權重因子逐漸減小,搜索范圍也減小,使局部搜索能力逐漸增強,搜索結果也越來越精確。同時,隨機擾動項rand(·)wmin增加了多種可能性,使權重因子更靈活,防止算法陷入局部極值而出現(xiàn)迭代停滯的可能。
在樽海鞘個體位置更新后引入自適應t分布變異策略,對更新后的位置進行擾動,增加種群多樣性,避免陷入局部最優(yōu)。設置自適應因子α[19]控制變異程度的大小,定義如下:
(8)
式中:L為最大迭代次數(shù);α的值在1到0間遞減,隨迭代次數(shù)的增加控制變異的程度由大到小。自適應t分布變異策略具體如下:
(9)
1) 隨機初始化N×d大小的種群。
2) 根據(jù)目標函數(shù)計算N個樽海鞘的適應度值。
3) 選定食物源的位置。對樽海鞘的適應度值排序,最優(yōu)適應度值對應的樽海鞘位置即為食物源的位置。
4) 選定領導者和跟隨者。選定食物位置后,群體中剩余N-1個樽海鞘,按照樽海鞘個體的排序,將排在前端的樽海鞘視為領導者,其余樽海鞘視為跟隨者。
5) 按照式(2)和式(7)更新領導者和跟隨者的位置。
6) 通過設置的概率cr與隨機數(shù)rand(·)進行比較:如果rand(·) 7) 組合舊種群和從變異中獲得的新種群,計算每個樽海鞘個體的適應度值,并與當前食物的適應度值進行比較。若更新后樽海鞘的適應度值優(yōu)于食物,則以適應度值更優(yōu)的樽海鞘位置作為新的食物的位置。 8) 判斷是否滿足終止條件。若是,則輸出結果;否則,轉(zhuǎn)到4)繼續(xù)迭代。 為了證明ISSA的尋優(yōu)性能,選取了8個不同難度的函數(shù),分別測試改進算法(ISSA)的收斂精度、收斂速度,同時與帶衰減因子的樽海鞘算法(RSSA)[20]、基本樽海鞘算法(SSA)、基本蝙蝠算法(BA)、基本花授粉算法(FPA)等4種算法進行比較,驗證ISSA收斂速度和精度的優(yōu)劣。 選取了表1所示的最優(yōu)值均為0的8個測試函數(shù)。f1(x)~f6(x)為高維函數(shù),f7(x)~f8(x)為二維函數(shù)。其中高維多峰函數(shù)f1(x)~f3(x)有較多局部極值點,主要用于測試算法跳出局部最優(yōu)的能力;高維單峰函數(shù)f4(x)~f6(x)只有一個全局最小值,主要為了測試算法的收斂性能。 表 1 測試函數(shù) 實驗環(huán)境為:CPU為i5-5257U 2.70 GHz,運行內(nèi)存4 GB,操作系統(tǒng)Windows10,編程環(huán)境Matlab R2019a。設置ISSA算法的變異概率為0.5,BA算法聲波頻度為0.5, FPA算法的轉(zhuǎn)換概率為0.8。 表2~9是5種算法對于不同測試函數(shù)f1(x)~f8(x)的求解精度對比。分別在相同的測試環(huán)境下運行了30次,種群大小均為30,最大迭代次數(shù)為1 000。 表 2 f1(x)函數(shù)仿真結果 表 3 f2(x)函數(shù)仿真結果 表 4 f3(x)函數(shù)仿真結果 表 5 f4(x)函數(shù)仿真結果 表 6 f5(x)函數(shù)仿真結果 表 7 f6(x)函數(shù)仿真結果 表 8 f7(x)函數(shù)仿真結果 表 9 f8(x)函數(shù)仿真結果 表2~7是5種算法對高維測試函數(shù)f1(x)~f6(x)的方差、最優(yōu)值、平均值和最差值仿真結果;表8~9是5種算法對低維(維數(shù)為2)測試函數(shù)f7(x)及f8(x)的方差、最優(yōu)值、平均值和最差值仿真結果。f1(x)~f3(x)為多峰函數(shù)。由表2~4可知,除f1(x) 外,ISSA在不同維度下均表現(xiàn)出良好的尋優(yōu)能力,而其他算法都無法求得全局最優(yōu)解。f4(x)~f6(x)為單峰函數(shù),在定義域內(nèi)只有一個極值點。從表5~7可以看出,ISSA也仍能取到全局最優(yōu)解,表現(xiàn)出良好的尋優(yōu)性能??梢?,不論是單峰函數(shù)還是復雜多峰函數(shù),ISSA均取到了全局最優(yōu)值,并且隨著維度的增加,仍能保持得出最優(yōu)結果,而其他4個算法在迭代后期都陷入了局部最優(yōu),并隨著維度的提高,求解精度逐漸下降。對于f1(x),ISSA雖然陷入了局部最優(yōu)8.882×10-16,但相較于其他4個算法仍提高了收斂精度,并隨著維度的提高,其他4個算法求解精度都在明顯下降時,ISSA仍能表現(xiàn)出良好的穩(wěn)定性。對于低維函數(shù),由表8和9可以看出,ISSA仍能收斂到全局最優(yōu),表明ISSA在低維測試函數(shù)條件下仍然具有良好性能。 圖1是8個函數(shù)的速度收斂曲線圖,直觀地反映出5種算法的收斂速度和精度。其中,圖1(a)~(f)是高維單峰和多峰函數(shù)(維數(shù)為10)的速度收斂圖,從圖1(g)~(h)是低維函數(shù)(維數(shù)為2)的速度收斂圖。從圖1可以看出:ISSA表現(xiàn)出了優(yōu)越的性能,在收斂速度上優(yōu)于SSA、FPA、BA和RSSA。對于每個測試函數(shù),ISSA在100代之內(nèi)均可以收斂到全局最優(yōu),而其他算法則需要迭代更多次才能收斂,甚至不能收斂到全局最優(yōu)值。對比這5種算法的收斂曲線,無論是高維、低維還是單峰、多峰函數(shù),ISSA都具有更好的尋優(yōu)能力和更快的收斂速度。 (a) f1(x) (b) f2(x) (c) f3(x) (d) f4(x) (e) f5(x) (f) f6(x) (g) f7(x) (h) f8(x)圖 1 測試函數(shù)收斂曲線Fig.1 Convergence curve of test functions 該問題求解在約束條件g1和g2下的管柱直徑d及厚度t,使管柱成本最小,表示為 minf=9.8dt+2d 式中:2 cm≤d≤14 cm,0.2 cm≤t≤0.8 cm;管柱負載p=2 500 N;管柱材料應力σy=500 N/cm2;彈性模量E=0.85×106N/cm2;管柱高度L=250 cm。ISSA對管柱設計問題的求解結果,與文獻[21]和文獻[22]對該問題的求解結果對比,如表10所示。 表 10 管柱設計問題最佳方案結果對比 從表10可以看出,ISSA在計算管柱設計問題時能得到較優(yōu)結果。 該問題求解在約束條件g1、g2和g3下,三桿的橫截面積x1、x2和x3并使其體積最小,其中x1=x3,表示為 式中:橫截面0≤x1≤1 cm2,0≤x2≤1 cm2;三桿長度均為l=100 cm;節(jié)點處受力p=2 kN;桿的應力度σ=2 kN/cm2。 ISSA對三桿平面桁架問題的求解結果與文獻[23]中Park、Yang和Ray對該問題的求解結果對比,如表11所示。 表 11 三桿平面桁架問題最佳方案結果對比 從表11可以看出,ISSA在計算三桿平面桁架問題時也能得到較優(yōu)結果。 本文針對樽海鞘算法的不足進行了改進。通過最優(yōu)位置替換個體位置,改進了跟隨者位置更新公式,提升了算法尋優(yōu)能力;為了增強算法的全局搜索和局部搜索能力,將指數(shù)遞減慣性權重加入到改進后的跟隨者位置更新公式中,提升了收斂精度;引入自適應t分布變異,避免算法陷入局部最優(yōu),加快了其收斂速度。通過仿真實驗對比并在工程設計問題中應用,驗證了改進算法與其他算法相比的優(yōu)越性。下一步將研究改進算法在組合優(yōu)化問題中的應用。3 仿真實驗
3.1 測試函數(shù)
3.2 測試環(huán)境及算法參數(shù)
3.3 求解精度比較
3.4 算法收斂性比較
4 工程應用
4.1 管柱設計問題
4.2 三桿平面桁架問題
5 結 語