人工鱼群算法详解
1、起源
??人工魚群算法是李曉磊等人于2002年在動物群體智能行為研究的基礎(chǔ)上提出的一種新型方盛優(yōu)化算法,該算法根據(jù)水域中魚生存數(shù)目最多的地方就是本水域中富含營養(yǎng)物質(zhì)最多的地方這一特點來模擬魚群的覓食行為而實現(xiàn)尋優(yōu)。算法主要利用魚的三大基本行為:覓食、聚群和追尾行為,采用自上而下的尋優(yōu)模式從構(gòu)造個體的底層行為開始,通過魚群中各個體的局部尋優(yōu),達到全局最優(yōu)值在群體中凸顯出來的目的。
??該方法采用自下而上的尋優(yōu)思路,首先設(shè)計單個個體的感知、行為機制,然后將一個或一群實體放置在環(huán)境中,讓他們在環(huán)境的交互作用中解決問題。
2、生態(tài)學(xué)基礎(chǔ)
??在一片水域中,魚存在的數(shù)目最多的地方就是本水域富含營養(yǎng)物質(zhì)最多的地方,依據(jù)這一特點來模仿魚群的覓食、聚群、追尾等行為,從而實現(xiàn)全局最優(yōu),這就是魚群算法的基本思想。魚類活動中,覓食行為、群聚行為、追尾行為和隨機行為與尋優(yōu)命題的解決有較為密切的關(guān)系,如何利用簡單有效的方式來構(gòu)造和實現(xiàn)這些行為將是算法實現(xiàn)的主要為題。
3、人工魚的結(jié)構(gòu)模型
??人工魚是真實魚抽象化、虛擬化的一個實體,其中封裝了自身數(shù)據(jù)和一系列行為,可以接受環(huán)境的刺激信息,做出相應(yīng)的活動。其所在的環(huán)境由問題的解空間和其他人工魚的狀態(tài),它在下一時刻的行為取決于自身的狀態(tài)和環(huán)境的狀態(tài),并且它還通過自身的活動來影響環(huán)境,進而影響其他人工魚的活動。
??人工魚對外的感知是依靠視覺來實現(xiàn)的,人工魚的模型中使用如下方法實現(xiàn)人工魚的虛擬視覺:
Xnext=X+XV?X||XV?X||?Step?Rand()
其中 Rand()為隨機函數(shù),產(chǎn)生0到1之間的隨機數(shù), Step為步長。
人工魚視覺的概念
3.1、人工魚中封裝的變量和函數(shù)
變量部分:人工魚的總數(shù)N、人工魚個體的狀態(tài)X=(x1,x2,...,xn)(其中xi(i=1,2,...,n)為尋優(yōu)的變量)、人工魚移動的最大步長Step、人工魚的視野Visual、嘗試次數(shù)Try?number、擁擠度因子δ、人工魚個體i,j之間的距離dij=|xi?xj|。
函數(shù)部分:人工魚當(dāng)前所在位置食物濃度表示為Y=f(x)(Y為目標(biāo)函數(shù)值)、人工魚各種行為函數(shù)(覓食行為Prey()、聚群行為Swarm()、追尾行為Follow()、隨機行為Move()以及行為評價函數(shù)Evaluate())。
3.2、人工魚的四種基本行為算法描述
3.2.1、覓食行為Prey()
??這是魚趨向食物的一種活動,一般認為它是通過視覺或味覺來感知水中的食物量或食物濃度來選擇行動的方向。設(shè)置人工魚當(dāng)前狀態(tài),并在其感知范圍內(nèi)隨機選擇另一個狀態(tài),如果得到的狀態(tài)的目標(biāo)函數(shù)大于當(dāng)前的狀態(tài),則向新選擇得到的狀態(tài)靠近一步,反之,重新選取新狀態(tài),判斷是否滿足條件,選擇次數(shù)達到一定數(shù)量后,如果仍然不滿足條件,則隨機移動一步。
算法描述:人工魚Xi在其視野內(nèi)隨機選擇一個狀態(tài)Xj
分別計算 Xi與 Xj的目標(biāo)函數(shù)值 Yi與 Yj,如果發(fā)現(xiàn) Yj比 Yi好,則 Xi向 Xj的方向移動一部:
Xt+1i=Xti+Xj?Xti||Xj?Xti||?Step?Rand()
否則, Xi繼續(xù)在其視野內(nèi)選擇狀態(tài) Xj,判斷是否滿足前進條件,反復(fù)嘗試 Tray?number次后,仍沒有滿足前進條件,則執(zhí)行隨機行為。
3.2.2、聚群行為Swarm()
??大量或少量的魚聚集成群,進行集體覓食和躲避敵害,這是它們在進化過程中形成的一種生存方式。人工魚探索當(dāng)前鄰居內(nèi)的伙伴數(shù)量,并計算伙伴的中心位置,然后把新得到的中心位置的目標(biāo)函數(shù)與當(dāng)前位置的目標(biāo)函數(shù)相比較,如果中心位置的目標(biāo)函數(shù)優(yōu)于當(dāng)前位置的目標(biāo)函數(shù)并且不是很擁擠,則當(dāng)前位置向中心位置移動一步,否則執(zhí)行覓食行為。魚聚群時會遵守兩條規(guī)則:一是盡量向鄰近伙伴的中心移動,二是避免過分擁擠。
算法描述:人工魚Xi搜索當(dāng)前視野內(nèi)(dij<Vaisual)的伙伴數(shù)目nf和中心位置Xc,若Yc/nf>δYi,則表明伙伴中心位置狀態(tài)較優(yōu)且不太擁擠,則Xi朝伙伴的中心位置移動一步:
否則進行覓食行為。
3.2.3、追尾行為Follow()
??當(dāng)某一條魚或幾條魚發(fā)現(xiàn)食物時,它們附近的魚會尾隨而來,導(dǎo)致更遠處的魚也會尾隨過來。人工魚探索周圍鄰居魚的最優(yōu)位置,當(dāng)最優(yōu)位置的目標(biāo)函數(shù)值大于當(dāng)前位置的目標(biāo)函數(shù)值并且不是很擁擠,則當(dāng)前位置向最優(yōu)鄰居魚移動一步,否則執(zhí)行覓食行為。
算法描述:人工魚Xi搜索當(dāng)前視野內(nèi)(dij<Vaisual)的伙伴中函數(shù)Yj最優(yōu)伙伴Xj,如果Yj/nf>δYi,表明最優(yōu)伙伴的周圍不太擁擠,則Xi朝詞伙伴移動一步:
否則執(zhí)行覓食行為。
3.2.4、隨機行為Move()
??它是覓食行為的一個缺省行為,指人工魚在視野內(nèi)隨機移動。當(dāng)發(fā)現(xiàn)食物時,會向食物逐漸增多的方向快速的移動。
算法描述人工魚Xi隨機移動一步,到達一個新的狀態(tài):
4、人工魚群算法描述
公告牌是記錄最優(yōu)人工魚個體狀態(tài)的地方。每條人工魚在執(zhí)行完一次迭代后將自身當(dāng)前狀態(tài)與公告牌中記錄的狀態(tài)進行比較,如果優(yōu)于公告牌中的狀態(tài)則用自身狀態(tài)更新公告牌中的狀態(tài),否則公告牌的狀態(tài)不變。當(dāng)整個算法的迭代結(jié)束后,公告牌的值就是最優(yōu)解。
行為評價是用來反映魚自主行為的一種方式,在解決優(yōu)化問題時選用兩種方式評價:一種是選擇最優(yōu)行為執(zhí)行;另一種是選擇較優(yōu)方向。對于解決極大值問題,可以使用試探法,即模擬執(zhí)行群聚、追尾等行為,然后評價行動后的值選擇最優(yōu)的來執(zhí)行,缺省的行為為覓食行為。
迭代終止條件:通常的方法是判斷連續(xù)多次所得值得均方差小魚允許的誤差;或判斷聚集于某個區(qū)域的人工魚的數(shù)目達到某個比例;或連續(xù)多次所得的均值不超過已尋找的極值;或限制最大迭代次數(shù)。若滿足終止條件,則輸出公告牌的最優(yōu)記錄;否則繼續(xù)迭代。
人工魚群算法的步驟:
5、人工魚群算法的尋優(yōu)原理
??人工魚群算法在尋優(yōu)的過程中,可能會集結(jié)在幾個局部最優(yōu)解的周圍,使人工魚跳出局部最優(yōu)解,實現(xiàn)全局尋優(yōu)的因素主要有:
- 覓食行為中重復(fù)次數(shù)較少時,為人工魚提供了隨機移動的機會,從而可能跳出局部最優(yōu)解;
- 隨機步長使得人工魚在前往局部最優(yōu)解的途中,有可能轉(zhuǎn)向全局最優(yōu)解;
- 擁擠度因子 δ 限制了聚群的規(guī)模,使得人工魚能夠更廣泛的尋優(yōu);
- 聚群行為能夠促使少出陷于局部最優(yōu)解的人工魚趨向全局最優(yōu)解的人工魚方向聚集,從而逃出局部最優(yōu)解;
- 追尾行為加快了人工魚向更優(yōu)狀態(tài)游動。
6、參數(shù)設(shè)置與性能
6.1、收斂基礎(chǔ)
??人工魚群算法中,覓食行為奠定了算法收斂的基礎(chǔ);聚群行為增強了算法收斂的穩(wěn)定性;追尾行為增強了算法收斂的快速性和全局性;其評價行為也對算法收斂的速度和穩(wěn)定性提供了保障。
6.2、各種參數(shù)對收斂性的影響
??人工魚群算法有5個基本參數(shù):群規(guī)模N、人工魚的視野Visual、步長step、擁擠度因子δ、重復(fù)次數(shù)Try?number。
1. 視野Visual:由于視野對算法中個行為都有較大影響,因此,它的變化對收斂性能影響也比較復(fù)雜。當(dāng)視野范圍較小時,人工魚的覓食行為和隨機行為比較突出;視野范圍較大時,人工魚的追尾行為和聚群行為將變得比較突出,相應(yīng)的算法的復(fù)雜度也會有所上升。總的來說:視野越大,越容易使人工魚發(fā)現(xiàn)全局最優(yōu)解并收斂。
2. 步長step:對于固定步長,隨著步長的增加,收斂的速度得到了一定的加速,但在超過一定的范圍后,有使得收斂速度減緩,步長過大時會出現(xiàn)震蕩現(xiàn)象而大大影響收斂速度。采用隨機步長的方式在一定程度上防止了震蕩現(xiàn)象的發(fā)生,并使得該參數(shù)的敏感度大大降低了,但最快的收斂速度還是最優(yōu)固定步長的收斂速度,所以,對于特定的優(yōu)化問題,我們可以考慮采用合適的固定步長或者變尺度方法來提高收斂速度。
3. 群規(guī)模N:人工魚的數(shù)目越多,跳出局部最優(yōu)解的能力越強,同時,收斂的速度也越快。當(dāng)然,付出的代價就是算法每次迭代的計算量也越大,因此,在使用過程中,滿足穩(wěn)定收斂的前提下,應(yīng)當(dāng)盡可能的減少個圖數(shù)目。
4. 嘗試次數(shù)Try?number:嘗試次數(shù)越多,人工魚的覓食行為能力越強,收斂的效率也越高。在局部極值突出的情況下,應(yīng)該適當(dāng)?shù)臏p少以增加人工魚隨機游動的概率,克服局部最優(yōu)解。
5. 擁擠度因子δ:在求極大值問題中,δ=1/(αnmax),α∈(0,1];在求極小值問題中,δ=αnmax,α∈(0,1]。其中α為極值接近水平,nmax為期望在該鄰域內(nèi)聚集的最大人工魚數(shù)目。擁擠度因子與nf相結(jié)合,通過人工魚是否執(zhí)行追尾和聚群行為對優(yōu)化結(jié)果產(chǎn)生影響。以極大值為例(極小值的情況正好與極大值相反),δ越大,表明允許的擁擠程度越小,人工魚擺脫局部最優(yōu)解的能力越強;但是收斂速度會有所減緩,這主要因為人工魚在逼近最優(yōu)解的同時,會因避免過分擁擠而隨機走開或者受其他人工魚的排斥作用,不能精確逼近極值點。可見,雖然δ的引入避免了人工魚過度擁擠而陷入局部最優(yōu)解,但是另一方面,該參數(shù)會使得位于極值點附件的人工魚之間存在相互排斥的影響,而難以想極值點精確逼近。所以,對于某些局部極值不是很嚴(yán)重的具體問題,可以忽略擁擠的因素,從而在簡化算法的同時也加快算法的收斂速度和提高結(jié)果的精確程度。
對追尾行為的描述
上圖中,人工魚 af0為人工魚 af1?5在各自視野內(nèi)的最優(yōu)人工魚,其食物濃度為 Yj, C1為以 af0為圓心,以視野為半徑的圓,即能探知 af0的最遠距離,人工魚越靠近 af0,狀態(tài)越優(yōu)。在極大值情況下:當(dāng) δnf≤1時,所有人工魚 af1?5都執(zhí)行追尾行為,向 af0移動;當(dāng) δnf>1時,若 C2的食物濃度為 Yj/δnf的等濃度食物圈,則 C2與 C1之間的人工魚 af1、 af2、 af3執(zhí)行追尾行為,向 af0移動,人工魚 af4、 af5執(zhí)行覓食行為。此時 δnf越大,執(zhí)行追尾行為的人工魚越少,反之越多。
7、人工魚群算法的特點
總結(jié)
- 上一篇: 使用C#和Excel进行报表开发(四)-
- 下一篇: EMOS 如何停止反病毒和防垃圾邮件功能