常祥潔,趙孜愷,周朝榮,3+
(1.四川師范大學(xué) 物理與電子工程學(xué)院,四川 成都 610101; 2.武漢光迅科技股份有限公司 國(guó)際營(yíng)銷部,湖北 武漢 430205; 3.成都信息工程大學(xué) 氣象信息與信號(hào)處理四川省高校重點(diǎn)實(shí)驗(yàn)室,四川 成都 610225)
近年來,受到生物群體行為、社會(huì)行為以及自然現(xiàn)象的啟發(fā),一系列智能優(yōu)化算法被提出[1-4]。這些算法因?yàn)閰?shù)較少、容易實(shí)現(xiàn)等優(yōu)點(diǎn),受到了廣泛關(guān)注,并被應(yīng)用于任務(wù)調(diào)度、神經(jīng)網(wǎng)絡(luò)等諸多領(lǐng)域[5]。其中,樽海鞘群算法(slap swarm algorithm,SSA)[6]具有自適應(yīng)參數(shù),前期有利于全局探索,后期有利于局部開發(fā);同時(shí),樽海鞘種群以鏈狀方式運(yùn)動(dòng)和覓食,有利于個(gè)體之間信息的交流與傳遞,在求解多種優(yōu)化問題時(shí)表現(xiàn)出顯著的優(yōu)勢(shì)。但與其它智能優(yōu)化算法一樣,SSA仍然存在收斂速度慢、尋優(yōu)精度低等缺點(diǎn)。
為了解決SSA存在的問題,已有文獻(xiàn)針對(duì)SSA做改進(jìn)。文獻(xiàn)[7]引入衰減因子和動(dòng)態(tài)學(xué)習(xí)策略對(duì)SSA進(jìn)行改進(jìn),算法的收斂速度和尋優(yōu)精度有所提高。文獻(xiàn)[8]采用自適應(yīng)慣性權(quán)重和萊維飛行策略,提高了SSA的全局和局部搜索能力。文獻(xiàn)[9]將正交學(xué)習(xí)和對(duì)立學(xué)習(xí)策略引入SSA,以提高算法收斂速度和尋優(yōu)精度。除了引入各種策略,文獻(xiàn)[10-12]考慮了SSA的混合算法,分別將SSA與WOA、PSO和SCA結(jié)合,以提高算法的收斂性能。上述方法從不同角度對(duì)SSA進(jìn)行改進(jìn),雖然在一定程度上提升了算法的尋優(yōu)精度和收斂速度,但存在易陷入局部最優(yōu)的問題。
為了進(jìn)一步地提高SSA的性能,本文提出了一種改進(jìn)的樽海鞘群算法。在該算法中,首先,采用混沌方法對(duì)種群進(jìn)行初始化,保證種群的多樣性和均勻性;其次,將正弦余弦策略和動(dòng)態(tài)更新策略分別引入領(lǐng)導(dǎo)者和追隨者更新階段,提高全局探索的能力,增強(qiáng)算法局部開發(fā)的能力;最后,對(duì)食物位置進(jìn)行變異操作,更好地發(fā)揮領(lǐng)導(dǎo)者的引領(lǐng)作用,有效地避免算法陷入局部最優(yōu)。為驗(yàn)證改進(jìn)后的算法性能,分別在13個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù)和兩個(gè)工程設(shè)計(jì)問題上進(jìn)行仿真測(cè)試,并與其它智能優(yōu)化算法進(jìn)行比較。仿真結(jié)果表明,改進(jìn)后的算法在尋優(yōu)精度、收斂速度以及魯棒性方面較原SSA以及SSA的其它改進(jìn)算法更優(yōu),且總體性能優(yōu)于其它對(duì)比算法。
SSA是模擬樽海鞘的群體生活方式而衍生出的算法[6]。通常,樽海鞘個(gè)體以鏈狀結(jié)構(gòu)進(jìn)行運(yùn)動(dòng)和覓食,因此,將個(gè)體分為領(lǐng)導(dǎo)者和追隨者兩類。位于種群前面的領(lǐng)導(dǎo)者個(gè)體引領(lǐng)后面的追隨者個(gè)體,朝著食物位置不斷地移動(dòng)。假設(shè)樽海鞘種群規(guī)模為N, 搜索空間為D維,第i個(gè)樽海鞘個(gè)體在D維空間中的位置向量可表示為Xi=(xi1,xi2,…,xiD-1,xiD),i=1,2,…,N-1,N。 領(lǐng)導(dǎo)者的更新方式如下
(1)
其中,F(xiàn)j為食物的位置,即目前為止,種群中的局部最優(yōu)解;ubj、lbj為第j維空間的上、下界;c2、c3為(0,1)之間的隨機(jī)數(shù),分別用來決定移動(dòng)的步長(zhǎng)和方向;c1為自適應(yīng)參數(shù),隨著迭代次數(shù)的增加,從2減小到0,即
(2)
其中,l為當(dāng)前迭代次數(shù),L為最大迭代次數(shù),k≥1。
追隨者根據(jù)牛頓運(yùn)動(dòng)方程進(jìn)行位置更新,移動(dòng)的距離可表示為
(3)
(4)
其中,i≥2。
需要指出的是SSA的初始種群隨機(jī)產(chǎn)生,難以保證種群分布的均勻性,會(huì)影響算法的性能。而初始種群的分布越均勻,算法的尋優(yōu)精度就越高、收斂速度就越快[1]。為此,我們采用混沌方法進(jìn)行種群初始化,豐富初始種群的多樣性。其次,領(lǐng)導(dǎo)者僅根據(jù)局部最優(yōu)解進(jìn)行位置更新,導(dǎo)致全局探索能力較差[13]。因此,我們?cè)陬I(lǐng)導(dǎo)者更新階段引入正弦余弦策略,提高全局探索的能力,從而提高算法的尋優(yōu)精度。然后,由于更新后的追隨者位于兩個(gè)樽海鞘個(gè)體中間,未能很好地體現(xiàn)精英個(gè)體的引導(dǎo)作用。相應(yīng)地,我們?cè)谧冯S者更新階段引入動(dòng)態(tài)更新策略,充分地利用個(gè)體之間的交互信息以發(fā)揮精英個(gè)體的引導(dǎo)作用,從而提高局部開發(fā)的能力、加快算法的收斂速度。最后,為了充分發(fā)揮領(lǐng)導(dǎo)者的引領(lǐng)作用,進(jìn)一步對(duì)食物位置(局部最優(yōu)解)進(jìn)行變異操作,有效地避免算法陷入局部最優(yōu)。
混沌具有遍歷性、半隨機(jī)性以及對(duì)初始條件依賴等特點(diǎn),已在經(jīng)濟(jì)、生物、醫(yī)學(xué)、工程等領(lǐng)域得到了廣泛的應(yīng)用。相比隨機(jī)初始化,利用混沌初始化產(chǎn)生的初始種群分布更加均勻[14]。通過映射關(guān)系產(chǎn)生混沌序列,再將其轉(zhuǎn)換到個(gè)體的搜索空間?;煦缬成淠P投喾N多樣,其中,Tent混沌映射模型簡(jiǎn)單、具有較好的遍歷性,且對(duì)初始條件依賴性低。為此,采用Tent混沌映射進(jìn)行初始化[15]
(5)
(6)
在SSA中,領(lǐng)導(dǎo)者從迭代初期始終朝著局部最優(yōu)值變化,導(dǎo)致全局探索能力差,易陷入局部最優(yōu),造成算法收斂過早、尋優(yōu)精度較低。不同于SSA,正弦余弦算法[5]的更新方式不僅包括食物位置,還包括上一代個(gè)體的位置,可以增強(qiáng)算法跳出局部最優(yōu)的能力,提高算法的尋優(yōu)精度。為此,借鑒正弦余弦策略對(duì)領(lǐng)導(dǎo)者進(jìn)行更新
(7)
其中,r2、r3、r4為隨機(jī)數(shù),且r2∈(0,2π)、r3∈(0,2)、r4∈(0,1),r1為自適應(yīng)參數(shù),即
(8)
其中,m為大于1的控制參數(shù)。
正弦余弦策略的引入,解決了SSA僅根據(jù)食物位置進(jìn)行更新、全局探索能力差的問題。不論是正弦策略還是余弦策略,每個(gè)樽海鞘個(gè)體均能很好地利用自身位置與食物位置之間的差異信息,促使樽海鞘個(gè)體朝著不同的方向進(jìn)行搜索。同時(shí),正弦余弦更新方式包含有自適應(yīng)參數(shù),前期有利于全局探索,后期有利于局部開發(fā),從而提高全局探索能力,增強(qiáng)算法跳出局部最優(yōu)的能力。
由追隨者的位置更新式(4)可知,第i個(gè)樽海鞘個(gè)體的位置是根據(jù)第i個(gè)和第i-1個(gè)樽海鞘個(gè)體的位置進(jìn)行更新,且更新后位于兩個(gè)樽海鞘位置坐標(biāo)的中點(diǎn)。此過程沒有考慮兩個(gè)樽海鞘位置的優(yōu)劣性,導(dǎo)致精英個(gè)體的引導(dǎo)作用較小。為了增強(qiáng)精英個(gè)體的引導(dǎo)作用,提升個(gè)體之間信息的利用率,進(jìn)而提高算法的收斂速度,將動(dòng)態(tài)更新策略引入SSA的追隨者位置更新階段。
首先,計(jì)算第i個(gè)和第i-1個(gè)樽海鞘的適應(yīng)值,在適應(yīng)值較差的樽海鞘前添加動(dòng)態(tài)更新因子r, 增強(qiáng)較優(yōu)位置個(gè)體對(duì)追隨者位置更新的影響。引入動(dòng)態(tài)更新策略的追隨者位置更新如下
(9)
(10)
其中,b給出如下
(11)
動(dòng)態(tài)更新策略的引入,發(fā)揮了精英個(gè)體的引導(dǎo)作用,促進(jìn)了個(gè)體之間信息的有效交互,而不是簡(jiǎn)單地根據(jù)兩個(gè)個(gè)體的位置進(jìn)行更新,導(dǎo)致信息的利用率下降。相比于文獻(xiàn)[7]引入隨機(jī)變化的削弱因子,考慮到兩個(gè)個(gè)體適應(yīng)度之間的差異,采用動(dòng)態(tài)更新的削弱因子可以更好地發(fā)揮精英個(gè)體的引導(dǎo)作用,促使最優(yōu)信息在個(gè)體之間交互,提高算法局部開發(fā)的能力,進(jìn)而加快算法的收斂速度。
在SSA中,領(lǐng)導(dǎo)者的位置至關(guān)重要,引領(lǐng)追隨者朝著食物位置(局部最優(yōu)解)方向移動(dòng),但如果領(lǐng)導(dǎo)者位置陷入局部最優(yōu),則會(huì)導(dǎo)致種群容易出現(xiàn)搜索停滯現(xiàn)象。為了有效地避免算法陷入局部最優(yōu),借鑒差分進(jìn)化算法中變異的思想[16],將變異算子引入SSA中,對(duì)局部最優(yōu)解進(jìn)行更新。若更新后的局部最優(yōu)解連續(xù)s代保持不變,則以一定概率對(duì)其每一維進(jìn)行變異操作。對(duì)應(yīng)的變異操作如下
(12)
其中,k1、k2均為(0,1)之間的隨機(jī)數(shù),tm為(0,1)之間的隨機(jī)數(shù)。
變異算子的引入,解決了樽海鞘群算法中領(lǐng)導(dǎo)者陷入局部最優(yōu)后,種群易出現(xiàn)搜索停滯的問題。由于對(duì)食物位置進(jìn)行了變異操作,促使領(lǐng)導(dǎo)者個(gè)體在搜索空間的多個(gè)范圍內(nèi)進(jìn)行搜索,有效地避免了算法陷入局部最優(yōu)。
綜合上述策略,可以得到改進(jìn)的樽海鞘群算法(improved salp swarm algorithm,ISSA),其流程如圖1所示。
為了驗(yàn)證ISSA的性能,分別用其求解函數(shù)優(yōu)化問題以及工程設(shè)計(jì)問題,并與其它智能優(yōu)化算法的結(jié)果進(jìn)行對(duì)比。相關(guān)算法及參數(shù)設(shè)置見表1,所有算法的種群大小、最大迭代次數(shù)均設(shè)置為30、500。為了降低實(shí)驗(yàn)的偶然性,每種算法分別針對(duì)上述兩類問題,獨(dú)立運(yùn)行30次。
采用文獻(xiàn)[6]中的單峰函數(shù)f1~f7以及多峰函數(shù)f8~f13測(cè)試算法求解函數(shù)優(yōu)化問題的能力,各個(gè)函數(shù)的維度均設(shè)置為30維。
3.1.1 算法的尋優(yōu)精度比較
分別采用ISSA以及其它對(duì)比算法求解上述13個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù),所涉及到的性能指標(biāo)包括:平均值以及標(biāo)準(zhǔn)差,對(duì)應(yīng)的單峰函數(shù)(f1~f7)尋優(yōu)精度對(duì)比結(jié)果以及多峰函數(shù)(f8~f13)尋優(yōu)精度對(duì)比結(jié)果分別見表2與表3。其中,各項(xiàng)性能指標(biāo)的最好結(jié)果用粗體表示。
圖1 改進(jìn)樽海鞘群算法的流程
表1 對(duì)比算法及其參數(shù)設(shè)置
由表2可以看出,在函數(shù)f1~f3、f7上,ISSA的各項(xiàng)指標(biāo)均優(yōu)于其它對(duì)比算法,甚至在函數(shù)f1上,ISSA與SCA的尋優(yōu)精度相差高達(dá)75個(gè)數(shù)量級(jí)。在函數(shù)f4上,雖然HSSASCA的各項(xiàng)指標(biāo)最優(yōu),但I(xiàn)SSA僅次于該算法,且兩者之間的差距很小。在函數(shù)f5、f6上,就平均值而言,雖然WLSSA達(dá)到最優(yōu),但I(xiàn)SSA僅次于該算法,且兩者之間的差距很小。因此,就上述單峰函數(shù)的測(cè)試結(jié)果而言,ISSA在大多數(shù)測(cè)試函數(shù)上都具有更好的性能指標(biāo),表明其尋優(yōu)精度更高且魯棒性更強(qiáng)。
表2 單峰函數(shù)尋優(yōu)精度對(duì)比結(jié)果
由表3可以看出,在函數(shù)f12、f13上,ISSA的各項(xiàng)指標(biāo)均優(yōu)于其它對(duì)比算法。在函數(shù)f9、f11上,ISSA、WLSSA、HSSASCA均找到了理論最優(yōu)值,且具有較強(qiáng)的魯棒性。在函數(shù)f10上,ISSA、WLSSA、HSSASCA、GA的各項(xiàng)指標(biāo)相同,且優(yōu)于其它對(duì)比算法。在函數(shù)f8上,就標(biāo)準(zhǔn)差而言,雖然SCA達(dá)到最優(yōu),但I(xiàn)SSA僅次于該算法;就平均值而言,ISSA與SCA均達(dá)到最優(yōu)。因此,就上述多峰函數(shù)的測(cè)試結(jié)果而言,ISSA在大多數(shù)函數(shù)上測(cè)試結(jié)果都是最優(yōu)的,表明ISSA求解多峰函數(shù)同樣具有更高的尋優(yōu)精度和搜索能力。
表3 多峰函數(shù)尋優(yōu)精度對(duì)比結(jié)果
3.1.2 算法收斂曲線
為了更加直觀地反映算法的收斂性能,圖2給出了各個(gè)算法針對(duì)不同函數(shù)的收斂曲線。
從圖2可以看出,ISSA相比原SSA的收斂速度有了顯著提高,并在大多數(shù)測(cè)試函數(shù)上,ISSA的收斂曲線從迭代一開始就迅速下降,且在迭代尋優(yōu)過程中較少出現(xiàn)陷入停滯的現(xiàn)象。具體而言,在函數(shù)f8~f11上,雖然多個(gè)算法具有相同的尋優(yōu)精度,但I(xiàn)SSA的收斂速度最快,甚至在函數(shù)f9、f11上,迭代初期(50代左右)就已達(dá)到理論最優(yōu)值;在函數(shù)f12、f13上,ISSA收斂速度也是最快的,在150代之前就已收斂;在函數(shù)f5、f6上,雖然ISSA的收斂速度不是最快的,但在250代之前就已收斂;在函數(shù)f1~f3、f7上,雖然ISSA的收斂速度不是最快的,但尋優(yōu)精度最高;在函數(shù)f4上,ISSA前期的收斂速度較快,雖出現(xiàn)短暫的陷入局部最優(yōu),但隨著迭代次數(shù)的增加,ISSA能夠跳出局部最優(yōu),并迅速收斂于較優(yōu)值。上述結(jié)果表明,相比其它對(duì)比算法,ISSA在大多數(shù)函數(shù)上均有更快的收斂速度,且跳出局部最優(yōu)的能力更強(qiáng)。
3.1.3 算法統(tǒng)計(jì)檢驗(yàn)結(jié)果
由于平均值和標(biāo)準(zhǔn)差無法全面地反映算法的每次結(jié)果,為了驗(yàn)證ISSA與其它對(duì)比算法測(cè)試結(jié)果的顯著性差異,表4給出ISSA對(duì)比其它算法的Wilcoxon秩和檢驗(yàn)的P-value結(jié)果。根據(jù)文獻(xiàn)[17],若P-value小于給定的顯著性水平(一般取值為0.05),則認(rèn)為對(duì)比算法較之ISSA的性能有顯著性差異;NaN表示該檢驗(yàn)方法不適用。
從表5可以看出,在大多數(shù)測(cè)試函數(shù)上,相比其它對(duì)比算法,ISSA的性能具有明顯的優(yōu)勢(shì);并結(jié)合之前測(cè)試函數(shù)的平均值可以看出,在函數(shù)f4~f6、f8上,ISSA與平均值最優(yōu)的算法沒有明顯的性能差異。這些結(jié)果表明,在大多數(shù)測(cè)試函數(shù)上,ISSA的優(yōu)越性在統(tǒng)計(jì)學(xué)上是顯著的。
綜上所述,相對(duì)于其它對(duì)比算法而言,ISSA在求解函數(shù)優(yōu)化問題上,具有更好的全局探索以及局部開發(fā)能力,且在大多數(shù)測(cè)試函數(shù)上具有更好的尋優(yōu)精度和收斂速度,甚至在部分函數(shù)上可以迅速收斂到理論最優(yōu)值。尤其是相比原SSA,無論是收斂速度還是尋優(yōu)精度都得到了顯著提升;且與SSA的其它改進(jìn)算法相比,ISSA也具有更好的性能。
為了進(jìn)一步測(cè)試ISSA的性能,用ISSA求解兩類工程設(shè)計(jì)問題,并與其它算法的結(jié)果進(jìn)行對(duì)比。
3.2.1 壓力容器設(shè)計(jì)
壓力容器設(shè)計(jì)問題考慮如何設(shè)計(jì)壓力容器的各類尺寸以最小化總成本,相關(guān)的成本包括:焊接、材料以及成型等成本。為了求解該問題,需要確定頂蓋壁厚度T、管壁厚度t、容器管身長(zhǎng)度L與內(nèi)徑R的最佳取值,如圖3所示[18],將上述4種參數(shù)表示為 [tTRL]=[x1x2x3x4], 對(duì)應(yīng)的設(shè)計(jì)問題給出如下
(13)
s.t.g1(x)=-x1+0.0193x3≤0
(14)
g2(x)=-x2+0.00954x3≤0
(15)
圖2 不同算法的收斂曲線
表4 ISSA與其它對(duì)比算法的統(tǒng)計(jì)檢驗(yàn)結(jié)果
圖3 壓力容器設(shè)計(jì)問題
(16)
g4(x)=x4-240≤0 0≤x1,x2≤99, 10≤x3,x4≤200
(17)
表5給出ISSA以及其它對(duì)比算法的求解結(jié)果。由表5可以看出,相比其它對(duì)比算法,ISSA是處理該問題的最佳算法,能夠獲得最好的結(jié)果。
表5 各算法的壓力容器設(shè)計(jì)結(jié)果對(duì)比
3.2.2 懸臂梁設(shè)計(jì)
懸臂梁設(shè)計(jì)問題考慮在圖4所要求的承載力的限制條件下如何最小化懸臂梁的重量[20]。為求解該問題,需要確定懸臂梁的5個(gè)空心橫截面高度(或?qū)挾?的最佳取值。該設(shè)計(jì)問題的數(shù)學(xué)表達(dá)式可表述為
Minf(x)=0.0624(x1+x2+x3+x4+x5)
(18)
(19)
表6給出ISSA以及其它對(duì)比算法的求解結(jié)果。由表6可以看出,ISSA獲得了懸臂梁設(shè)計(jì)問題的最小重量值,表明在處理該問題上,相比其它對(duì)比算法,ISSA具有最好的優(yōu)勢(shì)。
圖4 懸臂梁設(shè)計(jì)問題
表6 各算法的懸臂梁設(shè)計(jì)結(jié)果對(duì)比
本文提出了一種改進(jìn)的SSA算法:首先,采用混沌方法對(duì)種群進(jìn)行初始化,從而提高種群的多樣性和均勻性;其次,將正弦余弦策略引入SSA的領(lǐng)導(dǎo)者更新階段,增強(qiáng)算法的尋優(yōu)精度;然后,將動(dòng)態(tài)更新策略引入SSA的追隨者更新階段,更好地發(fā)揮精英個(gè)體的引導(dǎo)作用,提高算法的收斂速度;最后,對(duì)食物位置進(jìn)行變異操作,有效地避免算法陷入局部最優(yōu)。
進(jìn)一步地,通過13個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù)以及兩個(gè)工程設(shè)計(jì)問題驗(yàn)證算法的性能。結(jié)果表明:所提出的ISSA算法可以有效提升算法的優(yōu)化性能,且整體性能上明顯優(yōu)于GWO、WOA、SCA等當(dāng)前較新的智能優(yōu)化算法。此外,無論是求解函數(shù)優(yōu)化問題還是工程設(shè)計(jì)問題,相比SSA的其它改進(jìn)算法WLSSA以及HSSASCA,ISSA具有更好的尋優(yōu)精度和魯棒性。需要指出的是,ISSA也有自身的局限性,比如在求解部分函數(shù)優(yōu)化問題時(shí),表現(xiàn)不是最佳,且求解函數(shù)優(yōu)化問題的維度不高。如何改進(jìn)這些缺點(diǎn),將是下一步的研究方向。