周建新,霍彤明
(華北理工大學(xué)電氣工程學(xué)院,河北唐山 063210)
鯨魚(yú)優(yōu)化算法(whale optimization algorithm,WOA)是2016年由S. Mirjalili教授提出的一種群智能優(yōu)化算法[1]。鯨魚(yú)優(yōu)化算法簡(jiǎn)單易實(shí)現(xiàn)、跳出局部最優(yōu)能力強(qiáng)并且調(diào)整參數(shù)較少,是近年來(lái)研究的熱點(diǎn)課題。然而,WOA算法自身也存在局限性,即難以避免陷入局部最優(yōu)解、收斂速度慢和全局搜索能力不足等問(wèn)題。劉磊等提出一種基于全局搜索策略的鯨魚(yú)優(yōu)化算法,采用變螺旋位置更新策略并且引入自適應(yīng)權(quán)重參數(shù),研究發(fā)現(xiàn)此算法具有更高的尋優(yōu)精度和收斂速度[2]。李畸勇等提出的基于改進(jìn)鯨魚(yú)算法的光伏陣列最大功率點(diǎn)電壓預(yù)測(cè)模型具有較高的預(yù)測(cè)精度,該模型在光伏MPPT控制應(yīng)用中取得較為理想的效果[3]。馬創(chuàng)等提出一種基于改進(jìn)鯨魚(yú)算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)水資源需求預(yù)測(cè)模型,該模型有效地提高了算法的收斂速度和預(yù)測(cè)精度[4]。王堅(jiān)浩等提出一種基于混沌搜索策略的鯨魚(yú)優(yōu)化算法(CWOA),利用混沌反向?qū)W習(xí)策略和非線(xiàn)性混沌擾動(dòng)協(xié)同更新策略平衡全局搜索能力和局部開(kāi)發(fā)能力,實(shí)驗(yàn)表明,CWOA在收斂速度、收斂精度、魯棒性方面均較對(duì)比算法有較大提升[5]。
以上改進(jìn)方法從不同角度對(duì)鯨魚(yú)優(yōu)化算法進(jìn)行改進(jìn),在不同程度上證明了改進(jìn)的WOA算法較傳統(tǒng)WOA算法,各項(xiàng)性能均有提高。為了進(jìn)一步提高算法的收斂速度和尋優(yōu)能力,本文首先引入自適應(yīng)參數(shù)作為權(quán)重系數(shù)改變鯨魚(yú)位置更新方式,提升算法的收斂速度和尋優(yōu)精度,其次,采用小生境技術(shù)對(duì)WOA算法進(jìn)行改進(jìn),利用小生境技術(shù)設(shè)定共享函數(shù)添加懲罰策略,在保證鯨魚(yú)捕食的同時(shí),維持種群的多樣性,保證算法的全局搜索能力,避免陷入局部最優(yōu)解。
鯨魚(yú)優(yōu)化算法是通過(guò)模擬鯨魚(yú)群中個(gè)體之間的信息共享捕食行為,利用鯨魚(yú)獨(dú)有的氣泡網(wǎng)捕食法,如圖1所示。這種覓食方法是通過(guò)沿著“6”字型或是螺旋向上的圓形創(chuàng)造的氣泡[6]來(lái)實(shí)現(xiàn)的。
圖1 捕食獵物
座頭鯨可以識(shí)別獵物并進(jìn)行信息共享,使鯨魚(yú)群包圍獵物。由于搜索空間中獵物位置是隨機(jī)的,所以WOA算法中假定一個(gè)位置為最佳搜索位置,通過(guò)不斷更新優(yōu)化最佳搜索位置進(jìn)行捕食,這種捕食行為由以下方程表示:
D=|C·Xn(t)-X(t)|
(1)
X(t+1)=Xn(t)-A·D
(2)
式中:t為當(dāng)前迭代次數(shù);A和C為系數(shù);X為當(dāng)前所在位置;Xn為當(dāng)前的最佳位置,若迭代過(guò)程中搜尋到更佳位置,Xn隨迭代次數(shù)更新。
A和C的計(jì)算如下:
A=2a·r-a
(3)
C=2·r
(4)
a=2-2t/Tmax
(5)
式中:r為區(qū)間[0,1]之間的隨機(jī)數(shù);a在迭代過(guò)程中從2到0線(xiàn)性減??;Tmax為迭代次數(shù)的最大值。
座頭鯨通過(guò)螺旋更新位置,首先計(jì)算鯨魚(yú)和獵物之間的距離,然后創(chuàng)建一個(gè)螺旋方程,模擬座頭鯨螺旋運(yùn)動(dòng),數(shù)學(xué)模型如下:
X(t+1)=D′·ebl·cos(2πl(wèi))+X*(t)
(6)
D′=|X*(t)-X(t)|
(7)
式中:b為對(duì)數(shù)螺線(xiàn)形狀的常數(shù),l為[-1,1]的隨機(jī)數(shù);D′為第i頭鯨魚(yú)個(gè)體(最優(yōu)位置)與獵物的距離。
鯨魚(yú)捕食獵物沿螺旋路徑縮小包圍圈,收縮包圍機(jī)制通過(guò)減小a的值實(shí)現(xiàn),A的波動(dòng)也隨a的減小而減小,即A是區(qū)間之間[-a,a]的隨機(jī)值,設(shè)定A為區(qū)間[-1,1]之間,實(shí)現(xiàn)搜索位置為原位置和最優(yōu)位置之間,為了模擬這種同時(shí)進(jìn)行的行為,假設(shè)收縮包圍機(jī)制和螺旋模型之間的選擇概率為50%,數(shù)學(xué)模型如下:
(8)
式中ρ為[0,1]區(qū)間的隨機(jī)數(shù)。
座頭鯨根據(jù)彼此位置隨機(jī)搜索,為保證鯨魚(yú)算法的全局搜索能力,設(shè)定隨機(jī)值A(chǔ)絕對(duì)值大于1,鯨魚(yú)根據(jù)最優(yōu)位置隨機(jī)搜索更新位置,數(shù)學(xué)模型如下:
D=|C·Xrand-X|
(9)
X(t+1)=Xrand-A·D
(10)
式中Xrand為從當(dāng)前種群中選擇的隨機(jī)位置。
基本鯨魚(yú)算法的數(shù)學(xué)模型主要由包圍、捕食和搜尋獵物3部分組成,對(duì)于該算法的改進(jìn)也主要從這3部分入手,通過(guò)設(shè)計(jì)混合算法[7],針對(duì)WOA算法容易陷入局部最優(yōu)的問(wèn)題,在包圍獵物階段引入小生境技術(shù)確定新的鯨魚(yú)群體,在融合小生境技術(shù)的初始鯨魚(yú)種群中,進(jìn)行鯨魚(yú)算法的運(yùn)算。
小生境技術(shù)是將種群中個(gè)體分布在不同生境中,利用種群的多樣性[8],通過(guò)共享機(jī)制比較生境間的距離,在設(shè)定的閾值下,對(duì)生境中適應(yīng)度較高的個(gè)體,提高適應(yīng)度值,保證個(gè)體的優(yōu)良性,并對(duì)適應(yīng)度低的個(gè)體,施加懲罰并更新,使其搜索其他區(qū)域?qū)ふ覞撛诘娜肿顑?yōu),以保證種群的多樣性[9]。
對(duì)于鯨魚(yú)個(gè)體Xi=(x1,x2,…,xn),i=1,2,…,n,定義它的小生境距離和共享函數(shù),給定共享函數(shù)sh(dij),計(jì)算小生境群體中個(gè)體間的距離,數(shù)學(xué)模型如下:
dij=|Xi-Xj|
(11)
個(gè)體x和y之間的共享函數(shù)如下:
(12)
式中δs為小生境共享半徑,dij<δs保證個(gè)體在小生境環(huán)境中。
調(diào)整后的適應(yīng)度值:
(13)
式中:fsi為網(wǎng)絡(luò)共享后的適應(yīng)度;fi為共享前的適應(yīng)度。
鯨魚(yú)優(yōu)化算法在位置更新過(guò)程中,不同階段鯨魚(yú)和獵物之間的影響程度存在差異,根據(jù)改進(jìn)蝗蟲(chóng)優(yōu)化算法[10]的啟發(fā)引入非線(xiàn)性參數(shù)ω作為當(dāng)前最優(yōu)位置的權(quán)重系數(shù),減小算法前期最優(yōu)鯨魚(yú)位置的影響,避免個(gè)體在最優(yōu)解附近移動(dòng),提升算法的局部開(kāi)發(fā)能力,算法后期,加大位置權(quán)重影響力,提升最優(yōu)位置對(duì)鯨魚(yú)個(gè)體的吸引力,提高算法收斂速度,對(duì)WOA位置更新式(2)進(jìn)行調(diào)整,定義如下:
(14)
改寫(xiě)后的位置公式為
X(t+1)=ωXn(t)-A·D
(15)
式中t為當(dāng)前迭代次數(shù)。
ω呈非線(xiàn)性遞增趨勢(shì),隨迭代次數(shù)增加而增加,即逐次提高迭代中最優(yōu)鯨魚(yú)位置的影響力,吸引種群中其他鯨魚(yú)。
算法流程步驟如下:
(1)首先,初始化鯨魚(yú)算法參數(shù),即鯨魚(yú)群規(guī)模、迭代次數(shù)等。
(2)劃定初始范圍,隨機(jī)產(chǎn)生鯨魚(yú)初始位置。
(3)在限定的小生境范圍內(nèi),根據(jù)式(11)計(jì)算個(gè)體間的距離,確定鯨魚(yú)群之間的距離。
(4)根據(jù)鯨魚(yú)優(yōu)化算法對(duì)小生境群體進(jìn)行更新,對(duì)于更新后的個(gè)體按照式(13)對(duì)第j個(gè)個(gè)體進(jìn)行適應(yīng)度更新,用新的適應(yīng)度對(duì)適應(yīng)度低的個(gè)體進(jìn)行懲罰。
(5)計(jì)算每個(gè)個(gè)體的適應(yīng)度值,保留最優(yōu)個(gè)體,組成新種群。
(6)根據(jù)式(3)~式(5)計(jì)算a、A和C。
(7)用加入自適應(yīng)權(quán)重的鯨魚(yú)位置公式更新位置。
(8)判斷是否到最大迭代次數(shù),若滿(mǎn)足則輸出最優(yōu)解結(jié)束,否則重復(fù)步驟(3)。
(9)輸出全局最優(yōu)解。
為了測(cè)試本文提出NWOA算法的有效性和優(yōu)越性,根據(jù)WOA算法原文中標(biāo)準(zhǔn)測(cè)試函數(shù)[1]和改進(jìn)鯨魚(yú)算法文獻(xiàn)[11]中通用標(biāo)準(zhǔn)測(cè)試函數(shù)選取8個(gè)不同類(lèi)型函數(shù)進(jìn)行測(cè)試,其中F1~F4為單峰函數(shù)(分析算法的尋優(yōu)能力和收斂速度),F(xiàn)5~F8為多峰函數(shù)(分析算法的跳出局部最優(yōu)能力和全局搜索能力),其名稱(chēng)、函數(shù)表達(dá)式、搜索維度、搜索區(qū)間和理論最優(yōu)值如表1所示。
表1 基準(zhǔn)測(cè)試函數(shù)
為保證基準(zhǔn)函數(shù)對(duì)算法測(cè)試的準(zhǔn)確性,確定相同迭代次數(shù)和種群數(shù)量,比較NWOA算法同其他改進(jìn)算法和傳統(tǒng)WOA算法以及粒子群算法(particle swarm optimization,PSO)[12]在8個(gè)基準(zhǔn)測(cè)試函數(shù)上各算法的收斂速度和尋優(yōu)能力。
在算法性能測(cè)試中,選取不同維度(30/300),分析NWOA算法性能,并選取文獻(xiàn)[5]中基于混沌搜索策略的鯨魚(yú)優(yōu)化算法 (CWOA)的數(shù)據(jù)、WOA算法和PSO算法作為對(duì)比,為保證實(shí)驗(yàn)公平性,確定相同參數(shù):鯨魚(yú)種群規(guī)模為35,最大迭代次數(shù)為900,分別將NWOA、CWOA、WOA和PSO算法進(jìn)行30次獨(dú)立測(cè)試,記錄并比較測(cè)試數(shù)據(jù)平均精度值和標(biāo)準(zhǔn)差值,結(jié)果如表2所示。
表2 算法性能比較
由表2可知,函數(shù)維度設(shè)置為30維和300維。低維度(dim=30)時(shí),單峰函數(shù)測(cè)試(F1~F4)和多峰函數(shù)測(cè)試(F5~F8)中,NWOA算法較其他3種算法均取得了較好的平均精度和標(biāo)準(zhǔn)差值,特別在函數(shù)F1和函數(shù)F2中,NWOA算法均收斂到理論最優(yōu)值0,函數(shù)F3中,NWOA算法優(yōu)于WOA和PSO算法,函數(shù)F5和函數(shù)F7中NWOA算法最優(yōu)解趨近于0;高維度(dim=300)時(shí),8組測(cè)試函數(shù)中,NWOA算法收斂速度較其他算法均有明顯提升。
圖2為粒子群算法(PSO)、傳統(tǒng)WOA算法、CWOA算法和NWOA算法在高維度(300維)下的收斂曲線(xiàn)對(duì)比圖,從圖2可以看出NWOA算法的收斂速度普遍比其他3種算法快,這是由于引入小生境初始化種群在迭代初期確定更優(yōu)搜索種群空間和加入自適應(yīng)參數(shù)使算法在迭代過(guò)程中更快收斂。
圖2(a)~圖2(d)為對(duì)應(yīng)F1-F4單峰測(cè)試函數(shù)圖形,隨迭代次數(shù)增加NWOA算法收斂速度和尋優(yōu)精度明顯優(yōu)于WOA算法和PSO算法;圖2(e)~圖2(h)為對(duì)應(yīng)F5-F8多峰測(cè)試函數(shù)圖形,與CWOA算法、WOA算法和PSO算法相比,NWOA算法在迭代過(guò)程中多次跳出局部最優(yōu)解,尋求全局最優(yōu)解,收斂速度上,在8組測(cè)試函數(shù)中均表現(xiàn)不錯(cuò),雖然傳統(tǒng)WOA算法和PSO算法也存在跳出局部最優(yōu)解的能力,但由于算法本身的缺陷,其全局搜索能力和收斂速度較NWOA算法有一定差距,很容易陷入局部最優(yōu)解。
(a)函數(shù)F1
綜上所述,針對(duì)傳統(tǒng)WOA算法收斂速度慢、尋優(yōu)精度低等問(wèn)題,本文提出的引入自適應(yīng)參數(shù)和小生境技術(shù)的改進(jìn)鯨魚(yú)優(yōu)化算法有效地提高了算法的尋優(yōu)精度和收斂速度,不僅與傳統(tǒng)PSO算法比較有明顯提高,而且相較于較新的改進(jìn)算法,仍有不錯(cuò)的優(yōu)勢(shì)。
鯨魚(yú)算法作為一種新型群智能算法,在許多領(lǐng)域都是研究的熱點(diǎn)。WOA同其他智能算法一樣都存在收斂速度慢、易陷入局部最優(yōu)的問(wèn)題,本文通過(guò)引入小生境技術(shù)對(duì)傳統(tǒng)鯨魚(yú)算法進(jìn)行改進(jìn),仿真結(jié)果表明,改進(jìn)的算法在一定程度上提升了算法的全局搜索能力和收斂速度。同其他算法對(duì)比也有明顯優(yōu)勢(shì),證明了NWOA算法有一定的優(yōu)勢(shì)。