郭振洲,郝亞茹,拱長青
(沈陽航空航天大學計算機學院,遼寧 沈陽 110136)
2016年澳大利亞學者Mirjalili通過觀察座頭鯨捕食,提出了鯨魚優化算法(WOA)[1]。該算法的主要思想是通過模仿座頭鯨的捕食行為實現對目標問題求解。鯨魚優化算法具有調節參數少,原理簡單便于編程實現的優點,該算法自提出后受到研究學者廣泛的關注,許多改進算法相繼被提出。例如:Ling[2]提出了基于levy飛行的鯨魚優化算法,將果蠅的運動軌跡和鯨魚算法的運動軌跡結合通過改變開發階段的運行路線從而增加算法的多樣性。王堅浩等[3]使用Tent混沌映射生成混沌序列完成種群初始化,并使用混沌擾動協同更新策略改進收斂因子和慣性權重提出了基于混沌的鯨魚優化算法(CWOA)。Dharmbir[4]將混沌鯨魚優化算法應用于電力系統暫態穩定約束最優潮流(OPF)問題的求解。通過選擇兩個測試電力系統,驗證了CWOA算法的有效性。郭振洲等[5]提出了基于自適應權重和柯西變異鯨魚優化算法(WOAWC)動態調節算法權重并在算法勘探階段引入柯西變異提高算法的收斂速度,Feng[6]提出了求解大規模問題的改進鯨魚優化算法,在算法的初始階段加入對立策略加快算法的收斂性,并引入非線性調節系數和變異操作提高算法的多樣性和收斂性。以上對鯨魚算法的改進集中在算法本身算子或初始化方法的改進,并沒有從整體算法策略上加以修改。本文針對鯨魚優化算法中個體信息交互少的特點,引入社交學習理論,強調個體之間的信息交互,通過在原算法的思想中加入社交學習理論從而提高算法的多樣性和收斂性。
社交學習[7]是個體在社交網絡中學習進步的一種有效途徑。它是指同一群體間待學習個體向目標個體進行學習的一種社交方式。針對鯨魚算法隨機選擇參考鯨魚的勘探方法及逐次向上一代最優個體靠攏的策略,本文分別將社交學習理論應用到鯨魚優化算法的勘探和開發階段提出了社交學習鯨魚優化算法(SLWOA)。在算法全局勘探和局部開發階段引入社交學習理論,指導個體有意識的向潛在解進行勘探和開發。首先,隨機挑選出一個個體作為參考鯨魚,對比該個體的學習概率上限判斷是否為待學習個體,然后根據判斷結果選用不同的迭代公式進行更新,實現全局勘探。其次,通過對比剩余個體的學習概率上限確定待學習個體,并進行標記,然后對待學習個體進行社交學習,實現個體的局部尋優。
1921年,英國科學家首次在Swaythling的小鎮上觀測到一些鳥類能夠用喙打開牛奶瓶,隨后的25年里,英國科學家觀測到的這種鳥類的開瓶蓋行為已經從大不列顛局部地區擴展到歐洲大陸,甚至擴展到全世界其它的鳥類。英國科學家認為這種行為產生的原因是群體中的個體不斷向優于自己的個體進行學習,從而保持群體不斷進化繁衍,這是社交學習生物學體現[8]。在過去的幾十年中,社交學習理論中提出并討論了各種機制,例如,刺激,增強和局部增強[9],觀察性調節[10]和社會促進[11]。而在這些機制中模仿機制一直被認為是最為重要的?;谶@種理論,根據個體的適應度值將為個體設定學習概率上限,然后通過隨機產生個體的學習概率值模擬個體的學習概率,對比個體的學習概率上限從而將群體中的個體分為待學習個體和非待學習個體,通過待學習個體向種群均值個體進行學習,保證個體不斷進化且不會過早的陷入局部最優。2015年Jin[9]提出了基于社交學習的粒子群優化算法(SL-PSO),并將社交學習算法概括為適應值評估、種群排序以及行為學習三個階段。
個體作為群體中很小的一部分,所處位置不同,個體的優秀程度也不相同,通過種群個體排名的方法解決個體優秀程度判定的問題。假設個體排名越高越優秀,也就越容易作為學習的對象。若隨機向比自己優秀的個體學習則會導致個體學習方向模糊,算法的收斂性降低,因而本文中使用該代種群算術平均值作為種群的學習對象,使用個體與該均值之間差值加權來表示個體向整體趨勢學習的狀況。
基于社交學習的待學習個體位置更新[10]如下方法:

(1)


(2)
其中以1-(i-1)/m表示學習概率和個體排名i成反比的關系,指數alog「n/m?則表示學習概率與維度n成反比的關系,從而模擬問題難度越大,個體越不會進行社交學習。對于每一代最優的個體因其無需向其它個體學習故其學習概率為0。學習因子ε調節整個社交學習行為,往往和問題的難度有關,作為調節學習步調的參數太大或太小都直接影響到算法的運行效果,本文設其運算表達式如下:
ε=0.1×n/100
(3)
其中m表示在群體中的個體數目,n表示群體中個體的維度。
鯨魚優化算法是模仿座頭鯨捕食行為而提出的。自然界中座頭鯨通過收縮包圍,螺旋上升的策略實現獵食,算法中為了模擬座頭鯨此種捕食策略,使用隨機數作為輔助。首先隨機產生一個小于1的數,若該數小于0.5則使用收縮包圍模型,若該數數不小于0.5則使用螺旋上升模型。鯨魚優化算法中具體的鯨魚捕食過程主要包括三個部分:包圍獵物、氣泡攻擊、搜尋獵物。
在此部分座頭鯨并不知道食物的位置,算法中假設距離食物最近的鯨魚就是當前的局部最優解,其它鯨魚個體都會朝著這個位置靠近,從而完成包圍獵物。具體位置更新如下方法

(4)

(5)
A=2ar-a
(6)
C=2r
(7)
其中A和C是系數向量,X*是局部最優解,且是α∈[0,2]從2線性遞減到0,r∈[0,1],c∈[0,2]。
該部分為啟發式算法中的開發階段,該階段的主要目的是在全局勘探找到潛在目標方向的基礎上進行局部尋優。鯨魚優化算法是通過收縮包圍圈和螺旋更新位置的方式達到鯨魚局部尋優的目的。
3.2.1 收縮包圍原理
根據式(5)鯨魚群進行收縮包圍。當|A|<1時,鯨魚個體會向當前位置最優的鯨魚靠近。并且|A|越大鯨魚游走的步伐越大,|A|越小鯨魚游走的步伐越小,從而控制收斂速度。
3.2.2 螺旋更新位置
首先計算與當前最優鯨魚的距離,然后再以螺旋方式游走,螺旋游走方式更新如下方法

(8)

(9)
其中式(9)是鯨魚個體到目前最好的鯨魚距離向量,b是常量系數,l∈[-1,1]的隨機數。pro∈[0,1]的隨機數用來選擇收縮包圍或螺旋更新模型。該階段更新如下方法

(10)
當|A|>1時,進入全局勘探階段,該階段主要目的是擴大搜索域,提高算法多樣性,避免陷入局部最優。算法中通過隨機選擇策略,隨機選擇一個鯨魚個體作為參考鯨魚,然后其它鯨魚均向其方向前進,從而實現獵物搜索如下方法

(11)

(12)

為了提高鯨魚優化算法的全局尋優能力及收斂精度,引入社交學習策略即單獨為待學習的后進生進行補習的方式,在算法的全局勘探和局部開發階段對待學習的個體進行學習操作,提高群體收斂速度及收斂的精度。鯨魚優化算法的全局勘探階段,由式(11)和(12)可知,需要在該代種群中隨機選擇一頭鯨魚作為參考鯨魚,然后其它鯨魚依次向其靠攏,從而不斷更新鯨魚位置。參考鯨魚的選擇直接影響到算法收斂速度,本文在全局勘探階段引入學習因子和學習概率,首先參考鯨魚對比個體學習概率上限,從而判斷是否需要學習,待學習個體則向群體的均值趨勢進行偏移,從而完成參考鯨魚的學習,該方式通過主動選擇最有“潛力”的參考個體,避免不必要的采樣,從而提高算法的收斂速度。勘探階段改進如下方法
X(t+1)
Δ(t)=Ave(t)-X(t)
(15)

(16)
式(15)表示均值個體與當前個體之間的矢量距離,式(16)為理想均值個體的計算公式。在鯨魚優化算法中局部開發階段,位置更新迭代的式(10)無論收縮包圍還是螺旋上升均是基于當前的局部最優解X*,缺少與外界信息交互,使得算法很容易陷入局部最優,故而引入社交學習的理論針對待學習個體向群體均值個體進行學習,從而提高個體之間的信息交互能力。此外將群體個體依照學習概率上限分為兩個部分,對待學習個體單獨進行學習操作,能夠有效的減少算法的計算次數及群體中個體之間的差距從而提高算法收斂精度。在算法的開發階段具體的操作流程為首先通過學習概率來區分是否為待學習個體,然后在待學習個體中引入種群均值個體作為學習對象,而其它個體則保持原有的更新策略。開發階段改進如下方法:
社交學習鯨魚優化算法分別在勘探和開發階段對算法進行改進,具體的算法流程如圖1。

圖1 社交學習鯨魚優化算法流程圖

為驗證SLWOA算法的性能,分別在22個基準函數[11]進行30次測試,其中包括7組單峰函數、6組可變維多峰測試函數和9組固定維測試函數,見表1~3。另外本文分別對Sphere,RosenBrock以及Griewank函數進行若干平移,平移量見表4。

表1 單峰測試函數

表2 可變維多峰測試函數

表3 固定維多峰測試函數

表4 基準函數的位置偏移
本文所有實驗均在CPU 主頻3.90GHz的Intel Core(TM) i3-7l00h、內存8GB的PC機上進行,操作系統為Microsoft Windows 10專業版,編程工具MATLAB R2015b。
本實驗中SLWOA算法及其對比的四種算法的種群規模均為30,最大迭代次數均為1000,參數設置見表5。

表5 優化算法的參數
5種算法在22個測試函數獨立運行30次尋優計算的均值和標準差見表6。其中最優者用黑體標注。表中“+”表示SLWOA算法效果優于該列算法;“=”表示SLWOA算法效果與該列算法的效果相當;“-”表示SLWOA算法效果不如該列算法。部分測試函數的收斂曲線如圖2。對Sphere,RosenBrock以及Griewank函數的7次位置偏移,運行30次的平均值見表7。

表6 5種算法在22個基準函數上的測試結果

圖2 部分測試函數收斂曲線

表7 平移函數運行30次均值結果
根據表6結果可知SLWOA在f1-f13相比其它四種算法結果均為最優,結合圖2中算法的收斂曲線SLWOA在單峰函數f3上能夠較快地得到全局最優解且在收斂速度和搜索精度上優于其它四種算法。這是因為在單峰函數中不存在多個最優解,而SLWOA算法通過引入均值,確保個體向種群行動總趨勢的方向移動,提高了算法的收斂速度。盡管WOA算法、WOAWC算法在測試函數f9和f11上也獲得了全局最優解,但結合圖2中f9可以看出SLWOA算法在收斂速度方面均優于WOA和WOAWC算法。這說明在多模態空間中,SLWOA算法經過若干次的迭代運算之后仍具有跳出局部最優解的能力。待學習的個體進行學習操作,能夠有針對性的提高個體的優秀程度;提高種群每次迭代后結果的準確度。在f14-f22函數中,SLWOA算法在標準差最小的情況下結果仍優于其它四種算法說明SLWOA算法在函數f14、f21,f22中不僅能夠獲得好的結果,而且還穩定收斂于這個解,因為是針對待學習的個體進行學習過程,是一種類似于后進生補習的方式,彌補了群體之間的差距縮小了群體成績的標準差從而提高了結果的穩定性。表7可知,隨著函數縱軸位置偏移的變大,SLWOA在偏移函數Sphere,RoseBrock,Griewank,的結果始終最優,即SLWOA算法在該類偏移函數上具有穩定性。除此之外對于多峰函數Girewank均選擇最值的標準差和其平均值在同一個數量級上的結果,以此排除了某一次陷入局部最優。綜上可知通過加入社交學習,針對性的為待學習個體補習,彌補群體間的優劣差距,從而達到提高收斂速度和穩定性的功能。
本文將社交學習的理論應用于鯨魚優化算法之中,在鯨魚算法的勘探和開發階段對適應值較差的個體根據學習概率判斷是否需要進行社交學習,然后通過學習因子對學習程度進行控制。SLWOA算法相比于傳統的鯨魚算法提高了算法的收斂精度,從而避免鯨魚算法陷入局部最優解的問題,同時也進一步提高了鯨魚個體的全局搜索能力和局部尋優能力。通過對比5種算法在22個基準函數獨立運行30次的均值和標準差并結合函數的收斂曲線,實驗結果顯示除了f15-f20函數組,SLWOA算法在收斂速度和收斂精度方面都有要優于其它四種對比算法。為了排除原點收斂的影響,對Sphere,RoseBrock,Griewank函數分別根據函數邊界進行7次偏移并獨立運行30次求均值,而SLWOA的結果在這21個偏移函數中結果均為最優。故此可認為引入社交學習提高了算法的穩定性和收斂速度,除此之外也說明社交學習鯨魚優化算法適用于單峰函數和可變維多峰函數的應用場景,而對于固定維測試函數的應用場景的優勢不明顯。