1. 程式人生 > >人工魚群演算法詳解

人工魚群演算法詳解

1、起源

  人工魚群演算法是李曉磊等人於2002年在動物群體智慧行為研究的基礎上提出的一種新型方盛優化演算法,該演算法根據水域中魚生存數目最多的地方就是本水域中富含營養物質最多的地方這一特點來模擬魚群的覓食行為而實現尋優。演算法主要利用魚的三大基本行為:覓食、聚群和追尾行為,採用自上而下的尋優模式從構造個體的底層行為開始,通過魚群中各個體的區域性尋優,達到全域性最優值在群體中凸顯出來的目的。

  該方法採用自下而上的尋優思路,首先設計單個個體的感知、行為機制,然後將一個或一群實體放置在環境中,讓他們在環境的互動作用中解決問題。

2、生態學基礎

  在一片水域中,魚存在的數目最多的地方就是本水域富含營養物質最多的地方,依據這一特點來模仿魚群的覓食、聚群、追尾等行為,從而實現全域性最優,這就是魚群演算法的基本思想。魚類活動中,覓食行為、群聚行為、追尾行為和隨機行為與尋優命題的解決有較為密切的關係,如何利用簡單有效的方式來構造和實現這些行為將是演算法實現的主要為題。

3、人工魚的結構模型

  人工魚是真實魚抽象化、虛擬化的一個實體,其中封裝了自身資料和一系列行為,可以接受環境的刺激資訊,做出相應的活動。其所在的環境由問題的解空間和其他人工魚的狀態,它在下一時刻的行為取決於自身的狀態和環境的狀態,並且它還通過自身的活動來影響環境,進而影響其他人工魚的活動。

  人工魚對外的感知是依靠視覺來實現的,人工魚的模型中使用如下方法實現人工魚的虛擬視覺:

XV=X+VisuanlRand()
Xnext=X+XVX||XVX||StepRand()
其中Rand()為隨機函式,產生0到1之間的隨機數,Step為步長。
人工魚視覺的概念
人工魚視覺的概念

3.1、人工魚中封裝的變數和函式

變數部分:人工魚的總數N、人工魚個體的狀態X=(x1,x2,...,xn)(其中xi(i=1,2,...,n)為尋優的變數)、人工魚移動的最大步長Step、人工魚的視野Visual、嘗試次數Trynumber、擁擠度因子δ、人工魚個體i,j之間的距離dij=|xixj|
函式部分:人工魚當前所在位置食物濃度表示為Y=f(x)Y為目標函式值)、人工魚各種行為函式(覓食行為Prey()、聚群行為Swarm()、追尾行為Follow()、隨機行為Move()以及行為評價函式Evaluate())。

3.2、人工魚的四種基本行為演算法描述

3.2.1、覓食行為P
rey()

  這是魚趨向食物的一種活動,一般認為它是通過視覺或味覺來感知水中的食物量或食物濃度來選擇行動的方向。設定人工魚當前狀態,並在其感知範圍內隨機選擇另一個狀態,如果得到的狀態的目標函式大於當前的狀態,則向新選擇得到的狀態靠近一步,反之,重新選取新狀態,判斷是否滿足條件,選擇次數達到一定數量後,如果仍然不滿足條件,則隨機移動一步。
演算法描述:人工魚Xi在其視野內隨機選擇一個狀態Xj

Xj=Xi+VisuanlRand()
分別計算XiXj的目標函式值YiYj,如果發現YjYi好,則XiXj的方向移動一部:
Xt+1i=Xti+XjXti||XjXti||StepRand()
否則,Xi繼續在其視野內選擇狀態Xj,判斷是否滿足前進條件,反覆嘗試Traynumber次後,仍沒有滿足前進條件,則執行隨機行為。

3.2.2、聚群行為Swarm()

  大量或少量的魚聚整合群,進行集體覓食和躲避敵害,這是它們在進化過程中形成的一種生存方式。人工魚探索當前鄰居內的夥伴數量,並計算夥伴的中心位置,然後把新得到的中心位置的目標函式與當前位置的目標函式相比較,如果中心位置的目標函式優於當前位置的目標函式並且不是很擁擠,則當前位置向中心位置移動一步,否則執行覓食行為。魚聚群時會遵守兩條規則:一是儘量向鄰近夥伴的中心移動,二是避免過分擁擠。
演算法描述:人工魚Xi搜尋當前視野內(dij<Vaisual)的夥伴數目nf和中心位置