1. 程式人生 > >部門內部培訓時的一份備講稿——人工魚群算法

部門內部培訓時的一份備講稿——人工魚群算法

可能 結束 ray 一個隊列 集成 更遠 行集 規則 step

每周一次培訓,內容和工作掛鉤,這次培訓的主要內容就是向大家簡單講講人工魚群算法。可能沒有什麽借鑒的價值,但是對快速入門理解魚群算法有很大幫助,以下是原稿:

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

魚類活動中,覓食行為、群聚行為、追尾行為和隨機行為與尋優命題的解決有較為密切的關系,如何利用簡單有效的方式來構造和實現這些行為將是算法實現的主要

題。

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

人工魚-》魚群-》總數 N

人工魚對外的感知是依靠視覺來實現的:視覺Visual

動物嘛 總有個對自身狀態的感知,比如吃飽了嗎,睡好了嗎?人工魚個體的狀態:X=(x1,x2,...,xn)(其中xi(i=1,2,...,n)為尋優的變量)

既然魚沒吃飽,又看到食物了,那麽它一定要向食物遊過去,對吧,那它的速度怎麽形容呢?用一個擬人化的說法就是:步長

——Step

Trynumber:打個比方,發黴的饅頭、饅頭、肉包子————trynumber就是我的一個嘗試次數,如果在次數內,我發現更好的,我就替換成更好的,如果沒有更好的,我就用原來的。

δ:還是剛才的比方,我看到一家店外面排了老長的隊,人山人海我根本擠不進去,縱使我想吃他家的東西,但是進不去,這裏就又引出一個變量——δ,擁擠因子,超出某個限定的值,就換一個隊列或行為操作。

bestfish:起到一個公告板的作用,公告板用來記錄最優人工魚個體的狀態。各人工魚個體在尋優過程中,每次行動完畢就檢驗自身狀態與公告板的狀態,如果自身狀態優於公告板狀態,就將公告板的狀態改寫為自身狀態,這樣就使公告板記錄下歷史最優的狀態。Bulletin

接下來是人工魚的四種基本行為的描述:

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

2、 聚群行為 Swarm()大量或少量的魚聚集成群,進行集體覓食和躲避敵害,這是它們在進化過程中形成的一種生存方式。人工魚探索當前範圍(距離dis<視野visual)的夥伴數量nf,並計算夥伴的中心位置Xc,然後把新得到的中心位置的目標函數與當前位置的目標函數相比較,如果中心位置的目標函數優於當前位置的目標函數並且不是很擁擠食物濃度Yc/夥伴數量nf>擁擠因子),則當前位置向中心位置移動一步,否則執行覓食行為。魚聚群時會遵守兩條規則:一是盡量向鄰近夥伴的中心移動,二是避免過分擁擠。

3、 追尾行為 Follow()當某一條魚或幾條魚發現食物時,它們附近的魚會尾隨而來,導致更遠處的魚也會尾隨過來。人工魚探索周圍最優狀態Yj鄰居魚Xj,當最優狀態的目標函數值大於當前位置的目標函數值並且不擁擠,則當前位置向最優鄰居魚Xj移動一步,否則執行覓食行為。

4、 隨機行為 Move()它是覓食行為的一個缺省行為,指人工魚在視野內隨機移動。當發現食物時,會向食物逐漸增多的方向快速的移動。

Step1:設定魚群的參數,包括魚群的規模m, 最大叠代次數gen,人工魚的感知範圍Visual,最大移動步長step,擁擠度因子d等;

Step2:在參數區間內隨機生成m條人工魚個體作為初始魚群

Step3:計算每條魚的食物濃度函數(目標函數),把最優的值放入公告板中;

Step4:對於每條人工魚執行以下操作

1計算出追尾行為、聚群行為的值,采用行為選擇策略,選擇最優的行為作為魚的移動方向,缺省行為是覓食行為。

2計算出每條魚的食物濃度函數(目標函數),其最優值與公告板中的值進行比較,最終公告板中始終保持最優的值。

Step5:判斷是否滿足結束條件,如果滿足結束,否則轉Step4

最終公告板中的值就是最優值。

部門內部培訓時的一份備講稿——人工魚群算法