胡元嬌 郭玉純
(西安郵電大學計算機學院 西安 710121)
蟻獅優化算法(antlion optimizer,ALO)[1]是由澳大利亞學者Seyedali 于2015 年提出的一種新的仿生智能優化算法。相比其他智能方法,例如粒子群算法[2]、蝙蝠算法[3]和人工蜂群算法[4],ALO 算法具有調節參數少,易于實現、求解精度高等優點。目前,ALO算法已經被廣泛使用,例如:特征選擇[5~6],多目標優化[7~8],優化SVM 參數[9],解決最優潮流問題[10],硅單晶熱場溫度模型的參數辨識[11],無人機的航跡規劃問題[12],以及其他一些工程領域[13]。但是,在應用中蟻獅優化算法也存在易陷入局部最優、后期收斂速度較慢、出現早熟收斂的問題。為了克服蟻獅優化算法的缺點,本文提出了一種基于邏輯自映射和Beta 變異的混沌蟻獅優化算法(chaotic antlion optimizer,CALO)。通過對5 個Benchmark 基準函數的尋優測試表明,CALO 算法與ALO算法和PSO 算法相比,其全局搜索能力更強、收斂速度更快、精度更高、尋優能力更佳。

式中:cumsum 表示計算螞蟻游走位置累加函數,n表示最大迭代次數,t 表示游走步長,r(t)是一個隨機函數,其表達式如下:

式中:rand 為[0,1]上均勻分布的隨機數。
為了使螞蟻在可行域范圍內隨機游走,根據式(3)進行歸一化:

式中:ai表示第i 維變量隨機游走的最小值;bi表示第i 維變量隨機游走的最大值;表示在第t 次迭代第i 維變量的最小值;表示在第t 次迭代第i 維變量的最大值。
螞蟻游走的區域邊界受蟻獅位置的影響:

式中:ct表示第t 次迭代所有變量中的最小值;dt表示第t 次迭代所有變量中的最大值;表示第t 次迭代通過輪盤賭選中的蟻獅或者精英蟻獅第j 個變量的位置。T 為最大迭代次數;t 為當前迭代次數;ω 為隨迭代次數增大的數(ω=2,t>0.1 T;ω=3,t>0.5 T;ω=4,t>0.75 T;ω=5,t>0.9 T;ω=6,t>0.95 T)。
當蟻獅捕獲螞蟻后,其位置更新到螞蟻位置以增強其捕獲獵物的機會:

式中:f 為適應度函數。
輪盤賭選擇的蟻獅和精英影響著螞蟻的隨機游走:

ALO 算法的尋優能力主要依賴于螞蟻和蟻獅種群個體之間的相互作用和影響。螞蟻繞選定的精英蟻獅進行隨機游走實現對搜索空間的探索,如果選取當前精英個體在局部最優鄰域內并不是全局最優值,則容易帶領整個種群陷入局部最優,降低種群的多樣性,同時適應度較差的種群個體會使得算法的收斂速度變慢,精度不高,甚至出現進化停滯現象。提高種群的多樣性以加快收斂速度和精度可以提高蟻獅優化算法的性能。
本文采用邏輯自映射函數來產生混沌序列[14],數學表達式為

混沌優化的過程如下。
1)在搜索過程中的某個時刻,螞蟻i 位于D 維空間內,位置為xid。首先按照式(8)將個體空間位置的每一維映射到[-1,1]上:

式中:aid表示螞蟻i 第d 維變量的上界,bid表示螞蟻i 第d 維變量的下界。
2)將變換后的變量使用式(7)進行載波操作,將獲得的新混沌變量序列按照式(9)變換到原解空間:

3)在此過程中,如果搜索到更優的解則更新原來螞蟻的位置為當前更優位置;否則繼續進行混沌搜索,當達到最大搜索次數時停止搜索。
Beta分布是一組定義在區間[0,1]上的連續概率分布,有兩個形參α 和β,α 和β 都為正數,用于控制函數圖像形狀。Beta分布的概率密度函數是:

式中:Γ 是Gama 函數;B 是一個歸一化常數,用于確保總概率和為1;x 是隨機變量;當形狀參數α和β 接近零值時,Beta 分布接近極限的伯努利分布。Beta變異能取得較好的擾動效果,且利于算法控制變異方向及位置邊界。本文根據Beta 分布設計了一種精英定向Beta變異算子,用于每個迭代周期的變異,其目標是加快收斂速度,去除隨機方向變異帶來的不確定性,對目標個體進行變異時,變異方向指向精英個體。精英定向Beta 變異的位置變異公式如下所示:

式中:σ 為Beta 分布函數產生的隨機值,σ∈[0,1],xid為變異前的位置,x'id為變異后的位置,xelite為精英個體。由公式可以看出,變異后的點位于精英個體和變異個體之間,即變異后的個體向精英個體靠攏,σ 越小,離精英個體越近。
本文提出的CALO 算法引入邏輯自映射混沌序列[15]優化精英個體,使得精英個體擺脫局部極值的約束,向局部最優鄰域內的全局最優點靠攏,從而提高種群多樣性。使用Beta 變異策略[16]對適應度值較差的種群個體采取定向變異的方式,去除隨機方向變異帶來的不確定性,變異方向指向精英個體,加快了算法的收斂速度,提高算法的求解精度,使得種群在迭代過程中能保持持續優化的能力。具體算法如下。
Step1:初始化螞蟻和蟻獅的數目、位置、最大迭代次數、最大搜索次數、適應度函數維數、變量范圍的上界和下界。
Step2:計算蟻獅和螞蟻個體適應度函數值,找到當前最好的蟻獅個體并作為當前精英個體。
Step3:更新螞蟻的位置。
Step4:對所有種群的適應度值排序,取性能較好的前n 個種群個體采用混沌優化策略進行優化;對性能較差的后n 個種群個體采用Beta 變異策略產生新的個體。更新并保留精英蟻獅個體位置。
Step5:判斷算法迭代終止條件是否滿足,若滿足則轉至Step6,否則跳轉至Step2~4。
Step6:輸出個體最優值,算法結束。
為驗證提出的CALO 算法的特性,本文選取了5 個Benchmark 基準函數對算法進行尋優測試,見表1所示。實驗仿真環境Matlab R2017a。
每個算法實驗按照維度的不同劃分為三組,分別是維度N=10、N=20、N=50,隨著維度的增加,測試難度不斷增大,更加能反映算法在不同維度下的搜索能力,體現出算法綜合性能。每組實驗在每個測試函數下都獨立執行30 次,記錄下30 次執行后的最優適應度值BF(Best Fitness)、平均最優適應度值MBF(Mean Best Fitness)、標準差SD(Standard Deviation)、平均適應度值誤差AE(Average Error)這四組數據,其中AE 的計算公式為AE=MBF-BF。在實驗設計中,三個算法的參數始終保持一致。具體設置如下:蟻獅和螞蟻的種群數均為30個,最大迭代次數為1000次,混沌搜索次數為30次,搜索范圍見表1 所示。PSO 參數設置如下:c1=2、c2=2、w=1.0。5 個基準測試函數進化曲線如圖1所示,10維、20維和50維的測試結果見表2所示。
根據圖1所示在1000次迭代情況下,不同基準函數在不同維度下的進化曲線可以看出,ALO算法和PSO 算法均出現了早熟收斂及算法陷入局部最優解的問題,而此時CALO 算法可以保持較強的開發能力,收斂速度也比另外兩種算法要快,種群多樣性得以改善,算法可以成功跳出局部最優解搜索到全局最優解。

表1 基準測試函數

圖1 5個基準測試函數進化曲線

表2 多組測試函數不同維度下的仿真結果
從表2 的仿真結果可知:無論是單峰函數還是多峰函數,根據最優適應度值和平均最優適應度值可以看出,本文提出的CALO 算法均優于另外兩個算法,說明CALO 算法的平均尋優精度能力更強;根據標準差和平均適應度值誤差可以看出,CALO算法相比其他兩種算法均有較為滿意的解,說明CALO算法的穩定性更好,性能更優越。
綜上所述,在BF、MBF、SD、AE 四組指標下,可對三種算法的尋優性能排序如下:CALO>ALO>PSO。所以無論從算法精度層面考慮還是從穩定性層面考慮,CALO 算法具有更強的尋優能力和穩定性。
本文在研究基本蟻獅算法的基礎上,針對ALO算法在尋優過程中有可能會陷入局部最優,提出了一種基于邏輯自映射和Beta 變異的混沌蟻獅優化算法。該算法在ALO 算法中引入邏輯自映射混沌序列,豐富了螞蟻個體的行為,并將螞蟻個體均勻映射到定義空間中。使用Beta 變異策略對適應度值較差的種群個體進行變異,使得算法能有效跳出局部極值。對五個Benchmark 基準函數的尋優測試表明,CALO 算法與ALO 算法和PSO 算法相比,其尋優速率、收斂精度及算法穩定性更佳。