王喜敏,袁 杰,寇巧媛
(新疆大學 電氣工程學院,新疆 烏魯木齊 830017)
群智能優(yōu)化算法包括2個搜索階段: 勘探階段和開發(fā)階段[1]??碧诫A段是指盡可能廣泛、隨機和全局地搜索解空間的過程;開發(fā)階段是指算法在勘探階段獲得區(qū)域內(nèi)搜索更精確解的能力,隨機性降低,精確度提高。當算法的勘探能力占優(yōu)時,可以更好地搜索解空間,產(chǎn)生更多的差異化解集,從而快速收斂。當算法的開發(fā)能力占優(yōu)時,更多地進行局部搜索,以提高解集的質量和精度。然而,當勘探能力得到改善時,會導致開發(fā)能力的降低,反之亦然。因此,對優(yōu)化問題有效的2個階段之間取得適當?shù)钠胶馐蔷哂刑魬?zhàn)性的。典型群智能優(yōu)化算法包括粒子群優(yōu)化算法(PSO)[2]、灰狼優(yōu)化算法(GWO)[3-4]、鯨魚優(yōu)化算法(WOA)[5]、螢火蟲算法[6-7]、布谷鳥算法[8]等。黏菌算法(SMA)是由Li等[9]于2020年提出的一種基于種群的元啟發(fā)式算法,黏菌的振蕩行為類似于細菌覓食優(yōu)化算法[10-11]。該算法相比其他群智能算法具有更優(yōu)的搜索能力,應用于太陽能光伏電池參數(shù)優(yōu)化[12-13]、電力系統(tǒng)穩(wěn)定器參數(shù)優(yōu)化[14]、路徑規(guī)劃[15]、任務調度[16-17]、旅行商問題[18]等領域。
SMA算法仍存在一些缺點,比如算法隨著搜索增加會陷入局部最優(yōu)、收斂性能下降,所以,研究人員對SMA算法進行了一定的改進。肖亞寧等[19]提出一種基于混沌精英黏菌算法(CESMA),提高了算法的搜索能力,用于優(yōu)化PID控制參數(shù);Chen等[20]提出混沌SMA(CSMA),集成Logistic混沌映射,提高搜索效率,提供了更好的開發(fā)模式;Zhao等[21]開發(fā)基于Levy飛行的改進SMA,引入Levy flight來代替均勻分布和高斯分布調用的隨機權值,在探索開發(fā)階段取得良好的性能;Zhao等[22]提出混合SMA和Harris hawk優(yōu)化(HHO),利用更多的方式更新個體;Gao等[23]提出混合GWO算法與SMA算法,以改善原有SMA算法,的早熟收斂性能;Wu等[24]提出一種基于正交學習策略(OLS)和邊界重啟策略(BRS)的OBSMA算法,提高了算法的全局優(yōu)化能力;Hu等[25]提出一種離散覓食策略的DFSMA算法,應用于生物醫(yī)學數(shù)據(jù)的特征選擇,提高了全局搜索能力,但是存在執(zhí)行時間過長的問題;Wei等[26]提出一種基于領導者和跟隨者機制的ISMA算法,較好地解決了無功優(yōu)化調度(ORPD)問題中的精度和計算時間上的不足;Naik等[27]開發(fā)了一個領導者SMA(LSMA)以改善SMA的搜索過程,選擇最優(yōu)的候選解作為LSMA的領導者進行指導,應用于多光譜圖像,取得了良好性能。雖然目前改進方法對算法全局勘探能力和開發(fā)能力有所優(yōu)化,但在平衡算法的勘探和開發(fā)能力上還有待提高。
基于上述研究,為了均衡SMA算法的勘探能力和開發(fā)能力,本文在SMA中引入Tent混沌映射反向學習策略,生成反向種群,選擇多樣性好的種群作為初始種群來提高搜索效率,更好地利用解的局域性;引入自適應權值策略和擾動策略更新黏菌位置,平衡算法全局搜索能力和局部開發(fā)能力,避免算法早熟,快速獲得全局最優(yōu)位置。最后,對經(jīng)典測試函數(shù)的尋優(yōu)曲線進行分析,相較于其他算法,改進SMA算法收斂速度和收斂精度均得到提升。
SMA算法是一種隨機優(yōu)化方法,模擬黏菌尋找食物過程的3個階段:發(fā)現(xiàn)食物、接近食物和包圍食物[28]。SMA算法利用適應性權值W來模擬基于生物振蕩器的黏菌傳播波的正負反饋系統(tǒng)結合產(chǎn)生的過程,該生物振蕩器旨在展示連接食物的最優(yōu)路徑,權重發(fā)生變化,選擇不同的更新策略。但是基于隨機搜索的更新過程,導致種群多樣性差問題;其次,2個隨機個體的選擇導致算法可能會陷入局部最優(yōu)。
當食物濃度滿足條件時,區(qū)域附近的權重較大;當食物濃度較低時,該區(qū)域的權重會降低,從而轉向其他區(qū)域探索。
(1)
式中:
νb=[-a,a];
(2)
(3)
p=tanh|S(i)-FD|,i∈1,2,…,N。
(4)
W權重更新策略為
(5)
SmellIndex=sort(S)。
(6)
式(1)中:r表示[0,1]區(qū)間內(nèi)的隨機值;Xb(t)表示當前獲得的最佳位置;W為權重;XA(t)和XB(t)是隨機選擇的2個個體;vb是控制參數(shù);vc從1線性減小到0;t代表當前迭代次數(shù);X(t)表示當前位置;p是選擇開關。式(3)中:t表示當前迭代次數(shù);tmax表示最大迭代次數(shù)。式(4)中:S(i)是進行排序后的種群;FD是所有迭代中最佳值。式(5)為權重W更新,其中:矢量Fb表示當前迭代過程中獲得的最優(yōu)適應值;Fω表示當前迭代過程中得到的最差適應值;condition表示S(i)是種群的前半部分,i=N/2。式(6)中SmellIndex對適應度值進行排序。
接近食物階段是模擬黏菌靜脈結構內(nèi)的收縮方法,位置根據(jù)食物質量進行調整,也就是說,食物的濃度越高,該區(qū)域的權重就越大。否則,根據(jù)式(7)將該區(qū)域的權值轉換為其他區(qū)域。位置更新策略為
(7)
式中:R表示[0,1]區(qū)間內(nèi)的隨機值;Bl和Bu表示搜索空間范圍的下界和上界;z表示切換概率,決定SMA是探索其他食物源還是圍繞最佳個體搜索;其他變量同公式(1)。
包圍食物階段是模擬vb的行為,vb在區(qū)間[-a,a]中以隨機方式浮動,并隨著迭代次數(shù)的增加逐漸減小到零。vc的值在[0,1]之間浮動,最終到達0。
在SMA算法中,對初始種群使用了隨機策略,通過一定范圍的上下界實現(xiàn)隨機取值,但這種隨機策略使得最優(yōu)解質量和收斂速度等方面不太理想。為了盡可能充分利用解的空間信息,提高最優(yōu)解的質量和增強初始解搜索空間的勘探能力,本文針對SMA算法的缺點,采用Tent映射反向學習策略對種群進行重新初始化,以便獲得更優(yōu)的初始種群。
2.1.1 Tent映射
研究表明,利用混沌運動的隨機性、規(guī)律性和遍歷性的優(yōu)勢,能夠產(chǎn)生豐富且多樣性的初始種群。已知的混沌映射有Tent映射、Logistic映射等,Tent映射的遍歷均勻性要明顯強于Logistic映射[29],產(chǎn)生的初始值均勻分布在[0,1]區(qū)間,在提高算法的收斂速度方面有明顯的效果。Tent混沌映射表達式為
(8)
當φ∈(0,1),且xk∈[0,1]時,系統(tǒng)(8)處于混沌狀態(tài)。
2.1.2 反向學習策略
豐富的種群多樣性能提高算法的搜索效率,減少計算時間,提高全局收斂能力。反向學習策略[30]是一種提高搜索效率的方法,采用對其初始種群求反向解的思想,增加搜索種群的多樣性,進而提高最佳點的質量。其基本思路是:如果在D維度空間X=(X1,X2,…,XD)上存在一點,并且xi(i=1,2,…,D)分布在[c,d]區(qū)間內(nèi),反向點x′i=c+d-xi,i∈[0,D]。所以種群X′i為Xi的反向種群,反向種群的計算公式為
X′i=Li+Ui-Xi。
(9)
式中:Li和Ui分別為上下界;Xi為原初始種群;X′i為反向種群。
將原始種群和反向種群合并為一個新種群X=(Xi∪X′i),然后計算適應度值并進行排序,選取前N個點作為初始種群X。
受群智能優(yōu)化算法的啟發(fā),黏菌算法在搜索過程中的隨機分布限制了全局搜索范圍。位置更新中加入一個隨迭代次數(shù)變化的權值ω,ω的特點是迭代早期值較大,后期值較小。在算法迭代前期,選擇較大搜索步長,以提高全局搜索能力,提高算法遍歷全局的效果,避免出現(xiàn)早熟收斂;在迭代后期,選擇較小搜索步長,以提高局部搜索,加快收斂速度。姜天華[31]提出非線性調整收斂因子,采用帶有權重的個體位置更新和局部搜索算法,提高了算法的局部搜索能力。本文引入非線性變化的自適應權值策略,均衡算法勘探和開發(fā)能力,充分保證算法的有效性,自適應權值如式(10)[32],式中:ωinitial、ωfinal表示初始值和最終值,ω的范圍為[0,1];t是當前的迭代次數(shù);T是最大迭代次數(shù)。
(10)
改進后的位置更新公式為
(11)
本文引入自適應權值策略的位置更新,隨著迭代次數(shù)增加,非線性動態(tài)改變權值。早期迭代中權值較大,能夠獲得較強的探索能力,快速向全局最優(yōu)值靠攏,從而提高算法的收斂速度;后期迭代中選擇較小權值,提高跳出局部最優(yōu)值的能力。
黏菌更新位置的時候,一般選擇當前最優(yōu)位置進行更新,使得搜索范圍變窄,迭代次數(shù)減少。為了提高全局搜索效率,選擇對當前最優(yōu)位置添加一個擾動,并對位置信息進行貪婪策略判斷,判斷當前位置是否最優(yōu)。對當前位置進行隨機擾動,公式為
(12)
采用貪婪機制策略進行判斷是否保留擾動,公式為
(13)
本文提出的改進SMA算法步驟如下:
Step1 初始化各參數(shù),基于Tent混沌映射和反向學習策略生成初始種群X;
Step2 計算適應度值,進行排序;
Step3 根據(jù)迭代條件更新p、vb、vc;
Step4 每次迭代中通過式(5)、(7)、(11)更新位置、權重;
Step5 重新計算適應度值,同時選擇適應的更新位置公式,選擇最優(yōu)位置;
Step6 利用式(12)和(13)對當前最優(yōu)位置進行擾動更新;
Step7 判斷是否滿足設定的終止條件,如果是,輸出全局最優(yōu)值,算法結束,否則回到Step2。
本文仿真實驗的所有算法均在相同條件下進行,保證公平性。將PSO[2]、GWO[3]、WOA[5]、SMA[9]和本文多策略的改進SMA算法應用于選取的測試函數(shù),并對結果進行對比分析。
本文選取5個經(jīng)典測試函數(shù)來驗證算法的有效性,測試函數(shù)如表1所示。單峰函數(shù)f1和f2用來測試本文算法的局部開發(fā)能力,多峰函數(shù)f3、f4、f5用來測試本文算法的全局搜索能力。
表1 測試函數(shù)Tab. 1 Test function
算法的參數(shù)設置如表2所示,參數(shù)的選擇是基于原文作者使用的參數(shù)或各種研究人員廣泛使用的參數(shù)[6]。其中,設置種群的規(guī)模N=30,最大迭代次數(shù)T=1 000,維度D=30,為了減少算法運行隨機因素的影響,將算法在測試函數(shù)中單獨運行30次,取平均值作為最終運行結果。
表2 參數(shù)設置Tab. 2 Parameter settings
所有仿真實驗在Windows10操作系統(tǒng),Intel Core i5處理器上,基于MATLAB 2018b進行。通過結合算法迭代到最優(yōu)值的迭代次數(shù)和尋到最優(yōu)值所用時間來綜合評價收斂速度,通過數(shù)據(jù)分析收斂精度,本文從收斂速度和收斂精度2個角度分析算法的搜索效率。
3.2.1 改進SMA算法與SMA、PSO、GWO、WOA的對比
為了直觀清晰觀察算法的收斂性,給出測試函數(shù)f1~f5收斂曲線,如圖1所示。收斂曲線能直觀看出收斂速度和陷入局部最優(yōu)問題,橫坐標為迭代次數(shù),縱坐標為適應度值。記錄最優(yōu)函數(shù)值的標準差和平均值數(shù)據(jù),如表3所示。
圖1 與經(jīng)典算法對比時函數(shù)f1 ~ f5尋優(yōu)曲線Fig. 1 Optimization curve of functions f1 ~ f5 when the classicol algorithm compares
表3 改進的SMA算法與SMA、PSO、GWO、WOA算法實驗結果對比Tab. 3 Comparison of test function results between improved SMA algorithm and SMA, PSO, GWO and WOA algorithms
圖1給出各算法分別在30維度空間的尋優(yōu)曲線。從收斂速度分析,圖1(a)中,PSO、WOA、GWO在1 000次迭代過程中未搜索到極值點;SMA算法在迭代次數(shù)為50時出現(xiàn)陷入局部極值的情況,直到700次附近找到極值點0;而多策略的改進SMA算法的曲線平滑,沒有出現(xiàn)陷入局部極值點現(xiàn)象,在迭代次數(shù)達到300附近已經(jīng)尋得全局極值點0。
圖1(b)中存在陷入局部極值現(xiàn)象,PSO、WOA、GWO陷入不同的局部極值中;SMA算法在迭代中多次陷入局部最優(yōu),到達1 000次迭代時出現(xiàn)平行于x軸的平行線,均未尋得極值點0;而改進的SMA算法由于策略的引入,避免陷入局部最優(yōu),在迭代次數(shù)為600左右時,尋得全局極值點0,使得算法的收斂速度優(yōu)于其他算法。
觀察圖1(c)(多峰函數(shù)f3),PSO算法陷入局部最優(yōu)值,WOA、GWO、SMA、改進的SMA算法找到全局最優(yōu)極值點0。WOA和GWO快速跳出局部現(xiàn)象,當?shù)螖?shù)達到300附近時找到全局最優(yōu)極值點0,SMA算法在200次附近找到全局極值點,而改進SMA算法比SMA算法提前約150代找到全局極值點0,迭代次數(shù)相較SMA算法減少約170代。
在圖1(d)中,PSO、WOA、GWO、SMA算法的收斂曲線均在多策略改進的SMA算法上方,已經(jīng)出現(xiàn)局部問題,收斂速度慢,而改進的SMA算法在搜索過程中未出現(xiàn)陷入局部極值現(xiàn)象,迭代次數(shù)在50左右快速收斂尋得全局最優(yōu)值8.882×10-16,改進的SMA算法相較于SMA算法收斂速度得到提高。
Griewank(f5)函數(shù)能夠測試算法跳出局部能力,改進的SMA算法在迭代次數(shù)50之前已經(jīng)找到全局極值點0,SMA算法出現(xiàn)陷入局部最優(yōu)的現(xiàn)象。圖1(e)說明引入多策略的改進SMA算法大幅度減少了算法收斂到全局最優(yōu)值的迭代次數(shù)。
從收斂精度分析,表3數(shù)據(jù)顯示,改進的SMA算法得到的平均值和標準差均優(yōu)于比較算法,找到f2函數(shù)全局極值點0,而SMA算法的最優(yōu)值為5.330×10-207,未找到全局極值點0,改進算法的收斂精度得到提高。
綜上所述,圖1(a)、(b)中表現(xiàn)出算法的局部開發(fā)能力明顯提高,圖1(c)、(d)、(e)在全局搜索方面表現(xiàn)較優(yōu),PSO、WOA、GWO、SMA算法存在陷入局部最優(yōu)的現(xiàn)象,而多策略的改進SMA算法避免了局部極值問題,曲線的收斂速度優(yōu)于其他算法,能較快找到全局最優(yōu)值,收斂精度得到較大提高。
3.2.2 改進的SMA算法與SMA、CESMA的仿真實驗分析
為進一步充分驗證改進的SMA算法的有效性,選取SMA、CESMA與改進的SMA算法比較,結果如圖2所示。給出相關算法在30維空間運行30次的數(shù)據(jù),記錄最優(yōu)函數(shù)值的標準差和平均值,如表4所示。
圖2 與改進算法對比時f1 ~ f5函數(shù)尋優(yōu)曲線Fig. 2 Optimization curve of function f1 ~ f5 when the improred algorithm compares
表4 改進的SMA算法與CESMA、SMA算法實驗結果對比Tab. 4 Comparison of test function results between improved SMA algorithm, CESMA algorithm and SMA algorithm
圖2給出測試函數(shù)在30維空間的尋優(yōu)曲線。從收斂速度分析,圖2(a)是Sphere(f1)函數(shù)仿真結果,改進的SMA算法的收斂曲線位于CESMA和SMA下方,迭代次數(shù)為300左右時尋得全局極值點0;而CESMA和SMA在搜索過程中出現(xiàn)較多的局部極值,由于CESMA算法引入Tent混沌映射反向學習策略,相較于SMA算法,更快找到全局最優(yōu)值。改進的SMA算法引入自適應權值策略和擾動策略,明顯提高了全局搜索能力,迅速朝著全局最優(yōu)值搜索,避開了局部最優(yōu)值,算法的收斂速度效果較佳,相較于CESMA算法,迭代次數(shù)減少約58%,收斂效果優(yōu)于CESMA和SMA算法。
圖2(b)是Schwefel 2.22函數(shù)仿真結果,改進的SMA在550次左右找到全局極值點0,此時CESMA和SMA陷入局部最優(yōu)值,無法避免局部極值點,最終未尋到全局極值點0。相較于CESMA和SMA算法,改進的SMA算法尋得全局極值點0,收斂精度相對較高。
在圖2(c)、圖2(e)中,改進的SMA收斂速度優(yōu)于CESMA和SMA算法,在迭代次數(shù)為30左右已經(jīng)尋得極值點0。CESMA和SMA算法雖然找到全局最優(yōu)值,但是SMA在迭代過程中經(jīng)過更多的迭代次數(shù)才跳出局部極值現(xiàn)象,跳出局部能力較弱;CESMA算法在迭代次數(shù)為60左右時迅速跳出局部,尋得全局最優(yōu)值0。引入Tent混沌反向學習策略的CESMA算法相較于SMA算法克服了陷入局部極值問題,引入自適應權值策略和擾動策略的改進SMA算法解決了早期容易陷入局部極值問題,同時算法的搜索效率相較于SMA算法和CESMA算法都有所提高。
圖2(d)中改進的SMA相較于CESMA算法尋到全局最優(yōu)值的迭代次數(shù)減少約75%,相較于SMA算法減少約76%。
從收斂精度分析,表4數(shù)據(jù)中,改進的SMA算法,除f4外均找到極值點0,而CESMA雖然精度高于SMA算法,但二者均未找到f2和f4函數(shù)極值點0,多策略的改進SMA算法收斂精度優(yōu)于CESMA和SMA算法。
綜上所述,圖2(a)、(b)中表現(xiàn)出改進的SMA算法的局部開發(fā)能力明顯提高,圖2(c)、(d)、(e)表現(xiàn)出其在全局搜索方面較優(yōu)。多策略的改進SMA算法通過引入映射反向學習策略提高了算法的收斂精度;引入自適應權值策略和擾動策略進一步提高算法的勘探能力,快速獲得全局最優(yōu)解。
本文還對算法的收斂速度通過該算法迭代到最優(yōu)值的迭代次數(shù)和平均總運行時間進行綜合評估。表5給出收斂精度較高的3種算法迭代到全局最優(yōu)值的迭代次數(shù)、每代消耗時間、平均總運行時間數(shù)據(jù)。從表5數(shù)據(jù)分析可知,改進的SMA算法尋到全局最優(yōu)值的迭代次數(shù)相對較少,在較短時間內(nèi)找到全局最優(yōu)值,平均總運行時間也相對較短,進一步說明改進的SMA算法在收斂速度上的優(yōu)越性。
表5 平均總運行時間Tab. 5 Average total running time
針對黏菌算法(SMA)搜索效率低和易陷入局部最優(yōu)的問題,本文提出一種多策略的改進黏菌算法。通過Tent混沌映射反向學習策略優(yōu)化初始種群,提高了算法收斂速度。自適應權值策略避免了算法局部極值現(xiàn)象,提高了黏菌靠近和獲取食物的速度,算法的勘探能力和收斂精度得到較大提高。擾動策略對最優(yōu)位置進行擾動更新,找到較佳的全局最優(yōu)值,算法能夠避免早熟現(xiàn)象。通過分析測試函數(shù)的尋優(yōu)結果,表明多策略的改進SMA算法打破了早熟現(xiàn)象,獲得較高的搜索效率,不僅收斂速度得到提高,較快地找到全局最優(yōu)值,而且具有較高的收斂精度,尋得極值點。相較于對比算法,具有較好的全局搜索和跳出局部極值能力,充分驗證了改進算法的有效性。