(圖片例子來自上課時老師的PPT,不過老師說PPT是他從網上組合的,所以沒有出處)
過程:
過程:
第一步,與PMX相同,隨機選擇一對染色體(父代)中幾個基因的起止位置(兩染色體被選位置相同):
第二步,生成一個子代,並保證子代中被選中的基因的位置與父代相同:
第三步(可再分兩小步),先找出第一步選中的基因在另一個父代中的位置,再將其餘基因按順序放入上一步生成的子代中:
與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中剩餘基因放入子代中:
過程:
第一步,在某個父代上選擇1組基因,在另一父代上找到這些基因的位置:
第二步,保持未選中基因不變,按選中基因的出現順序,交換兩父代染色體中基因的位置,一次生成兩個子代:
與上述算法不同的是,只在一個染色體上選擇基因的位置。