遗传算法基于顺序的交叉操作的集中merge方法:Merge(1&2) Crossover 1993、Merging crossover (MOX) 2004、Merging Independent Sets (MIS) 2004、Uniform Like Crossover (ULX) 1995,BX,RX,COHX2003
一、Merge 1 算法思想:根据precedence优先级顺序比较父代两个染色体,选择优先级高的(优先级前面的高于后面的)
如上面两个染色体parent1和parent2,优先级precedence所示,子代按照下面的方式生成:
首先比较parent1和parent2的第一个位置元素,C的优先级高于E,因此,子代第一个元素就是C,同时,对于parent2,在后面出现C的位置用E替代,因此,子代O1和Parent2变为
O1:C
Parent2:C B G J D I E A F H
然后比较父代第二个位置,B优先级大于F,因此
O1:C B
Parent1:C B G F A H D I E J
依次类推,最后生成的子代O1 为:C B G F A H D E I J
二、Merge 2 算法思想:Merge2与Merge1不同,当一个元素被添加到子代中时,Merge1是将父代中的该元素用其他元素替换,而Merge2是将该元素在列表中删除,Merge2将父代染色体看成列表,所以删除的元素不会产生空的位置。
仍然以上面的两个染色体parent1和parent2,优先级precedence为例,首先比较第一个元素,C的优先级高于E,因此,子代第一个元素就是C,同时,将C从parent1和parent2列表中删除,因此,parent1和parent2变为
Parent1: F G B A H D I E J
Parent2:E B G J D I A F H
O1:C
然后继续比较,E的优先级高于F,因此
Parent1: F G B A H D I J
Parent2: B G J D I A F H
O1:C E
以此类推,最后生成的子代O1 为:C E B F G A H D I J
事实上,Merge1 不能够很好的保持元素之间的绝对位置关系,同时也不能保持邻接关系。虽然在上面的例子中,子代继承了父代元素间的相对关系,但是并不是所有情况下都成立。
Merge2能够很好的保持元素之间的绝对位置关系,同时也不能保持邻接关系。但是Merge2可以很好地将父代的相对关系传递给子代。
三、Merging crossover (MOX)主要思想:将两个n个元素的染色体随机合并到一个2n个元素的list中,在list中第一次出现的元素复制到child1中,第二次出现的元素复制到child2中。如果元素a在两个父代染色体中都出现元素b的前面,那么在子代染色体中a也在b之前。如图所示
四、Merging Independent Sets (MIS) :MIS是MOX的改进同样也是为了解决GCP(graph coloring problem)问题,但是颜色首先在父代两个染色体中聚合在一起,如图所示,剩下的执行过程与MOX相似,但是整个颜色集一次全部复制到混合集中,而不是每次复制一个单独的个体。
五、Uniform Like Crossover (ULX):首先将两个父代染色体中的相同的基因复制到子代相同位置上,然后从左向右从两个父代染色体中随机选择没有分配到子代中的基因,对于剩下的基因随机分配。如图所示。
ULX的一些变形有Randomized ULX (RULX),Block Crossover (BX),Repair Crossover (RX) ,Cohesive Crossover (COHX)
对于标准的ULX与RULX的唯一不同之处在于,ULX是从左向右扫描的,而在RULX中,以随机的方式扫描基因(已经分配和未分配的基因都被考虑),这样做的目的是增加更多的随机性和多样性,避免过早收敛。
BX与ULX不同之处在于某个基因的block被考虑而不是单个基因,blocks的大小一般是[1,n/2],值得注意的是block的大小不一定一样,如果n=9,block=4,在这个染色体中,有一个3个基因的block,和3个2个基因的block。
BX的执行过程如图所示,父代基因分配到子代时是以block的形式进行复制,如果第一个block从父代1复制,第二个block就从另一个父代复制,这样可以保证可行解,如果仍然有为被分配的基因,则最后进行随机分配。
RX结合了ULX和local improvement-based repair (correction) procedure,将这一过程应用到生成子代中,BX的思想是通过对还未被分配的基因执行成对互换操作。candidate list候选列表参与这一过程,候选列表的生成要符合下面条件 分别代表父代1,父代2,子代
COHX一次可以生成多个染色体,从中选择最优的那个作为子代。使用n1*n2的MASK生成子代,然后使用wave propagation填充剩余部分。