1. 程式人生 > >粒子群演算法1——常用智慧演算法

粒子群演算法1——常用智慧演算法

一、遺傳演算法

1.概念

       遺傳演算法(GA)自 1975 年 Holland 提出之後,作為一種經典的進化演算法,已經在國際上形成了一個活躍的研究領域。經典遺傳演算法首先對待求解問題的引數進行編碼,編碼的每一位稱之為“基因”,由基因組成的若干向量稱之為“染色體”。這樣將所求問題的每一組引數解編碼為一個染色體,若干染色體按照自然界優勝劣汰的進化規律,以適應度函式為評價解好壞的標準,逐代演化。較好的染色體個體將會有較大的概率被選擇出來,作為父代進入到下一次遺傳演化中,經過雜交變異等遺傳操作生成新的種群。若干代演化之後,最終生成的種群將會擁有更好的適應度值,將染色體解碼,即得到求解問題的近似最優解。演算法中的基本遺傳運算元有染色體選擇,基因雜交和基因變異等。

2.演算法流程

Step1:隨機產生初始種群,設定進化代數t = 1以及最大進化代數T; 
Step2:計算群體中每個個體的適應度值; 
Step3:判斷當前適應度值是否滿足要求,或進化代數已經達到最大,若是,則演算法終止,將當前的最佳個體作為解輸出;若否,則               繼續;
Step4:依據適應度條件,選擇將進入下一代的父代個體;  
Step5:將雜交運算元應用於群體,按概率cp 進行雜交操作; 
Step6:將變異運算元應用於群體,按概率mp 進行變異操作; 
Step7: 進化代數t = t + 1,轉Step3。

其演算法的實現流程圖如下

二、進化演算法

1.概念

        進化規劃是由 Lawrence  J.  Fogel 等人在 1966 年提出的,是一種通過進化來達到行為智慧化的演算法,但在演算法提出之後的三十年間,未能得到足夠的重視,直到 20 世紀90 年代,演算法得到改進,才作為進化演算法的一個分支被廣泛應用。進化規劃演算法的主要
規則是從一組隨機產生的個體開始搜尋,通過由適應度函式來評價個體的優劣程度,對個體進行選擇,變異等操作,令其逐漸靠近全域性最優解。與遺傳演算法類似,進化規劃演算法同樣容易早熟,因此進化規劃演算法研究的主要內容之一就是避免早熟,以及均衡演算法的探索和執行能力。

2.演算法流程

Step1:確定進化策略以及各項控制引數; 
Step2:隨機初始化種群,並設定進化代數t = 1,最大進化代數T; 
Step3:根據目標函式計算種群中每個個體的適應度值; 
Step4:判斷當前適應度值是否滿足要求,或進化代數已經達到最大,若是,則演算法終止,將當前的最佳個體作為解輸出;若否,則                繼續; 
Step5:對個體進行重組、變異操作,得到臨時種群; 
Step6:根據目標函式計算臨時種群中每個個體的適應度值;
Step7:根據評價結果進行選擇操作,得到新種群; 
Step8:進化代數t = t + 1,轉Step4。


其演算法流程如下:

三、群體智慧演算法

        群智慧演算法是一種仿生的、隨機的概率搜尋演算法,所以一般將它歸結為一種新興的演化計算方法。群智慧的概念最早由 Beni,Hackwood 和 Wang 三人在元胞自動機系統中提出,原本指在一維或二維網格空間中,與相鄰個體相互作用,從而實現自組織的主體。之後 Bonabeau、Dorigo 和 Theraula 將其定義為任何一種受昆蟲或者其他動物的群體社會行為啟發而設計出具有分散式特徵的演算法。再之後,Bonabeau 將其定義為無智慧或具有簡單智慧的主體,通過任何形式的聚集或者協同行動表現出智慧行為特徵的演算法。

        目前在群智慧理論研究領域有如粒子群演算法、蟻群演算法、蜂群演算法、免疫演算法、細菌覓食演算法等早期提出的演算法,也有以及近些年新提出的魚群演算法,螢火蟲演算法等演算法。其中的蟻群演算法和粒子群演算法是兩種較為典型的群智慧演算法。其中的蟻群演算法和粒子群演算法是兩種較為典型的群智慧演算法。

Mark Millonas 在 1994 年定義了群智慧的五條基本原則: 
①  鄰近原則,群內個體具有對簡單的空間或時間進行計算和評估的能力; 
②  品質原則,群內個體具有對環境以及群內其他個體的品質作出響應的能力; 
③  反應多樣性原則,群內的不同個體能夠對環境中某一變化做出不同的反應; 
④  穩定性原則,群內個體的行為模式不會在每次環境發生變化時都發生改變; 
⑤  適應性原則,群內個體能夠在所需代價不高的情況下,在適當的時候改變自身的行為模式。

群智慧演算法具有如下特點: 
①  群智慧演算法不存在中心控制,因此當其中某個或者幾個個體表現較差時,並不會影響到整個群體對問題的求解。這種特性使得群智慧演算法更適應網路環境下的工作,且具有較強的魯棒性。 
②  群體中的每個個體都可以以改變環境的方式進行間接通訊,通過這種間接通訊,個體之間能夠傳遞資訊與共同協作,並且當個體數目增加時,通訊所增加的開銷比傳統演算法要小很多,這使得群智慧演算法十分易於擴充。 
③  群體具有自組織性,演算法僅通過簡單個體的互動過程的集合,而表現出複雜的群體行為。 
④  群體中的個體所具有的能力以及在演化迭代中所遵循的行為規則都非常簡單,因此群智慧演算法在程式設計上非常容易實現。

1.蟻群演算法

        蟻群演算法是由義大利學者Dorigo 在 1991 年,受到自然界中蟻群集體覓食行為的啟發而提出的。蟻群演算法是對螞蟻群落食物採集過程的模擬,蟻群最初隨機地開始尋找食物,當某隻螞蟻找到食物後,會在回蟻穴的路上釋放一種被稱作資訊素的揮發性分泌物,其他螞蟻會被資訊素吸引,而沿著該路線去尋找食物,但有些螞蟻會另闢蹊徑,當新開闢的有效路線更短時,新路線的資訊素濃度較高,會吸引更多的螞蟻來走這條路,這樣在若干次尋路之後,所有的螞蟻都會聚集到從蟻穴到食物源最短的一條路線上。蟻群演算法已成功應用於許多離散優化問題。

--------------------- 
作者:暮秋之子_cumt 
來源:CSDN 
原文:https://blog.csdn.net/jinpeng_cumt/article/details/55214494?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!

 

 

 

以人工魚群演算法、煙花爆炸優化演算法兩個典型的群體智慧演算法為主,系統介紹了演算法的原理,建立了基於協作、競爭機制的群體智慧演算法的數學模型。全書著重分析了人工魚群演算法和煙花爆炸優化演算法的弱點,並提出了多種新穎的改進機制,給出了演算法的詳細實現步驟。本書還詳細探討了部分群體智慧演算法在VRP問題、影象邊緣檢測、SVM反問題、網路態勢預測、資料聚類、特徵選擇等領域內的應用,並介紹了近年來出現的兩個比較新穎的群體智慧演算法,顧問引導搜尋演算法和教—學優化演算法。