遺傳算法中交叉方法簡介及基於適應度的啓發式多點交叉

    作者注:本文寫於三年前,今天才轉到這裏來。

    在生物的自然進化過程中,兩個同源染色體通過交配而重組,生成新的染色體,從而產生新的個體或物種。交配重組是生物遺傳和進化過程中的一個主要環節。遺傳算法中的交叉算子就是通過模仿這個交配重組的環節而產生的。

    交叉又稱重組,是指把兩個父代個體的部分結構加以替換、重組而生成新個體的操作。交叉操作的作用是組合出新的個體,在串空間進行有效搜索,同時降低對有效模式的破壞概率。交叉操作是遺傳算法區別於其它進化算法的重要特徵,在遺傳算法的運算中起核心作用。

    那麼,設計交叉算子需考慮如下兩點:

    1)需保證前一代中優秀個體的性狀能夠在後一代的新個體中儘可能地得到遺傳和繼承;

    2)交叉算子設計要和編碼設計協調操作。

    交叉算子的設計主要包括以下兩個方面的內容:

    1)如何確定交叉點的位置;

    2)如何進行部分基因交換。

    二進制編碼的主要交叉操作有:一點交叉、兩點交叉、多點交叉、均勻交叉等。

    一點交叉又稱簡單交叉,它是指在個體基因串中只隨機設置一個交叉點,然後隨機選擇兩個個體做爲父代個體,相互交換它們交叉點後面的那部分基因塊,然後產生兩個新的子代個體。

    兩點交叉是指在個體基因串中隨機設置了兩個交叉點,然後再進行部分基因塊交換。
    多點交叉,是指在個體基因串中隨機設置多個交叉點,然後進行基因塊交換。其操作過程與一點交叉和兩點交叉相類似。

    均勻交叉,也稱一致交叉,其具體運算是通過隨機生成一個屏蔽字來決定子代個體如何從父代個體獲得基因。這個屏蔽字的長度要與個體基因串長度相同,且均由01生成。比如說屏蔽字的第一位數是0,那麼第一個子代個體基因串的第一位基因便繼承父代個體A,第二個子代個體基因串的第一位基因便繼承父代個體B;如果屏蔽字的第一位數是1,那麼第一個子代個體基因串的第一位基因便繼承父代個體B,第二個子代個體基因串的第一位基因便繼承父代個體A。以此類推。

    均勻交叉在開始迭代時可以加快新的較優模式的發現,在趨於收斂時可防止收斂於局部極值點,而且具有比經典交叉更好的重組能力,但比較容易破壞好的基因模式。在集合覆蓋問題中,每個個體的一些優秀的基因模式都有一定的階,都是以基因塊的形式存在的,而均勻交叉只是針對每一位基因進行交換重組,容易破壞好的模式。針對這一點,本文提出基於適應度的廣義多點交叉,在保留好的基因模式、減少生成重複個體方面都有很好的表現,並且加快了遺傳算法的收斂速度。

    基於適應度的啓發式多點交叉:設A和B分別是選擇出來進行交叉父代個體,它們的適應度分別爲fA和fB,對它們進行交叉操作產生的子代個體記爲C,每個個體的基因串長度爲L。那麼如何確定交叉點的位置呢?以及交叉點的個數有多少?本文記交叉點個數爲Nu,交叉點的位置是隨機產生的。

  具體操作如下:

   
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章