群体智能算法之蝙蝠算法
蝙蝠算法
- 1. 簡介
- 2. 數學原理以及算法步驟
- 2.1 連續情況下的BA算法
- 2.2 離散型BA算法
- 4. 具體應用
- 4.1 簡單的例子
- 4.2 TSP問題中的求解
- 4.3 背包問題的求解
- 5. 參數選擇的原則
- 小結
- 參考文獻
1. 簡介
蝙蝠算法(Bat Algorithm,BA)是Yang受自然界蝙蝠回聲定位的方式進行搜索、捕食行為的啟發,于2010年提出的一種新型的群智能仿生優化算法。BA算法具有結構簡單、參數較少、搜索能力較強、穩定性較強、便于實現等優點,在函數優化、調度問題、模式識別、圖像處理、故障診斷等等方面表現出極大的優勢。BA算法目前主要在連續域函數優化問題上進行求解,較少的地方用來求解組合優化問題,例如背包問題、TSP問題求解、可靠性冗余分配問題等等。蝙蝠回聲定位原理為:蝙蝠以脈沖的形式以一定的發射率進行發射一定量的頻率和音量的超聲波,當超聲波在傳播過程中遇到三維空間中的物體之后就會以回聲的形式返回,通過對自身回聲的接收和處理,蝙蝠不僅能夠探測到運動物體與自身的距離和飛行方向,還可以判斷其運動速率、大小、形態以及結構,從而避開障礙物。
2. 數學原理以及算法步驟
蝙蝠算法有兩種不同的形式,一種是用于連續型計算的算法,一種是基于連續型計算方法而提出的一種離散型的BA算法。這兩種算法具有很大的不同點,下面就這兩種不同的算法進行學習。
2.1 連續情況下的BA算法
蝙蝠是通過其發出超聲波的頻率、速度來確定物體的位置信息。所以,為了便于模擬蝙蝠的回聲定位行為。Yang給出了兩個理想化的規則:
- 搜索規則:蝙蝠隨機飛行,同時以固定的頻率、可變的波長和音量來搜索獵物;
- 參數變化規則:蝙蝠會根據自身與獵物的距離來自動調整脈沖波長和脈沖發射率,并限定音量在指定范圍內依照給定方式由大到小而發生變化。
在以上的假設的基礎上,BA算法的步驟如下所示:
步驟一:初始化相關參數,包括蝙蝠的種群數量nnn、蝙蝠種群的位置和速度。
步驟二:根據目標函數和初始位置計算適應度值,從而得出初始解;
步驟三:對于每只蝙蝠kkk,根據下列公式更新脈沖頻率、速度和位置信息,從而產生后代個體:
{fk=fmin?+(fmax?fmin)?βvkt+1=vkt+(xkt?x?)?fkxkt+1=xkt+vkt\begin{cases} f_{k}=f_{\min}+(f_{max}-f_{min})\cdot{\beta}\\ v_{k}^{t+1}=v_{k}^{t}+(x_{k}^{t}-x^{*})\cdot{f_{k}}\\ x_{k}^{t+1}=x_{k}^{t}+v_{k}^{t}\\ \end{cases}??????fk?=fmin?+(fmax??fmin?)?βvkt+1?=vkt?+(xkt??x?)?fk?xkt+1?=xkt?+vkt??
其中,fkf_{k}fk?表示第kkk只蝙蝠的脈沖頻率信息,fmax?f_{\max}fmax?和fmin?f_{\min}fmin?分別表示脈沖頻率的最大值和最小值,β∈[0,1]\beta\in{[0,1]}β∈[0,1]是均勻分布的隨機數,xkt,vktx_{k}^{t},v_{k}^{t}xkt?,vkt?表示第ttt個迭代過程中蝙蝠kkk所在的位置和速度,x?x^{*}x?表示當前全局的最優解。
步驟四:生成隨機數rand1\text{rand1}rand1,如若rand1>rkt\text{rand1}>r_{k}^{t}rand1>rkt?,則在當前最優解附近進行鄰域位置的搜索,搜索方式如下公式所確定:
xnew=xold+??Atx_{\text{new}}=x_{\text{old}}+\epsilon\cdot{A^{t}}xnew?=xold?+??At
其中,rktr_{k}^{t}rkt?表示第ttt代蝙蝠kkk的脈沖發射率,xnewx_{\text{new}}xnew?表示隨機擾動得到的新解,xoldx_{\text{old}}xold?即x?x^{*}x?,AtA^{t}At表示第ttt迭代中所有蝙蝠群體音量的平均值,?\epsilon?表示均勻分布的隨機數?∈[?1,1]\epsilon\in{[-1,1]}?∈[?1,1]。
步驟五:生成隨機數rand2\text{rand2}rand2,如若rand2<Akt\text{rand2}<A_{k}^{t}rand2<Akt?并且xnewx_{\text{new}}xnew?的適應度優于xoldx_{\text{old}}xold?,則接受xnewx_{new}xnew?并且更新rktr_{k}^{t}rkt?和AktA_{k}^{t}Akt?,更新的公式如下所示:
{Akt+1=α?Aktrkt+1=rk0(1?e?γt)\begin{cases} A_{k}^{t+1}=\alpha\cdot{A_{k}^{t}}\\ r_{k}^{t+1}=r_{k}^{0}(1-e^{-\gamma t})\\ \end{cases}{Akt+1?=α?Akt?rkt+1?=rk0?(1?e?γt)?
其中,0<α<1,γ>00<\alpha<1,\gamma>00<α<1,γ>0,α,γ\alpha,\gammaα,γ均為常量;
步驟六:計算出當前所有蝙蝠的適應度并找出當前最優解;
步驟七:重復步驟三至步驟六,直到達到循環條件,退出算法。
2.2 離散型BA算法
BA算法在離散化的領域內的應用比較少,為拓寬BA算法的應用領域,便將連續化的蝙蝠算法經過改進,應用到了離散型的蝙蝠算法。下面來介紹TSP求解問題中的蝙蝠算法。
4. 具體應用
4.1 簡單的例子
4.2 TSP問題中的求解
4.3 背包問題的求解
5. 參數選擇的原則
小結
參考文獻
[1] 一種求解TSP問題的離散蝙蝠算法
[2] 蝙蝠算法及其在CVRPTW-SDP問題中的應用
[3] 旅行商問題的混沌混合離散蝙蝠算法
總結
以上是生活随笔為你收集整理的群体智能算法之蝙蝠算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序 获取当前用户城市信息(省市区)
- 下一篇: 实现图片本地化 ServiceWorke