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