1. 程式人生 > >遺傳演算法的幾種改進

遺傳演算法的幾種改進

《Matlab》

【畢設】
防止優良基因因為變異而遭到破壞

【畢設】
放棄賭輪選擇:
將種群中的個體按適應度大小排列
排在前面的個體複製兩份;中間的一份;後面的不復制;

【畢設】早熟
早熟的原因P36
早熟表象:
1,群體中所有的個體都陷於同一極值而停止進化。
2,接近最優解的個體總是被淘汰,進化過程不收斂。


解決:
1,動態確定變異概率,防止優良基因因變異而遭破壞,又可在陷入區域性最優解的時候引入新的基因。
2,改進選擇方式,放棄賭輪選擇,以避免早期的高適應度個體迅速佔據種群 和 後期的種群中因個體的適應度相差不大而導致種群停止進化。
將種群中的個體按適應度大小排列
排在前面的個體複製兩份;中間的一份;後面的不復制;
3,擇優交叉
4,由於種群的基因多樣性可以減小陷入局優解的可能(多個原點,多條線去搜索,可以避免區域性最優解。???)。而加快種群進化速度又可以提高演算法的整體效能。(一對矛盾)       (是不是可以一直保持6個適應度值,其他的不要???)

 

【畢設】遺傳演算法 改進一
1,在初始種群中,對所有的個體按其適應度大小進行排序,然後計算個體的支援度和置信度。
2,按一定的比例複製(即將當前種群中適應度最高的兩個個體結構完整地複製到待配種群中)
3,安個體所處的位置確定其變異概率並變異;按優良個體複製4份,劣質個體不復制的原則複製個體
4,從複製組中隨機選擇兩個個體,對這兩個個體進行多次交叉,從所得的結果中選擇一個最優個體存入新種群;
5,若滿足結束條件,則停止,不然,跳轉第(1)步,直至找到所有符合條件的規則。

該演算法的優點是在各代的每一次演化過程中,子代總是保留了父代中最好的個體,以在“高適應度模式為祖先的家族方向”搜尋出更好的樣本,從而保證最終可以搜尋到全域性最優解。

【畢設】遺傳演算法 改進二
沒讀明白

【畢設】遺傳演算法 改進三
早熟,後期搜尋遲鈍
:解決方案:
有條件的最佳保留機制;採用遺傳-災變演算法;採用適應度比例機制和個體濃度選擇機制的加權和;引入主群和屬群的概念;適應度函式動態定標;多種群並行進化及自適應調整控制引數相結合的自適應並行遺傳演算法,對重要引數的選擇採用自適應變化而非固定不變。
採用的具體方法如下:
1,交叉和變異運算元的改進和協調採用。
     11將進化過程劃分為漸進和突進兩個不同階段
     22採用動態變異
     33運用正交設計或均勻設計方法設計新的交叉和變異運算元
2,採用與區域性搜尋演算法相結合的混合遺傳演算法,解決區域性搜尋能力差的問題
3,採用有條件的替代父代的方法,解決單一的群體更新方式難以兼顧多樣性和收斂性的問題
4,收斂速度慢的解決方法:
      11產生好的初始群體;
      22利用小生境技術;
      33使用移民技術;
      44採用自適應運算元;
      55採用與區域性搜尋演算法相結合的混合遺傳演算法;
      66對演算法的引數編碼採用動態模糊控制;

     77進行未成熟收斂判

     【接上】    
       77進行未成熟收斂判

1,初始群體的產生:
要求:在解空間中分佈均勻、
均勻設計和正交設計
廣義 海明距離
2,選擇運算元
“賭輪選擇”是很差的:早熟收斂和搜尋遲鈍。
應採用有條件的最佳保留策略,即有條件地將最佳個體直接傳遞到下一代或至少等同於前一代,這樣能有效防止“早熟收斂”

採用 遺傳-災變演算法,當判斷連續數代最佳染色體沒有任何進化,或者各個染色體已過於近似時,即可實施災變。災變的方法很多。
可以突然增大變異概率或對不同個體實施不同規模的突變,以產生不同數目的大量後代等。用災變的方法可以打破原有的基因的壟斷優勢,
增加基因的多樣性,創造有生命力的新個體。(萬一這種壟斷是迭代到終點的結果呢???)
3,遺傳演算法重要引數的選擇
4,適應度函式設計
5,進化過程中動態調整子代個體(防止早熟)
    11移民運算元(淘汰差的個體,淘汰率15%~20%,用新個體代替)
    22過濾相似個體 (減小適應度差值小於門限,廣義海明距離小於門限)
    33動態補充子代新個體

【接上】
6,小範圍競爭擇優的交叉、變異操作