进化计算-遗传算法之史上最直观交叉算子(动画演示)

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

第二十章 遗传算法-史上最直观交叉算子(动画演示)

遗传算法通过交叉算子来维持种群的多样性,应该说交叉算子是遗传算法中最重要的操作。针对不同的优化问题,有多种不同的交叉算子,今天将带领大家以动画的形式,直观地介绍不同交叉算子的原理。制作不易,感谢关注。

20.1 单点交叉(Single-point crossover)

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

20.2 两点交叉(Two-points crossover)

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

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

20.3 多点交叉(Multi-point crossover)

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

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

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

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

20.5 均匀交叉(Uniform crossover)

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

20.6 顺序交叉(Order Crossover,OX)

在两个父代染色体中随机选择起始和结束位置,将父代染色体1该区域内的基因复制到子代1相同位置上,再在父代染色体2上将子代1中缺少的基因按照顺序填入。另一个子代以类似方式得到。与PMX不同的是,OX不用进行冲突检测工作(实际上也只有PMX需要做冲突检测)。
Step1:与PMX相同,随机选择一对染色体(父代)中几个基因的起止位置(两染色体被选位置相同)。
在这里插入图片描述
Step2:生成一个子代,并保证子代中被选中的基因的位置与父代相同。
在这里插入图片描述
Step3:先找出第一步选中的基因在另一个父代中的位置,再将其余基因按顺序放入上一步生成的子代中。
在这里插入图片描述
动画效果如下:
在这里插入图片描述

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

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

在这里插入图片描述
Step2:与OX的第二步相同,生成一个子代,并保证子代中被选中的基因的位置与父代相同。

在这里插入图片描述

Step3:也与OX的第三步相同,先找出第一步选中的基因在另一个父代中的位置,再将其余基因按顺序放入上一步生成的子代中。
在这里插入图片描述
动画效果如下:
在这里插入图片描述

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

在两个父代染色体中随机选择几个位置,位置可以不连续,先在父代染色体2中找到父代染色体1被选中基因的位置,再用父代染色体2中其余的基因生成子代,并保证位置对应,将父代染色体1中被选择的基因按顺序放入子代剩余位置中。另一个子代以类似方式得到。OBX与PBX相比,生成子代的“基础”基因来源不同,PBX来自被选中基因,OBX来自剩余基因。
Step1:随机选择一对染色体(父代)中几个基因,位置可不连续,但两染色体被选位置相同。
在这里插入图片描述
Step2:先在父代2中找到父代1被选中基因的位置,再用父代2中其余的基因生成子代,并保证位置对应。
在这里插入图片描述
Step3:将父代1中被选择的基因按顺序放入子代剩余位置中。
在这里插入图片描述
动画效果如下:
在这里插入图片描述

20.9 循环交叉(Cycle Crossover,CX)

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

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

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

发布了42 篇原创文章 · 获赞 56 · 访问量 5727

猜你喜欢

转载自blog.csdn.net/hba646333407/article/details/103349279
今日推荐