李梓成,代永強(qiáng)
(1.甘肅農(nóng)業(yè)大學(xué) 理學(xué)院,甘肅 蘭州 730070;2.甘肅農(nóng)業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,甘肅 蘭州 730070)
探究問題的最佳處理方案,一直是大數(shù)據(jù)、人工智能等多個(gè)學(xué)科的焦點(diǎn)問題。通過對(duì)自然界各種現(xiàn)象的觀察,研發(fā)者們提出了許多群智能優(yōu)化算法,如灰狼算法[1](grey wolf optimization,GWO)、粒子群優(yōu)化算法[2](particle swarm optimization,PSO)、蝙蝠優(yōu)化算法[3](bat algorithm,BA)。還有基于統(tǒng)計(jì)學(xué)原理的分布估計(jì)算法[4](estimation of distribution algorithm,EDA)等,為復(fù)雜函數(shù)優(yōu)化問題提供了強(qiáng)有力的解決方法。
鯨魚優(yōu)化算法(whale optimization algorithm,WOA)是由學(xué)者M(jìn)irjalili等通過觀察座頭鯨群體的覓食行為并采取了一系列的分析之后于2016年提出的,該算法需要設(shè)置的參數(shù)少,操作簡(jiǎn)潔并且尋優(yōu)性能強(qiáng)。目前已被成功應(yīng)用于云上資源調(diào)度[5]、選址路徑規(guī)劃[6]、電力系統(tǒng)最優(yōu)潮流[7]、工業(yè)設(shè)計(jì)[8]、工程領(lǐng)域[9]等問題的求解之中。但同時(shí)也無法避免地存在群智能算法的通病,如收斂速度慢、收斂精度低和容易陷入局部最優(yōu)等問題。針對(duì)上述問題,國(guó)內(nèi)外許多學(xué)者提出諸多解決方法。如龍文[10]將反向?qū)W習(xí)策略應(yīng)用到初始化種群階段,將非線性收斂因子和最優(yōu)個(gè)體變異策略應(yīng)用到算法尋優(yōu)階段,提升了算法的尋優(yōu)性能;王堅(jiān)浩等[11]提出將混沌搜索策略應(yīng)用到鯨魚優(yōu)化算法,提高了算法的收斂精度和魯棒性;孔芝等[12]通過對(duì)算法尋優(yōu)公式添加自適應(yīng)權(quán)重因子策略,提高了算法跳出局部最優(yōu)的能力;李安東等[13]采取卡方分布的逆累計(jì)分布函數(shù)更新收斂因子,利用改進(jìn)氏族拓?fù)浣Y(jié)構(gòu)強(qiáng)化種群全局搜索能力再結(jié)合貪婪策略保留最優(yōu)解,提高了算法的收斂精度和收斂速度。
該文提出一種基于反向?qū)W習(xí)和高斯隨機(jī)游走策略的鯨魚優(yōu)化算法。首先,將反向?qū)αW(xué)習(xí)策略應(yīng)用到初始化種群階段,提升了種群復(fù)雜度,為后續(xù)步驟打下了堅(jiān)實(shí)的基礎(chǔ)。然后,將高斯隨機(jī)游走策略應(yīng)用到算法局部尋優(yōu)階段,通過引導(dǎo)當(dāng)前種群最優(yōu)個(gè)體,進(jìn)而生成新的隨機(jī)種群,避免了算法過早陷入局部最優(yōu)的陷阱。
鯨魚優(yōu)化算法是Mirjalili等人針對(duì)座頭鯨的覓食行為,從數(shù)學(xué)上構(gòu)建的鯨魚優(yōu)化模型,該模型具體定義如下:假設(shè)在d維搜索空間中有n只鯨魚個(gè)體,則迭代第t次的第i只個(gè)體表示為:
其中,tmax為最大迭代次數(shù)。該算法包括三種搜索機(jī)制:環(huán)繞包圍獵物和水泡網(wǎng)攻擊實(shí)現(xiàn)算法的局部搜索,以及隨機(jī)學(xué)習(xí)機(jī)制實(shí)現(xiàn)算法的全局搜索。
該過程是模仿座頭鯨發(fā)現(xiàn)并包圍獵物的行為,具體更新公式表示為:
X(t+1)=X∧(t)-A*|C*X∧(t)-X(t)|
(1)
式中,X∧(t)表示當(dāng)前最優(yōu)個(gè)體的位置信息;X(t)表示當(dāng)前個(gè)體的位置信息;t表示迭代次數(shù);A和C是可變化的系數(shù),可以表示為:
A=2ar1-a
(2)
C=2*r2
(3)
(4)
式中,a是一個(gè)迭代次數(shù)變化的參數(shù);r1和r2是[0,1]之間的隨機(jī)數(shù);Tmax為最大迭代次數(shù)。
通過觀察座頭鯨用水泡網(wǎng)包圍獵物,并采用螺旋式運(yùn)動(dòng)來接近獵物,更新公式為:
X(t+1)=X∧(t)+(X∧(t)-X(t))*
eblcos(2πl(wèi))
(5)
式中,X∧(t)-X(t)為座頭鯨和獵物之間的距離;b為常數(shù);l為[-1,1]之間的隨機(jī)數(shù)。座頭鯨在兩種攻擊獵物的方式之間隨機(jī)切換,表示如下:
X(t+1)=
(6)
式中,p為[0,1]之間的隨機(jī)數(shù)。
該機(jī)制是通過隨機(jī)改變鯨魚位置進(jìn)行學(xué)習(xí),更新個(gè)體位置,具體公式表示為:
X(t+1)=Xround(t)-A*|C*X∧(t)-X(t)|
(7)
式中,Xround(t)為當(dāng)前種群個(gè)體中隨機(jī)選取的一個(gè)位置信息;X(t)是當(dāng)前種群個(gè)體位置信息。
鯨魚優(yōu)化算法尋優(yōu)過程中,初始化種群對(duì)算法的收斂速度具有至關(guān)重要的作用,通過反向?qū)W習(xí)策略對(duì)初始化種群進(jìn)行優(yōu)化,能夠有效提升種群復(fù)雜度;隨著迭代過程的進(jìn)行,參數(shù)|A|小于1的概率提升,算法開始進(jìn)入包圍圈內(nèi)尋優(yōu)。根據(jù)原算法的更新公式,當(dāng)前個(gè)體僅向當(dāng)前最優(yōu)個(gè)體移動(dòng),易陷入局部最優(yōu)。通過增加高斯隨機(jī)游走策略更新個(gè)體位置信息,通過仿真實(shí)驗(yàn)?zāi)苊黠@觀察到算法尋優(yōu)性能的提升。
算法的收斂速度與初始種群個(gè)體和當(dāng)前領(lǐng)導(dǎo)者之間的位置信息有關(guān),如果初始個(gè)體在種群領(lǐng)導(dǎo)者附近出現(xiàn),那么在本次迭代過程中,種群收斂速度會(huì)得到明顯提升。隨機(jī)產(chǎn)生的個(gè)體由于不能掌控其位置信息,所以對(duì)其收斂速度不能把握。但是,若同時(shí)考慮當(dāng)前個(gè)體和反向個(gè)體,那么這兩個(gè)個(gè)體更貼近當(dāng)前領(lǐng)導(dǎo)者的概率是相等的,挑選其中與領(lǐng)導(dǎo)者距離更近的個(gè)體作為初始個(gè)體,那就代表每個(gè)個(gè)體都距領(lǐng)導(dǎo)者更近一步了。初始種群的質(zhì)量高低直接影響算法后續(xù)的迭代過程的好與壞,高質(zhì)量的種群可以有效提高迭代過程的收斂速度和收斂精度。學(xué)者何慶等[14]將凸透鏡成像的反向精英學(xué)習(xí)策略應(yīng)用在黑猩猩優(yōu)化算法,對(duì)最優(yōu)個(gè)體產(chǎn)生反向個(gè)體。由于WOA算法中初始化種群是依據(jù)隨機(jī)數(shù)生成的,并不能保證初始化種群的質(zhì)量,為了使WOA算法更好地進(jìn)行后續(xù)迭代,避免因初始種群質(zhì)量過低而導(dǎo)致收斂速度慢及陷入早熟現(xiàn)象,該文將孟磊[15]的二次反向?qū)W習(xí)策略運(yùn)用到WOA算法的初始化種群中,提高初始化種群的質(zhì)量。具體概念如下:
定義1(反向點(diǎn)):
設(shè)區(qū)間[lb,ub]上存在任意實(shí)數(shù)y,它的反向點(diǎn)yo為:
yo=lb+ub-y
(8)
(9)
定義2(二次反向點(diǎn)):
設(shè)區(qū)間[lb,ub]上存在任意實(shí)數(shù)y,它的反向點(diǎn)為yo,那么,它的二次反向點(diǎn)yqo為:
yqo=rand[ym,yo]
(10)
其中,ym=(lb+ub)/2,rand[ym,yo]為ym和yo之間隨機(jī)生成的數(shù)。
(11)
采取二次反向?qū)W習(xí)策略初始化種群步驟如下:
(1)通過隨機(jī)策略生成初始化鯨魚種群X,計(jì)算種群X的個(gè)體適應(yīng)度。
(2)運(yùn)用二次反向?qū)W習(xí)策略生成種群X的反向種群X*,并計(jì)算種群X*的個(gè)體適應(yīng)度。
(3)對(duì)每個(gè)點(diǎn)及其反向點(diǎn)的適應(yīng)度值進(jìn)行比較,適應(yīng)度值低的保留,同時(shí)記錄初始種群最優(yōu)個(gè)體位置信息。
由上可知,該策略通過二次反向?qū)W習(xí),擴(kuò)大可行解的范圍,從而提升了初始化種群的空間多樣性和質(zhì)量,為后續(xù)迭代過程提供高質(zhì)量的初始種群。
作為隨機(jī)游走模型中的經(jīng)典模型,高斯隨機(jī)游走模型具有優(yōu)秀的開發(fā)能力。因此,針對(duì)WOA算法后期易陷入局部最優(yōu),該文將高斯隨機(jī)游走策略應(yīng)用到WOA算法的局部尋優(yōu)位置,利用高斯隨機(jī)游走的特點(diǎn),通過當(dāng)前種群領(lǐng)導(dǎo)者引導(dǎo),產(chǎn)生新的隨機(jī)種群。下式為策略方程:
(12)
(13)
從式(13)中可以看出,通過對(duì)當(dāng)前種群領(lǐng)導(dǎo)者進(jìn)行引導(dǎo),在種群領(lǐng)導(dǎo)者附近產(chǎn)生新的種群,對(duì)算法快速收斂有著至關(guān)重要的作用;同時(shí)方差σ為一個(gè)自適應(yīng)值,該公式使得算法在前期具有較大的σ值,為尋找最優(yōu)解創(chuàng)造更多可能性,提升了跳出局部最優(yōu)的能力。到了算法后期具有較小的σ值,算法波動(dòng)幅度變小,增強(qiáng)了算法的局部尋優(yōu)能力。
2.3.1 算法步驟
(1)確定種群個(gè)數(shù)N,最大迭代次數(shù)Tmax,空間維度dim,螺旋形狀常數(shù)b=1,隨機(jī)常數(shù)l,r1,r2,r3,r4等算法參數(shù);
(2)在函數(shù)可行解范圍隨機(jī)產(chǎn)生初始化種群個(gè)體,并計(jì)算個(gè)體適應(yīng)度值;
(3)采用二次反向?qū)W習(xí)策略優(yōu)化初始化種群,計(jì)算反向之后的個(gè)體適應(yīng)度值,并與原個(gè)體適應(yīng)度值進(jìn)行比較,保留較優(yōu)值,同時(shí)記錄當(dāng)前種群最優(yōu)位置信息;
(4)根據(jù)參數(shù)值選擇不同階段進(jìn)行個(gè)體位置更新,當(dāng)p<0.5時(shí),若|A|≥1,則通過式(7)更新鯨魚個(gè)體位置;若|A|<1,則通過式(12)更新鯨魚個(gè)體位置信息,并計(jì)算個(gè)體相應(yīng)的適應(yīng)度值;
(5)當(dāng)p≥0.5時(shí),通過式(5)更新鯨魚個(gè)體位置信息,并計(jì)算個(gè)體相應(yīng)的適應(yīng)度值;
(6)判斷是否達(dá)到最大迭代次數(shù),若滿足條件,算法迭代過程結(jié)束,輸出最優(yōu)個(gè)體位置和適應(yīng)度函數(shù)值,否則返回步驟(4)繼續(xù)優(yōu)化搜索。
2.3.2 偽代碼
初始化各參數(shù)SearchAgents_no,dim,Tmax,適應(yīng)度函數(shù)f(x),生成初始化種群X并制定反向?qū)W習(xí)策略,生成反向種群X*。
t=1
whilet foriin range(0,SearchAgents_no): forjin range(dim): 檢查種群X和X*是否超過邊界 計(jì)算種群X和X*的適應(yīng)度值fitness1和fitness2 if fitness2 fitness = fitness2 else: fitness=fitness1 if fitness Leader_score=fitness 根據(jù)公式(4)計(jì)算a值 foriin range(0,SearchAgents_no): 初始化參數(shù)r1,r2,r3,r4,b,p,l。根據(jù)公式(2)、(3)計(jì)算A、C值 forjin range(dim): ifp<0.5: if |A|≥1: 由公式(7)更新鯨魚位置 elif |A|<1: 由公式(13)計(jì)算sigma值 根據(jù)公式(12)更新鯨魚位置 elifp≥0.5: 根據(jù)公式(15)更新鯨魚位置 輸出最優(yōu)種群適應(yīng)度Leader_score ift% 1==0: print('在第t代,種群最優(yōu)適應(yīng)度值為L(zhǎng)eader_score') t=t+1 為充分驗(yàn)證GFWOA算法的尋優(yōu)能力,將其與灰狼算法(GWO)[1]、粒子群算法(PSO)[2]、螢火蟲算法(FA)[16]、麻雀搜索算法(SSA)[17]、飛蛾撲火算法(MFO)[18]進(jìn)行對(duì)比。實(shí)驗(yàn)維度如表中D所示,種群規(guī)模設(shè)定為50,并進(jìn)行30次獨(dú)立重復(fù)實(shí)驗(yàn)。測(cè)試函數(shù)見表1。其中F1~F7為單峰測(cè)試函數(shù),主要測(cè)試算法的尋優(yōu)性能;F8~F12為多峰測(cè)試函數(shù),主要測(cè)試算法跳出局部最優(yōu)的能力;F13~F18為低維多峰測(cè)試函數(shù),主要測(cè)試算法在低維度下跳出局部最優(yōu)的能力以及尋優(yōu)性能。該文采用python3.9進(jìn)行仿真,運(yùn)行環(huán)境為Intel(R)Core(TM)i5-7200U處理器,12G內(nèi)存,操作系統(tǒng)為Windows10(64)位。 表1 基準(zhǔn)測(cè)試函數(shù) 續(xù)表1 由表2數(shù)據(jù)可知,在單峰函數(shù)F1~F5,F(xiàn)7測(cè)試中,GFWOA雖未達(dá)到理論最優(yōu)值,但是相較于其他算法收斂精度亦或穩(wěn)定性有顯著提升,且GFWOA取得了最優(yōu)的平均值和方差,體現(xiàn)了改進(jìn)策略對(duì)算法尋優(yōu)能力的提升。在單峰函數(shù)F6測(cè)試中,麻雀搜索算法(SSA)表現(xiàn)最優(yōu),GFWOA表現(xiàn)雖然不是最優(yōu)的,但是也明顯強(qiáng)于另外幾種優(yōu)化算法。在多峰函數(shù)測(cè)試中,GFWOA在測(cè)試函數(shù)F9和F10均找到理論最優(yōu)值,并且標(biāo)準(zhǔn)差也為0,突出表現(xiàn)了GFWOA算法較強(qiáng)的局部和全局協(xié)調(diào)開發(fā)能力,較好的穩(wěn)定性,證明改進(jìn)策略對(duì)WOA算法尋優(yōu)能力的顯著提升起到了積極作用。在函數(shù)F16~F18測(cè)試中,GFWOA同樣達(dá)到了理論最優(yōu)值,并且標(biāo)準(zhǔn)差也是對(duì)比算法中最小的。在其他多峰函數(shù)的測(cè)試中,GFWOA表現(xiàn)雖然不是最優(yōu),但是其綜合能力依然處于前列。 表2 仿真實(shí)驗(yàn)結(jié)果 續(xù)表2 另一方面,為了探究改進(jìn)策略對(duì)算法收斂速度的影響,該文畫出了上述算法在部分測(cè)試函數(shù)(F1,F5,F11,F18)上的收斂圖,橫坐標(biāo)為迭代次數(shù),縱坐標(biāo)中對(duì)函數(shù)值為正值的做取對(duì)數(shù)處理。具體分析如下:在單峰函數(shù)中,由圖1中b初始種群適應(yīng)度可知,精英反向策略顯著提高了初始種群的質(zhì)量,奠定了后續(xù)種群快速迭代的基礎(chǔ);由圖1中a可知,在迭代中期,GFWOA收斂速度相較于比較算法是最快的。在多峰函數(shù)中,由圖1中b可以看出,GFWOA在一開始便能找到較為優(yōu)秀的初始值,并且未像其他算法一樣重復(fù)陷入局部最優(yōu)陷阱,收斂速度也比其他算法更快。在迭代初期,無論是單峰還是多峰函數(shù),GFWOA相較于對(duì)比算法,總能一開始便達(dá)到較高的精度(如圖1中b,c),充分驗(yàn)證了改進(jìn)策略對(duì)WOA算法尋優(yōu)性能的顯著提升。在迭代中期,GFWOA在某些函數(shù)上能保持一定的速度繼續(xù)提升精度(如圖1中a,d),算法跳出局部最優(yōu)的能力顯著提升。在迭代后期,GFWOA除了在少數(shù)函數(shù)(如圖1中c)上比某些算法稍差一點(diǎn),其余均表現(xiàn)為最優(yōu),也體現(xiàn)了改進(jìn)之后的GFWOA具有優(yōu)越的性能。 圖1 與其他算法比較收斂圖 僅僅通過平均值和方差的簡(jiǎn)單比較來判斷算法之間的性能顯得過于草率,為了充分驗(yàn)證GFWOA算法的優(yōu)越性能,該文采用弗里德曼秩檢驗(yàn),實(shí)驗(yàn)設(shè)定顯著性差異為5%,當(dāng)p值低于該顯著性水平時(shí),就判定該測(cè)試函數(shù)上兩個(gè)算法存在顯著差異。 弗里德曼檢驗(yàn)是多個(gè)相關(guān)樣本奇一性檢驗(yàn),通過弗里德曼檢驗(yàn)可以得出檢驗(yàn)樣本是否來自同一個(gè)總體,應(yīng)用于算法上,即為所檢驗(yàn)的算法是否存在顯著差異。此檢驗(yàn)原假設(shè)H0=GFWOA,PSO,FA,GWO,MFO,SSA來自大小沒有明顯差異的總體,即這些算法性能沒有明顯區(qū)別。H1=GFWOA,PSO,FA,GWO,MFO,SSA來自大小有明顯差異的總體,即這些算法性能有明顯區(qū)別。表3為GFWOA與其他算法之間的兩兩比較詳細(xì)內(nèi)容。 表3 假設(shè)檢驗(yàn) 續(xù)表3 由表3數(shù)據(jù)可知,大部分p值小于0.05,說明算法之間確實(shí)存在差異,且從表中數(shù)據(jù)可知,GFWOA在均值和方差方面均優(yōu)于對(duì)比算法,由此可知,GFWOA算法對(duì)比其他算法具有更好的優(yōu)越性。 針對(duì)傳統(tǒng)WOA算法具有收斂速度慢、易于陷入局部最優(yōu)等問題,提出一種基于反向?qū)W習(xí)和高斯隨機(jī)游走策略改進(jìn)的鯨魚優(yōu)化算法。首先,通過引入二次反向?qū)W習(xí)策略,提高了初始種群質(zhì)量。然后,通過引入高斯隨機(jī)游走策略到鯨魚的局部尋優(yōu)環(huán)節(jié),增強(qiáng)了WOA算法跳出局部最優(yōu)能力,加快了收斂速度。為驗(yàn)證GFWOA算法可行性以及性能,與其他智能優(yōu)化算法進(jìn)行比較,通過對(duì)18個(gè)常用測(cè)試函數(shù)進(jìn)行仿真實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行FRIENMEN統(tǒng)計(jì)檢驗(yàn),驗(yàn)證了GFWOA算法具有優(yōu)越的尋優(yōu)性能。3 仿真實(shí)驗(yàn)與分析
3.1 與其他算法比較
3.2 假設(shè)檢驗(yàn)
4 結(jié)束語