1. 程式人生 > >遺傳演算法 差分進化演算法 粒子群優化演算法區別

遺傳演算法 差分進化演算法 粒子群優化演算法區別

一 遺傳演算法

 遺傳演算法(GA)作為一種經典的進化演算法,自 Holland提出之後在國際上已經形成了一個比較活躍的研究領域. 人們對 GA 進行了大量的研究,提出了各種改進演算法用於提高演算法的收斂速度和精確性. 遺傳演算法採用選擇,交叉,變異操作,在問題空間搜尋最優解.經典遺傳演算法首先對引數進行編碼,生成一定數目的個體,形成初始種群其中每個個體可以是一維或多維向量,以二進位制數串表示,稱為染色體.染色體的每一位二進位制數稱為基因.根據自然界生物優勝劣汰的選擇思想,演算法中設計適應度函式作為評判每個個體效能優劣的標準,效能好的個體以一定概率被選擇出來作為父代個體參加以後的遺傳操作以生成新一代種群.演算法中基本的遺傳運算元為染色體選擇,染色體上基因雜交和基因變異.生成新一代種群後演算法迴圈進行適應度評價、遺傳操作等步驟,逐代優化,直至滿足結束條件.

標準遺傳演算法的流程如下:

Stepl:初始化群體.

Step2:計算群體上每個個體的適應度值.

Step3:按由個體適應度值所決定的某個規則選擇將進入下一代的個體.

Step4:按概率cp 進行雜交操作.

Step5:按概率mp 進行變異操作.

Step6:若滿足某種停止條件,則執行 Step7,否則執行 Step2.

Step7:輸出種群中適應度值最優的染色體作為問題的滿意解.

一般情況下,演算法的終止條件包括:1、完成了預先給定的進化代數;2、種群中的最優個體在連續若干代沒有改進或平均適應度在連續若干代基本沒有改進;3、所求問題最優值小於給定的閾值.

粒子群(PSO)演算法是近幾年來最為流行的進化演算法,最早是由Kenned和Eberhart於1995年提出.PSO 演算法和其他進化演算法類似,也採用“群體”和“進化”的概念,通過個體間的協作與競爭,實現複雜空間中最優解的搜尋.PSO 先生成初始種群,即在可行解空間中隨機初始化一群粒子,每個粒子都為優化問題的一個可行解,並由目標函式為之確定一個適應值(fitness value).PSO 不像其他進化演算法那樣對於個體使用進化運算元,而是

將每個個體看作是在n 維搜尋空間中的一個沒有體積和重量的粒子,每個粒子將在解空間中運動,並由一個速度決定其方向和距離.通常粒子將追隨當前的最優粒子而運動,並經逐代搜尋最後得到最優解.在每一代中,粒子將跟蹤兩個極值,一為粒子本身迄今找到的最優解 pbest ,另一為全種群迄今找到的最優解 gbest.由於認識到 PSO 在函式優化等領域所蘊含的廣闊的應用前景,在 Kenned 和 Eberhart 之後很多學者都進行了這方面的研究.目前已提出了多種 PSO改進演算法,並廣泛應用到許多領域.

二、差分進化演算法

差分進化演算法在 1997 年日本召開的第一屆國際進化優化計算競賽(ICEO)]表現突出,已成為進化演算法(EA)的一個重要分支,很多學者開始研究 DE 演算法,並取得了大量成果.2006年 CEC 國際會議將其作為專題討論,由此可見 DE 演算法已成為學者的研究熱點,具有很大的發展空間.

DE演算法的基本原理:

DE 演算法主要用於求解連續變數的全域性優化問題,其主要工作步驟與其他進化演算法基本一致,主要包括變異(Mutation)、交叉(Crossover)、選擇(Selection)三種操作。演算法的基本思想是從某一隨機產生的初始群體開始,利用從種群中隨機選取的兩個個體的差向量作為第三個個體的隨機變化源,將差向量加權後按照一定的規則與第三個個體求和而產生變異個體,該操作稱為變異。然後,變異個體與某個預先決定的目標個體進行引數混合,生成試驗個體,這一過程稱之為交叉。如果試驗個體的適應度值優於目標個體的適應度值,則在下一代中試驗個體取代目標個體,否則目標個體仍儲存下來,該操作稱為選擇。在每一代的進化過程中,每一個體向量作為目標個體一次,演算法通過不斷地迭代計算,保留優良個體,淘汰劣質個體,引導搜尋過程向全域性最優解逼近。

DE演算法的求解步驟:
(1)基本引數的設定,包括NP, F, CR
(2)初始化種群
(3)計算種群適應度值
(4)終止條件不滿足時,進行迴圈,依次執行變異、交叉、選擇運算,直到終止運算。


 圖2.1給出了演算法的具體流程:

控制引數對一個全域性優化演算法的影響是很大的,DE的控制變數選擇也有一些經驗規則.

(1)種群數量.根據經驗,種群數量 NP 的合理選擇在5 D   10D之間,必須滿足 NP ≥4以確保DE具有足夠的不同的變異向量.

(2)變異運算元.變異運算元 F ∈ [0,2]是一個實常數因數,它決定偏差向量的放大比例.迄今為止的研究表明,小於0.4和大於1的 F 值僅偶爾有效, F = 0.5通常是一個較好的初始選擇.若種群過早收斂,那麼 F 或 NP 應該增加.

(3)交叉運算元.交叉運算元CR 是一個範圍在[0,1]的實數,它是控制一個試驗向量來自隨機選擇的變異向量而不是原來向量的概率的引數.CR 的一個較好的選擇是0.1,但較大的CR 通常加速收斂,為了看是否可能獲得一個快速解,可以首先嚐試 CR = 0.9或 CR = 1.0.

(4)最大進化代數.它表示DE演算法執行到指定的進化代數之後就停止執行,並將當前群體中的最佳個體作為所求問題的最優解輸出.一般取值範圍為100-200,當然根據問題的需要,可以增大最大進化代數以提高演算法的求解精度,不過這樣往往使得演算法的執行時間過長.

(5)終止條件.除最大進化代數可作為DE的終止條件,還需要其它判定準則.一般當適應度值小於閥值時程式終止,閥值常選為610 .

上述引數中,F ,CR 與 NP 一樣,在搜尋過程中是常數,一般 F 和CR 影響搜尋過程的收斂速度和魯棒性,它們的優化值不僅依賴於目標函式的特性,還與 NP 有關.通常可通過在對不同值做一些試驗之後利用試驗和結果誤差找到 F ,CR 和 NP 合適值。

引數設定

種群規模NP:多樣性,NP大,增加搜尋到最優解的概率,但是計算量加大。

縮放因子F:對基向量擾動程度,F大,擾動大,能夠在更大範圍尋找解。0.4~1

交叉概率CR:種群多樣性,CR大,更多個體改變,利於尋找最優解。0.6~1

區別:不同之處在於遺傳演算法是根據適應度值來控制父代雜交,變異後產生的子代被選擇的概率值,在最大化問題中適應值大的個體被選擇的概率相應也會大一些。而差分進化演算法變異向量是由父代差分向量生成,並與父代個體向量交叉生成新個體向量,直接與其父代個體進行選擇。顯然差分進化演算法相對遺傳演算法的逼近效果更加顯著。

遺傳演算法,粒子群演算法,差分進化演算法都屬於進化演算法的分枝,很多學者對這些演算法進行了研究,通過不斷的改進,提高了演算法的效能,擴大了應用領域因此很有必要討論這些演算法的特點,針對不同應用領域和演算法的適應能力,推薦不同的演算法供使用將是十分有意義的工作.在文獻中,作者針對廣泛使用的 34 個基準函式分別對 DE,EA,PSO 進行了系列實驗分析,對各種演算法求解最優解問題進行了討論.通過實驗分析,DE 演算法獲得了最優效能,而且演算法比較穩定,反覆運算都能收斂到同一個解;PSO 演算法收斂速度次之,但是演算法不穩定,最終收斂結果容易受引數大小和初始種群的影響;EA 演算法收斂速度相對比較慢,但在處理噪聲問題方面,EA 能夠很好的解決而 DE 演算法很難處理這種噪聲問題.

通過實驗和文獻分析,我們對遺傳演算法、粒子群演算法、差分進化演算法的一些指標分別進行分析現歸納如下:

(1)編碼標準     GA 採用二進位制編碼,PSO、DE 都採用浮點實數編碼,近年來許多學者通過整數編碼將GA 演算法、PSO 演算法應用與求解離散型問題,特別是 0-1 非線性優化為題,整數規劃問題、混合整數規劃問題,而離散的 DE 演算法則研究的比較少,而採用混合編碼技術的 DE 演算法則研究更少.

(2)引數設定問題    DE 演算法主要有三個引數(種群大小NP、縮放因子F、交叉概率CR)要調整,而且引數設定對結果影響不太明顯,因此更容易使用.相對於 GA 和 PSO 演算法的引數過多,不同的引數設定對最終結果影響也比較大,因此在實際使用中,要不斷調整,加大了演算法的使用難度.高維問題在實際問題中,由於轉化為個體的向量維數非常高,因此演算法對高維問題的處理,將是很重要的.只有很好的處理高維問題,演算法才能很好的應用於實際問題.

(3)高維問題GA 對高維問題收斂速度很慢甚至很難收斂,但是 PSO 和 DE 則能很好解決.尤其是DE 演算法,收斂速度很快而且結果很精確.

(4)收斂效能      對於優化問題,相對 GA,DE 和 PSO 演算法收斂速度比較快,但是 PSO 容易陷入區域性最優解,而且演算法不穩定.

(5)應用廣泛性       由於 GA 演算法發明比較早,因此應用領域比較廣泛,PSO 演算法自從發明以來,已成為研究熱點問題,這方面應用也比較多,而 DE 演算法近幾年才引起人們的關注而且演算法效能好,因此應用領域將會增多.

DE缺點

1、搜尋停滯:種群個體較少,且生成新一代個體的適應值比原種群個體適應值差,導致個體難以更新,沒有收斂到極值點。

2、早熟收斂:引數設定不當,收斂過快,區域性最優問題。

原文網址點選開啟連結