李梓成,代永強
(1.甘肅農業大學 理學院,甘肅 蘭州 730070;2.甘肅農業大學 信息科學技術學院,甘肅 蘭州 730070)
探究問題的最佳處理方案,一直是大數據、人工智能等多個學科的焦點問題。通過對自然界各種現象的觀察,研發者們提出了許多群智能優化算法,如灰狼算法[1](grey wolf optimization,GWO)、粒子群優化算法[2](particle swarm optimization,PSO)、蝙蝠優化算法[3](bat algorithm,BA)。還有基于統計學原理的分布估計算法[4](estimation of distribution algorithm,EDA)等,為復雜函數優化問題提供了強有力的解決方法。
鯨魚優化算法(whale optimization algorithm,WOA)是由學者Mirjalili等通過觀察座頭鯨群體的覓食行為并采取了一系列的分析之后于2016年提出的,該算法需要設置的參數少,操作簡潔并且尋優性能強。目前已被成功應用于云上資源調度[5]、選址路徑規劃[6]、電力系統最優潮流[7]、工業設計[8]、工程領域[9]等問題的求解之中。但同時也無法避免地存在群智能算法的通病,如收斂速度慢、收斂精度低和容易陷入局部最優等問題。針對上述問題,國內外許多學者提出諸多解決方法。如龍文[10]將反向學習策略應用到初始化種群階段,將非線性收斂因子和最優個體變異策略應用到算法尋優階段,提升了算法的尋優性能;王堅浩等[11]提出將混沌搜索策略應用到鯨魚優化算法,提高了算法的收斂精度和魯棒性;孔芝等[12]通過對算法尋優公式添加自適應權重因子策略,提高了算法跳出局部最優的能力;李安東等[13]采取卡方分布的逆累計分布函數更新收斂因子,利用改進氏族拓撲結構強化種群全局搜索能力再結合貪婪策略保留最優解,提高了算法的收斂精度和收斂速度。
該文提出一種基于反向學習和高斯隨機游走策略的鯨魚優化算法。首先,將反向對立學習策略應用到初始化種群階段,提升了種群復雜度,為后續步驟打下了堅實的基礎。然后,將高斯隨機游走策略應用到算法局部尋優階段,通過引導當前種群最優個體,進而生成新的隨機種群,避免了算法過早陷入局部最優的陷阱。
鯨魚優化算法是Mirjalili等人針對座頭鯨的覓食行為,從數學上構建的鯨魚優化模型,該模型具體定義如下:假設在d維搜索空間中有n只鯨魚個體,則迭代第t次的第i只個體表示為:
其中,tmax為最大迭代次數。該算法包括三種搜索機制:環繞包圍獵物和水泡網攻擊實現算法的局部搜索,以及隨機學習機制實現算法的全局搜索。
該過程是模仿座頭鯨發現并包圍獵物的行為,具體更新公式表示為:
X(t+1)=X∧(t)-A*|C*X∧(t)-X(t)|
(1)
式中,X∧(t)表示當前最優個體的位置信息;X(t)表示當前個體的位置信息;t表示迭代次數;A和C是可變化的系數,可以表示為:
A=2ar1-a
(2)
C=2*r2
(3)
(4)
式中,a是一個迭代次數變化的參數;r1和r2是[0,1]之間的隨機數;Tmax為最大迭代次數。
通過觀察座頭鯨用水泡網包圍獵物,并采用螺旋式運動來接近獵物,更新公式為:
X(t+1)=X∧(t)+(X∧(t)-X(t))*
eblcos(2πl)
(5)
式中,X∧(t)-X(t)為座頭鯨和獵物之間的距離;b為常數;l為[-1,1]之間的隨機數。座頭鯨在兩種攻擊獵物的方式之間隨機切換,表示如下:
X(t+1)=
(6)
式中,p為[0,1]之間的隨機數。
該機制是通過隨機改變鯨魚位置進行學習,更新個體位置,具體公式表示為:
X(t+1)=Xround(t)-A*|C*X∧(t)-X(t)|
(7)
式中,Xround(t)為當前種群個體中隨機選取的一個位置信息;X(t)是當前種群個體位置信息。
鯨魚優化算法尋優過程中,初始化種群對算法的收斂速度具有至關重要的作用,通過反向學習策略對初始化種群進行優化,能夠有效提升種群復雜度;隨著迭代過程的進行,參數|A|小于1的概率提升,算法開始進入包圍圈內尋優。根據原算法的更新公式,當前個體僅向當前最優個體移動,易陷入局部最優。通過增加高斯隨機游走策略更新個體位置信息,通過仿真實驗能明顯觀察到算法尋優性能的提升。
算法的收斂速度與初始種群個體和當前領導者之間的位置信息有關,如果初始個體在種群領導者附近出現,那么在本次迭代過程中,種群收斂速度會得到明顯提升。隨機產生的個體由于不能掌控其位置信息,所以對其收斂速度不能把握。但是,若同時考慮當前個體和反向個體,那么這兩個個體更貼近當前領導者的概率是相等的,挑選其中與領導者距離更近的個體作為初始個體,那就代表每個個體都距領導者更近一步了。初始種群的質量高低直接影響算法后續的迭代過程的好與壞,高質量的種群可以有效提高迭代過程的收斂速度和收斂精度。學者何慶等[14]將凸透鏡成像的反向精英學習策略應用在黑猩猩優化算法,對最優個體產生反向個體。由于WOA算法中初始化種群是依據隨機數生成的,并不能保證初始化種群的質量,為了使WOA算法更好地進行后續迭代,避免因初始種群質量過低而導致收斂速度慢及陷入早熟現象,該文將孟磊[15]的二次反向學習策略運用到WOA算法的初始化種群中,提高初始化種群的質量。具體概念如下:
定義1(反向點):
設區間[lb,ub]上存在任意實數y,它的反向點yo為:
yo=lb+ub-y
(8)

(9)
定義2(二次反向點):
設區間[lb,ub]上存在任意實數y,它的反向點為yo,那么,它的二次反向點yqo為:
yqo=rand[ym,yo]
(10)
其中,ym=(lb+ub)/2,rand[ym,yo]為ym和yo之間隨機生成的數。

(11)

采取二次反向學習策略初始化種群步驟如下:
(1)通過隨機策略生成初始化鯨魚種群X,計算種群X的個體適應度。
(2)運用二次反向學習策略生成種群X的反向種群X*,并計算種群X*的個體適應度。
(3)對每個點及其反向點的適應度值進行比較,適應度值低的保留,同時記錄初始種群最優個體位置信息。
由上可知,該策略通過二次反向學習,擴大可行解的范圍,從而提升了初始化種群的空間多樣性和質量,為后續迭代過程提供高質量的初始種群。
作為隨機游走模型中的經典模型,高斯隨機游走模型具有優秀的開發能力。因此,針對WOA算法后期易陷入局部最優,該文將高斯隨機游走策略應用到WOA算法的局部尋優位置,利用高斯隨機游走的特點,通過當前種群領導者引導,產生新的隨機種群。下式為策略方程:
(12)

(13)
從式(13)中可以看出,通過對當前種群領導者進行引導,在種群領導者附近產生新的種群,對算法快速收斂有著至關重要的作用;同時方差σ為一個自適應值,該公式使得算法在前期具有較大的σ值,為尋找最優解創造更多可能性,提升了跳出局部最優的能力。到了算法后期具有較小的σ值,算法波動幅度變小,增強了算法的局部尋優能力。
2.3.1 算法步驟
(1)確定種群個數N,最大迭代次數Tmax,空間維度dim,螺旋形狀常數b=1,隨機常數l,r1,r2,r3,r4等算法參數;
(2)在函數可行解范圍隨機產生初始化種群個體,并計算個體適應度值;
(3)采用二次反向學習策略優化初始化種群,計算反向之后的個體適應度值,并與原個體適應度值進行比較,保留較優值,同時記錄當前種群最優位置信息;
(4)根據參數值選擇不同階段進行個體位置更新,當p<0.5時,若|A|≥1,則通過式(7)更新鯨魚個體位置;若|A|<1,則通過式(12)更新鯨魚個體位置信息,并計算個體相應的適應度值;
(5)當p≥0.5時,通過式(5)更新鯨魚個體位置信息,并計算個體相應的適應度值;
(6)判斷是否達到最大迭代次數,若滿足條件,算法迭代過程結束,輸出最優個體位置和適應度函數值,否則返回步驟(4)繼續優化搜索。
2.3.2 偽代碼
初始化各參數SearchAgents_no,dim,Tmax,適應度函數f(x),生成初始化種群X并制定反向學習策略,生成反向種群X*。
t=1
whilet foriin range(0,SearchAgents_no): forjin range(dim): 檢查種群X和X*是否超過邊界 計算種群X和X*的適應度值fitness1和fitness2 if fitness2 fitness = fitness2 else: fitness=fitness1 if fitness Leader_score=fitness 根據公式(4)計算a值 foriin range(0,SearchAgents_no): 初始化參數r1,r2,r3,r4,b,p,l。根據公式(2)、(3)計算A、C值 forjin range(dim): ifp<0.5: if |A|≥1: 由公式(7)更新鯨魚位置 elif |A|<1: 由公式(13)計算sigma值 根據公式(12)更新鯨魚位置 elifp≥0.5: 根據公式(15)更新鯨魚位置 輸出最優種群適應度Leader_score ift% 1==0: print('在第t代,種群最優適應度值為Leader_score') t=t+1 為充分驗證GFWOA算法的尋優能力,將其與灰狼算法(GWO)[1]、粒子群算法(PSO)[2]、螢火蟲算法(FA)[16]、麻雀搜索算法(SSA)[17]、飛蛾撲火算法(MFO)[18]進行對比。實驗維度如表中D所示,種群規模設定為50,并進行30次獨立重復實驗。測試函數見表1。其中F1~F7為單峰測試函數,主要測試算法的尋優性能;F8~F12為多峰測試函數,主要測試算法跳出局部最優的能力;F13~F18為低維多峰測試函數,主要測試算法在低維度下跳出局部最優的能力以及尋優性能。該文采用python3.9進行仿真,運行環境為Intel(R)Core(TM)i5-7200U處理器,12G內存,操作系統為Windows10(64)位。 表1 基準測試函數 續表1 由表2數據可知,在單峰函數F1~F5,F7測試中,GFWOA雖未達到理論最優值,但是相較于其他算法收斂精度亦或穩定性有顯著提升,且GFWOA取得了最優的平均值和方差,體現了改進策略對算法尋優能力的提升。在單峰函數F6測試中,麻雀搜索算法(SSA)表現最優,GFWOA表現雖然不是最優的,但是也明顯強于另外幾種優化算法。在多峰函數測試中,GFWOA在測試函數F9和F10均找到理論最優值,并且標準差也為0,突出表現了GFWOA算法較強的局部和全局協調開發能力,較好的穩定性,證明改進策略對WOA算法尋優能力的顯著提升起到了積極作用。在函數F16~F18測試中,GFWOA同樣達到了理論最優值,并且標準差也是對比算法中最小的。在其他多峰函數的測試中,GFWOA表現雖然不是最優,但是其綜合能力依然處于前列。 表2 仿真實驗結果 續表2 另一方面,為了探究改進策略對算法收斂速度的影響,該文畫出了上述算法在部分測試函數(F1,F5,F11,F18)上的收斂圖,橫坐標為迭代次數,縱坐標中對函數值為正值的做取對數處理。具體分析如下:在單峰函數中,由圖1中b初始種群適應度可知,精英反向策略顯著提高了初始種群的質量,奠定了后續種群快速迭代的基礎;由圖1中a可知,在迭代中期,GFWOA收斂速度相較于比較算法是最快的。在多峰函數中,由圖1中b可以看出,GFWOA在一開始便能找到較為優秀的初始值,并且未像其他算法一樣重復陷入局部最優陷阱,收斂速度也比其他算法更快。在迭代初期,無論是單峰還是多峰函數,GFWOA相較于對比算法,總能一開始便達到較高的精度(如圖1中b,c),充分驗證了改進策略對WOA算法尋優性能的顯著提升。在迭代中期,GFWOA在某些函數上能保持一定的速度繼續提升精度(如圖1中a,d),算法跳出局部最優的能力顯著提升。在迭代后期,GFWOA除了在少數函數(如圖1中c)上比某些算法稍差一點,其余均表現為最優,也體現了改進之后的GFWOA具有優越的性能。 圖1 與其他算法比較收斂圖 僅僅通過平均值和方差的簡單比較來判斷算法之間的性能顯得過于草率,為了充分驗證GFWOA算法的優越性能,該文采用弗里德曼秩檢驗,實驗設定顯著性差異為5%,當p值低于該顯著性水平時,就判定該測試函數上兩個算法存在顯著差異。 弗里德曼檢驗是多個相關樣本奇一性檢驗,通過弗里德曼檢驗可以得出檢驗樣本是否來自同一個總體,應用于算法上,即為所檢驗的算法是否存在顯著差異。此檢驗原假設H0=GFWOA,PSO,FA,GWO,MFO,SSA來自大小沒有明顯差異的總體,即這些算法性能沒有明顯區別。H1=GFWOA,PSO,FA,GWO,MFO,SSA來自大小有明顯差異的總體,即這些算法性能有明顯區別。表3為GFWOA與其他算法之間的兩兩比較詳細內容。 表3 假設檢驗 續表3 由表3數據可知,大部分p值小于0.05,說明算法之間確實存在差異,且從表中數據可知,GFWOA在均值和方差方面均優于對比算法,由此可知,GFWOA算法對比其他算法具有更好的優越性。 針對傳統WOA算法具有收斂速度慢、易于陷入局部最優等問題,提出一種基于反向學習和高斯隨機游走策略改進的鯨魚優化算法。首先,通過引入二次反向學習策略,提高了初始種群質量。然后,通過引入高斯隨機游走策略到鯨魚的局部尋優環節,增強了WOA算法跳出局部最優能力,加快了收斂速度。為驗證GFWOA算法可行性以及性能,與其他智能優化算法進行比較,通過對18個常用測試函數進行仿真實驗,并對實驗結果進行FRIENMEN統計檢驗,驗證了GFWOA算法具有優越的尋優性能。3 仿真實驗與分析
3.1 與其他算法比較





3.2 假設檢驗


4 結束語