算法原理
蝙蝠能夠在夜間或十分昏暗的環境中自由飛翔和准確無誤地捕捉食物,是因為他們能夠從喉頭發出地超聲脈沖回聲來定位。受這一啟發,Yang教授在2010年提出了蝙蝠算法(Bat Algorithm,BA)[1]。
在蝙蝠算法中,為了模擬蝙蝠捕食獵物、避免障礙地隨機搜索過程,做出如下三個近似理想化規則假設[2]:
(1) 種群中所有蝙蝠都利用回聲定位的方法感知距離。
(2) 蝙蝠在位置以速度
隨機飛行,具有固定的頻率
,同時具有根據自身與獵物距離自動調整的波長
和脈沖響度A。
(3) 假設脈沖響度的變化方式為從一個最大值整數變化到固定最小值
,變化區間可根據問題調整。
假設蝙蝠搜索空間為D維,每一代中蝙蝠位置和速度
的更新規則如公式(1)~(3)所示。其中
為一個隨機變量。
是群體當前局部最優解位置。
(1)
(2)
(3)
而局部搜索時,新的局部解使用隨機游走方式生成,如公式(4)。是一個隨機數;
整個群體在同一代中的平均響度。在搜索過程中,蝙蝠會根據距離目標獵物的方位不斷減小響度到一個定值的同時不斷增大頻度,將獵物范圍縮小並捕食,在這一過程中,每只蝙蝠的聲波響度和頻度更新公式如(5)和(6)所示,其中
是聲波響度衰減系數,值落在0到1之間不包含0和1;
是脈沖頻度增強系數大於0;
表示為蝙蝠
初始脈沖頻率。
(4)
(5)
(6)
蝙蝠算法的基本步驟為:
(1) 參數初始化:蝙蝠種群數量m,迭代次數N,目標函數f(x),蝙蝠位置,速度
和聲波頻率
,聲波響度
和頻度
。
(2) 找出當前種群的最優位置,根據公式(2)~(4)更新位置和速度。
(3) 生成[0,1]上的隨機數rand1,如果rand1>,在最佳個體(解集)中選擇一個最優個體(解),在選擇的最優個體(解)周圍根據公式(4)生成一個局部個體(解),否則根據公式(4)更新蝙蝠個體位置。
(4) 生成[0,1]上的隨機數rand2,如果rand2<並且
,則接受該位置,根據公式(6)(7)減小
和增大
。
(5) 對該種群中所有個體適應度值進行排序,並找出當前最佳。
(6) 重復步驟(2)~(5),判斷是否滿足最大迭代次數,輸出全局最優值。
參考文獻
[1] X. S. Yang, A New Metaheuristic Bat-Inspired Algorithm, in: Nature Inspired Cooperative Strategies for Optimization (NISCO 2010), Studies in Computational Intelligence, Springer Berlin, 284, Springer, 65-74 (2010). http://arxiv.org/abs/1004.4170
[2] XU Degang, ZHAO Ping. Literature Survey on Research and Application of Bat Algorithm. CEA, 2019, 55(15): 1-12.
參考代碼
1.https://www.mathworks.com/matlabcentral/fileexchange/44707-binary-bat-algorithm