遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解

目录

1. 部分匹配交叉(Partially-matched crossover,PMX)

2.单点交叉(Single-point crossover)

3.两点交叉(Two-points crossover)

4.多点交叉(Multi-point crossover)

5. 均匀交叉(Uniform crossover)

6. 顺序交叉(Order Crossover,OX)

7. 基于位置的交叉(Position-based Crossover,PBX)

8. 基于顺序的交叉(Order-Based Crossover,OBX)

9. 循环交叉(Cycle Crossover,CX)

10. 子路径交叉交叉(Subtour Exchange Crossover,SEX)


1. 部分匹配交叉(Partially-matched crossover,PMX)

       部分匹配交叉保证了每个染色体中的基因仅出现一次,通过该交叉策略在一个染色体中不会出现重复的基因,所以PMX经常用于旅行商(TSP)或其他排序问题编码。
PMX类似于两点交叉,通过随机选择两个交叉点确定交叉区域。执行交叉后一般会得到两个无效的染色体,个别基因会出现重复的情况,为了修复染色体,可以在交叉区域内建立每个染色体的匹配关系,然后在交叉区域外对重复基因应用此匹配关系就可以消除冲突。

过程:

       第一步,随机选择一对染色体(父代)中几个基因的起止位置(两染色体被选位置相同)

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第1张图片


       第二步:交换这两组基因的位置。

 

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第2张图片

       第三步:做冲突检测,根据交换的两组基因建立一个映射关系,如图所示,以7-5-2这一映射关系为例,可以看到第二步结果中子代1存在两个基因7,这时将其通过映射关系转变为基因2,以此类推至没有冲突为止。最后所有冲突的基因都会经过映射,保证形成的新一对子代基因无冲突。

最终结果为:

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第3张图片

动画效果如下:

2.单点交叉(Single-point crossover)

       单点交叉通过选取两条染色体,在随机选择的位置点上进行分割并交换右侧的部分,从而得到两个不同的子染色体。单点交叉是经典的交叉形式,与多点交叉或均匀交叉相比,它交叉混合的速度较慢(因为将染色体分成两段进行交叉,这种方式交叉粒度较大),然而对于选取交叉点位置具有一定内在含义的问题而言,单点交叉可以造成更小的破坏。

动画效果如下:

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第4张图片


3.两点交叉(Two-points crossover)

       两点交叉是指在个体染色体中随机设置了两个交叉点,然后再进行部分基因交换。

过程:

1.在相互配对的两个个体编码串中随机设置两个交叉点;
2.交换两个个体在所设定的两个交叉点之间的部分染色体。

动画效果如下:

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第5张图片


4.多点交叉(Multi-point crossover)

       多点交叉或称广义交叉,是指在个体染色体中随机设置多个交叉点,然后进行基因交换。其操作过程与单点交叉和两点交叉相类似。如果多点交叉只选择了一个交叉点,那么多点交叉就变成了单点交叉。

动画效果如下:

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第6张图片


5. 均匀交叉(Uniform crossover)

       均匀交叉也称一致交叉,在均匀交叉中,两个染色体的索引i处的基因以交换概率pS进行交换。经验研究表明,均匀交叉比是一种更具利用性的方法,这样可以更好地搜索设计空间,同时保持良好的信息交换。

动画效果如下:


6. 顺序交叉(Order Crossover,OX)

       在两个父代染色体中随机选择起始和结束位置,将父代染色体1该区域内的基因复制到子代1相同位置上,再在父代染色体2上将子代1中缺少的基因按照顺序填入。另一个子代以类似方式得到。与PMX不同的是,OX不用进行冲突检测工作(实际上也只有PMX需要做冲突检测)。

过程:

       Step1:与PMX相同,随机选择一对染色体(父代)中几个基因的起止位置(两染色体被选位置相同)。

 

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第7张图片

       Step2:生成一个子代,并保证子代中被选中的基因的位置与父代相同。

在这里插入图片描述

       Step3:先找出第一步选中的基因在另一个父代中的位置,再将其余基因按顺序放入上一步生成的子代中。

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第8张图片

动画效果如下:


7. 基于位置的交叉(Position-based Crossover,PBX)

       在两个父代染色体中随机选择几个位置,位置可以不连续,将父代染色体1这些位置上的基因复制到子代1相同位置上,再在父代染色体2上将子代1中缺少的基因按照顺序填入。另一个子代以类似方式得到。PBX与OX的不同在于选取的位置可以不连续。

过程:

       Step1:随机选择一对染色体(父代)中几个基因,位置可不连续,但两染色体被选位置相同。

 

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第9张图片


Step2:与OX的第二步相同,生成一个子代,并保证子代中被选中的基因的位置与父代相同。

 

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第10张图片

       Step3:也与OX的第三步相同,先找出第一步选中的基因在另一个父代中的位置,再将其余基因按顺序放入上一步生成的子代中。

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第11张图片

动画效果如下:


8. 基于顺序的交叉(Order-Based Crossover,OBX)

       在两个父代染色体中随机选择几个位置,位置可以不连续,先在父代染色体2中找到父代染色体1被选中基因的位置,再用父代染色体2中其余的基因生成子代,并保证位置对应,将父代染色体1中被选择的基因按顺序放入子代剩余位置中。另一个子代以类似方式得到。OBX与PBX相比,生成子代的“基础”基因来源不同,PBX来自被选中基因,OBX来自剩余基因。

过程:

       Step1:随机选择一对染色体(父代)中几个基因,位置可不连续,但两染色体被选位置相同。

 

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第12张图片

       Step2:先在父代2中找到父代1被选中基因的位置,再用父代2中其余的基因生成子代,并保证位置对应。

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第13张图片

       Step3:将父代1中被选择的基因按顺序放入子代剩余位置中。

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第14张图片

动画效果如下:


9. 循环交叉(Cycle Crossover,CX)

       在某个父代上随机选择1个基因,然后找到另一个父代相应位置上的基因编号,再回到第一个父代找到同编号的基因的位置,重复先前工作,直至形成一个环,环中的所有基因的位置即为最后选中的位置。用父代染色体1中选中的基因生成子代,并保证位置对应,最后将父代染色体2中剩余基因放入子代中。另一个子代以相同方式获得。CX的特点在于只需要随机选择一个位置即可得到多个交叉位置。

动画效果如下:

 


10. 子路径交叉交叉(Subtour Exchange Crossover,SEX)

       在某个父代上选择1组基因,在另一父代上找到这些基因的位置,保持未选中基因不变,按选中基因的出现顺序,交换两父代染色体中基因的位置,一次生成两个子代。SEX的特点是只在一个染色体上选择基因的位置。

动画效果如下:

 

遗传算法的交叉算子:部分匹配交叉(PMX)、有序交叉(OX)、循环交叉(CX)、两点交叉等讲解_第15张图片

 

你可能感兴趣的:(优化算法,动画,遗传算法,多旅行商)