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