遺傳算法中幾種交叉算子小結

(圖片例子來自上課時老師的PPT,不過老師說PPT是他從網上組合的,所以沒有出處)

1、Partial-Mapped Crossover (PMX)
  過程:
    第一步,隨機選擇一對染色體(父代)中幾個基因的起止位置(兩染色體被選位置相同):

    第二步,交換這兩組基因的位置:

    第三步,做衝突檢測,根據交換的兩組基因建立一個映射關係,如圖所示,以1-6-3這一映射關係爲例,可以看到第二步結果中子代1存在兩個基因1,這時將其通過映射關係轉變爲基因3,以此類推至沒有衝突爲止。最後所有衝突的基因都會經過映射,保證形成的新一對子代基因無衝突:

    最終結果:

   

2、Order Crossover (OX)
  過程:
    第一步,與PMX相同,隨機選擇一對染色體(父代)中幾個基因的起止位置(兩染色體被選位置相同):


     第二步,生成一個子代,並保證子代中被選中的基因的位置與父代相同:


    第三步(可再分兩小步),先找出第一步選中的基因在另一個父代中的位置,再將其餘基因按順序放入上一步生成的子代中:
  需要注意的是,這種算法同樣會生成兩個子代,另一個子代生成過程完全相同,只需要將兩個父代染色體交換位置,第一步選中的基因型位置相同,本例中的另一個子代爲:254913678
  與PMX不同的是,不用進行衝突檢測工作(實際上也只有PMX需要做衝突檢測)。
 
3、Position-based Crossover (PBX)
  過程:
    第一步,隨機選擇一對染色體(父代)中幾個基因,位置可不連續,但兩染色體被選位置相同:

    第二步,與OX的第二步相同,生成一個子代,並保證子代中被選中的基因的位置與父代相同:

    第三步,也與OX的第三步相同,先找出第一步選中的基因在另一個父代中的位置,再將其餘基因按順序放入上一步生成的子代中:

  與上倆個算法不同的是,選擇的基因型位置可以不連續,出來這一點外與OX基本一致,同樣有兩個子代,本例的另一個爲:243519678。 
 
4、Order-Based Crossover (OBX)
  過程:
    第一步,隨機選擇一對染色體(父代)中幾個基因,位置可不連續,但兩染色體被選位置相同:

    第二步(分爲兩小步),先在父代2中找到父代1被選中基因的位置,再用父代2中其餘的基因生成子代,並保證位置對應:

   第三步,將父代1中被選擇的基因按順序放入子代剩餘位置中:

  同理,交換父代1、2可得到另一個子代(被選擇基因的位置不變),本例結果爲:423156798。
  OBX與PBX相比生成子代的“基礎”基因來源不同一個來自被選中基因,一個來自剩餘的,此外思想基本相似。 

5、Cycle Crossover (CX)
  過程:
    第一步,在某個父代上隨機選擇1個基因,然後找到另一個父代相應位置上的基因編號,再回到第一個父代找到同編號的基因的位置,重複先前工作,直至形成一個環,環中的所有基因的位置即爲最後選中的位置:


    第二步,用父代1中選中的基因生成子代,並保證位置對應:

    第三步,將父代2中剩餘基因放入子代中:

  與上述算法不同的是,僅需要在一個染色體上隨機選擇一個位置;本例另一個子代結果爲:543926781。

6、Subtour Exchange Crossover
  過程:
    第一步,在某個父代上選擇1組基因,在另一父代上找到這些基因的位置:

    第二步,保持未選中基因不變,按選中基因的出現順序,交換兩父代染色體中基因的位置,一次生成兩個子代:

  與上述算法不同的是,只在一個染色體上選擇基因的位置。

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