OX11985:是最基本的Order Crossover ,执行过程如下:
- 首先从父代随机选择两个个体P1,P2和两个点
- 将P1,P2两点之间部分提取出来,放在子代O1,O2相同位置(这里与PMX是相反的)
- 子代中打叉的部分的填入方式是:从另一个父代第二个切点开始,删除已经填入的部分,然后按照顺序填入。例如,O1已经填入的部分来自于P1,然后将P2第二个切点排序,得到3,7,4,2,5,1,6,8,此时删除2,7,1三个点,剩余部分为3,4,5,6,8,然后将上面的序列按照顺序填入O1 同理
OX2 1991: 与OX1相似,不同的是repairing procedure。
- 首先从父代随机选择两个个体P1,P2和两个点
- 将P1,P2两点之间部分提取出来,放在子代O1,O2相同位置
- 将另一个父代染色体按照顺序排列并删除已经存在的基因,如P2的序列为4,5,7,1,2,6,8,9,3,删除3,4,5后为7,1,2,6,8,9,将该序列填入O1中,则O1为7,1,3,4,5,2,6,8,9,同样可求得O2
OX3 2011:OX1中两个父代染色体中的cut points位置是相同的,而OX3做了改进,即两个染色体中的cut points位置不同,但是cut points个数相同,显然OX1是OX3的一个特例。OX3的repairing procedure 与OX1相同。举例如下:
两个父代染色体 和,保持父代cut points的基因不变,以另一个父代的基因序列删除已经存在的基因进行填充,O1填充5,4,1,9,8,3,O2填充4,1,5,2,7,6,因此两个子代分别为 和
OX4 2011:OX4中的cut points不仅位置不同,数量也不同。其余的操作与OX1相同。
父代染色体 ,将P1中的cut points复制到O1,将填充到O1中的剩余位置,同理O2,则
OX5 2011:与OX1的不同之处就是使用2对cut points。
父代染色体,将cut points直接复制到O1和O2中,然后其余位置分别用
和 填充,则
注意:在生成填充序列时,要从最后一个cut point后面复制父代染色体,然后再删除
实验比较:
在TSP3个问题上的比较OX2的速度是最快的,但是新提出的OX3,OX4,OX5效果都比OX1,OX2要好很多。
reference:
Kusum Deep and Hadush Mebrahtu. 2011. New variations of order crossover for travelling salesman problem. International Journal of Combinatorial Optimization Problems and Informatics 2, 1, 2–13.