1. 程式人生 > >【演算法】遺傳演算法GA中幾種交叉運算元小結

【演算法】遺傳演算法GA中幾種交叉運算元小結

(圖片例子來自上課時老師的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組基因,在另一父代上找到這些基因的位置:

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

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