智能優化算法:蝙蝠算法

智能優化算法:蝙蝠算法-附代碼

@[toc]
摘要:蝙蝠算法(Bat Algorithm,BA)[1] 是受蝙蝠回聲定位捕食行為啟發,提出的一種基于迭代優化技術的新型群智能優化算法。該算法自2010年由Yang教授提出以來,因其具有模型簡單、收斂速度快、參數少等優點 ,已在工程優化 、模型識別等問題中得到較好的應用,很快得到了國內外學者的廣泛關注,成為智能優化算法領域新的研究熱點。

1.算法原理

蝙蝠使用回聲定位技術檢測獵物、避開障礙物以及在黑暗的環境中找到棲息地。其可以發出非常響亮的脈沖并聽取從周圍物體反彈回來的回聲,根據回聲到雙耳的不同時間與強度判斷物體所在的方向和位置;還可以根據目標獵物或者障礙物的特征發出不同性質的
脈沖。
大多數蝙蝠使用恒定頻率信號進行回聲定位,信號的大小取決于目標獵物。蝙蝠發出的脈沖持續時間很短,一般在8~10 ms之間,其頻率通常在25~150 kHz的范圍內。正常飛行的過程中,蝙蝠每秒發射10~20個脈沖;而在尋找獵物的過程中,尤其在靠近獵物飛行時,每秒可以發射約200個脈沖。對處在典型頻率范圍[25 kHz,150 kHz]的脈沖,由公式(1)可知,其對應的波長范圍為[2 mm,14 mm],這
個范圍正好與蝙蝠尋找的獵物大小范圍一致。這將有利于蝙蝠準確捕捉獵物。
λ=v/f \tag{1}

其中 v 為空氣中聲音的傳播速度,取值為340 m/s。

如果以理想化的方式研究蝙蝠的回聲定位特征,就可以更方便地模擬蝙蝠算法。在模擬蝙蝠算法的過程中,使用以下近似理想化的規則:

(1)所有蝙蝠都使用回聲定位感知距離。

(2)蝙蝠在位置 x i 隨機飛行,并具有固定的頻率f ,同時根據其與目標獵物的接近程度自動調整波長和脈沖響度來搜索獵物。

(3)脈沖響度變化方式多樣,算法假設其從最大值A_o變化到最小的恒定值 A_{min} ,變化區間視問題而定。

在模擬蝙蝠算法的過程中,假設蝙蝠的搜索空間是D維,每一代中每個蝙蝠的位置 x_i^t 和速度v_i^t更新規則由公式(2)~(4)給出:
f_i=f_{min}+(f_{max}-f_{min})*\beta \tag{2}

v_i^t=v_i^{t-1}+(x_i^t-X_*)f_i \tag{3}

x_i^t=x_i^{t-1}+v_i^t\tag{4}

其中 β∈ [0,1],是一個隨機向量, X_* 是群體中當前局部最優解(位置), f_i 是蝙蝠發出的聲波頻率,調整區間為 [f_{min}, f_{max} ] 。在實驗過程中,可以根據問題的需要設置相應的頻率變化區間。

對于局部搜索,一旦在當前最佳解決方案中選擇了一個解決方案,新的局部解使用隨機游走方式生成。
x_new=x_{old}+\varepsilon A^t\tag{5}
其中, ε∈ [?1,1],是一個隨機數,A^t 是整個群體在同一代中的平均響度。

蝙蝠在尋找獵物的過程中,會根據距目標獵物的方位不斷調整發出聲波的響度和頻度,以提高捕食效率。在逐漸靠近獵物的過程中,蝙蝠尋找獵物的空間范圍也在逐漸減小,因此它會逐漸減小響度到一個定值同時不斷增大頻度,以便快速、動態地掌握目標獵物的方位。第i 只蝙蝠的聲波響度 A_i^{t+1} 和頻度r_i^{t+1}使用公式(6)和(7)更新。
A_i^{t+1}=\alpha A_i^t\tag{6}

r_i^{t+1}=r_i^0[1-exp(-\gamma t)]\tag{7}

其中, α∈ (0,1),是聲波響度衰減系數; γ >0,是脈沖頻度增強系數;r_i^0 表示蝙蝠 i 初始脈沖頻率。

對于任意的 αγ ,當 t→∞ 時,有 A_i^t →0r^t_i →r^0_i 。當 A_t^i 趨于0時,可以認為蝙蝠找到了獵物暫時不發出脈沖,脈沖的變化范圍可以根據問題的需要設置不同的數值區間。只有當蝙蝠的位置得到優化后,脈沖的響度和頻率才會更新,這暗示著蝙蝠正朝著最佳位置移動。

2.算法流程

步驟1: 參數初始化:蝙蝠種群規模 m ,迭代次數N ,目標函數 f(X) ,蝙蝠位置 x_i (i=1,2,…,m) 和速度v_i ,聲波頻率 f_i ,聲波響度 A_i 和頻度 r_i
步驟2: 找出當前種群中最優蝙蝠位置 X_* ,并根據公式(2)~(4)更新速度和位置。
步驟3: 生成隨機數 rand_1rand_1 是[0,1]上的隨機數。如果 rand_1>r_i ,在最佳蝙蝠中選一個最優個體,再在選擇的最優個體附近通過公式(5)生成一個局部解,否則按照公式(4)更新蝙蝠位置。

步驟4: 再生成一個隨機數 rand_2rand_2 是[0,1]上的隨機數。如果 rand_2<A_i ,并且此時目標函數的適應度優于步驟 3 中的新解,則接受該位置,并根據公式(6)、(7)調整A_i (減小)和 r_i (增大)。
步驟5: 對該種群中所有個體的適應度值進行排序,并找到當前最佳 X_*
步驟6: 重復步驟(2)~(5)。判斷是否滿足最大迭代次數,然后輸出全局最優值。

3.算法結果

在這里插入圖片描述

4.參考文獻

[1] Yang X S.A new metaheuristic bat-inspired algorithm[J].Computer Knowledge & Technology,2010,284:65-74.

[2]許德剛,趙萍.蝙蝠算法研究及應用綜述[J].計算機工程與應用,2019,55(15):1-12+31.

[3]馬祥麗,張惠珍,馬良.蝙蝠算法在物流配送車輛路徑優化問題中的應用[J].數學的實踐與認識,2015,45(24):80-86.

5.MATLAB代碼

https://mianbaoduo.com/o/bread/Z5qXkpw=

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容