遺傳演算法(ga)作為一種經典的進化演算法,自 holland提出之後在國際上已經形成了乙個比較活躍的研究領域. 人們對 ga 進行了大量的研究,提出了各種改進演算法用於提高演算法的收斂速度和精確性. 遺傳演算法採用選擇,交叉,變異操作,在問題空間搜尋最優解.經典遺傳演算法首先對引數進行編碼,生成一定數目的個體,形成初始種群其中每個個體可以是一維或多維向量,以二進位制數串表示,稱為染色體.染色體的每一位二進位制數稱為基因.根據自然界生物優勝劣汰的選擇思想,演算法中設計適應度函式作為評判每個個體效能優劣的標準,效能好的個體以一定概率被選擇出來作為父代個體參加以後的遺傳操作以生成新一代種群.演算法中基本的遺傳運算元為染色體選擇,染色體上基因雜交和基因變異.生成新一代種群後演算法迴圈進行適應度評價、遺傳操作等步驟,逐代優化,直至滿足結束條件.
標準遺傳演算法的流程如下:
stepl:初始化群體.
step2:計算群體上每個個體的適應度值.
step4:按概率cp 進行雜交操作.
step5:按概率mp 進行變異操作.
step6:若滿足某種停止條件,則執行 step7,否則執行 step2.
step7:輸出種群中適應度值最優的染色體作為問題的滿意解.
一般情況下,演算法的終止條件包括:1、完成了預先給定的進化代數;2、種群中的最優個體在連續若干代沒有改進或平均適應度在連續若干代基本沒有改進;3、所求問題最優值小於給定的閾值.
粒子群(pso)演算法是近幾年來最為流行的進化演算法,最早是由kenned和eberhart於2023年提出.pso 演算法和其他進化演算法類似,也採用「群體」和「進化」的概念,通過個體間的協作與競爭,實現複雜空間中最優解的搜尋.pso 先生成初始種群,即在可行解空間中隨機初始化一群粒子,每個粒子都為優化問題的乙個可行解,並由目標函式為之確定乙個適應值(fitness value).pso 不像其他進化演算法那樣對於個體使用進化運算元,而是將每個個體看作是在n 維搜尋空間中的乙個沒有體積和重量的粒子,每個粒子將在解空間中運動,並由乙個速度決定其方向和距離.通常粒子將追隨當前的最優粒子而運動,並經逐代搜尋最後得到最優解.在每一代中,粒子將跟蹤兩個極值,一為粒子本身迄今找到的最優解 pbest ,另一為全種群迄今找到的最優解 gbest.由於認識到 pso 在函式優化等領域所蘊含的廣闊的應用前景,在 kenned 和 eberhart 之後很多學者都進行了這方面的研究.目前已提出了多種 pso改進演算法,並廣泛應用到許多領域.
差分進化演算法在 1997 年日本召開的第一屆國際進化優化計算競賽(iceo)]表現突出,已成為進化演算法(ea)的乙個重要分支,很多學者開始研究 de 演算法,並取得了大量成果.2023年 cec 國際會議將其作為專題討論,由此可見 de 演算法已成為學者的研究熱點,具有很大的發展空間.
每個個體的優劣程度根據已定義好的適應度函式來評價,這與被解決的問題有關.基本的差分進化演算法實現過程如下:
step1: 確定de控制引數和所採用的具體策略,de控制引數包括:種群數量、變異運算元、交叉運算元、最大進化代數、終止條件等.
step2: 隨機產生初始種群,進化代數 t = 1.
step3: 對初始種群進行評價,即計算初始種群中每個個體的適應度值.
step4: 判斷是否達到終止條件或進化代數達到最大.若是,則進化終止,將此時的最佳個體作為解輸出;若否,繼續.
step5:進行變異和交叉操作,對邊界條件進行處理,得到臨時種群.
step6: 對臨時種群進行評價,計算臨時種群中每個個體的適應度值.
step7: 進行選擇操作,得到新種群.step8: 進化代數 t = t+ 1,轉步驟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 合適值.
遺傳演算法,粒子群演算法,差分進化演算法都屬於進化演算法的分枝,很多學者對這些演算法進行了研究,通過不斷的改進,提高了演算法的效能,擴大了應用領域因此很有必要討論這些演算法的特點,針對不同應用領域和演算法的適應能力,推薦不同的演算法供使用將是十分有意義的工作.在文獻中,作者針對廣泛使用的 34 個基準函式分別對 de,ea,pso 進行了系列實驗分析,對各種演算法求解最優解問題進行了討論.通過實驗分析,de 演算法獲得了最優性能,而且演算法比較穩定,反覆運算都能收斂到同乙個解;pso 演算法收斂速度次之,但是演算法不穩定,最終收斂結果容易受引數大小和初始種群的影響;ea 演算法收斂速度相對比較慢,但在處理雜訊問題方面,ea 能夠很好的解決而 de 演算法很難處理這種雜訊問題.
通過實驗和文獻分析,我們對遺傳演算法、粒子群演算法、差分進化演算法的一些指標分別進行分析現歸納如下:
(1)編碼標準 ga 採用二進位制編碼,pso、de 都採用實數編碼,近年來許多學者通過整數編碼將ga 演算法、pso 演算法應用與求解離散型問題,特別是 0-1 非線性優化為題,整數規劃問題、混合整數規劃問題,而離散的 de 演算法則研究的比較少,而採用混合編碼技術的 de 演算法則研究更少.
(2)引數設定問題 de 演算法主要有兩個引數要調整,而且引數設定對結果影響不太明顯,因此更容易使用.相對於 ga 和 pso 演算法的引數過多,不同的引數設定對最終結果影響也比較大,因此在實際使用中,要不斷調整,加大了演算法的使用難度.高維問題在實際問題中,由於轉化為個體的向量維數非常高,因此演算法對高維問題的處理,將是很重要的.只有很好的處理高維問題,演算法才能很好的應用於實際問題.
(3)高維問題 ga 對高維問題收斂速度很慢甚至很難收斂,但是 pso 和 de 則能很好解決.尤其是de 演算法,收斂速度很快而且結果很精確.
(4)收斂效能 對於優化問題,相對 ga,de 和 pso 演算法收斂速度比較快,但是 pso 容易陷入區域性最優解,而且演算法不穩定.
(5)應用廣泛性 由於 ga 演算法發明比較早,因此應用領域比較廣泛,pso 演算法自從發明以來,已成為研究熱點問題,這方面應用也比較多,而 de 演算法近幾年才引起人們的關注而且演算法效能好,因此應用領域將會增多.
原文**:
進化演算法 遺傳演算法與粒子群演算法之間的比較
遺傳演算法 ga 作為一種經典的進化演算法,自 holland提出之後在國際上已經形成了乙個比較活躍的研究領域.人們對 ga 進行了大量的研究,提出了各種改進演算法用於提高演算法的收斂速度和精確性.遺傳演算法採用選擇,交叉,變異操作,在問題空間搜尋最優解.經典遺傳演算法首先對引數進行編碼,生成一定數...
遺傳演算法與進化演算法
1858年7月1日c.r.達爾文與a.r.華萊士在倫敦林奈學會上宣讀了演化論的 至此進化理論深入人心,為廣大吃瓜群眾開闢了乙個思想的新的天地。而我們的機器學習大師們向來喜歡從生物學家那裡找靈感,神經網路的靈感據說來自於人體的神經元,而根據演化論的思想,我們的大師們提出了遺傳演算法和進化演算法。其實我...
進化演算法 遺傳演算法
一 能解決的問題 如果你需要解決乙個問題,這個問題的每乙個可能的解均可以用位串來表示,那麼遺傳演算法就能解決這個問題。二 術語 個體 每乙個可能的解 種群 一群個體 基因 個體中位的乙個序列包含著個體的一些特徵資訊,這個序列被稱為基因 染色體 乙個個體中全部基因的集合 基因型 特定的基因被稱為基因型...