Order Crossover(OX) – 遗传算法

有人可以解释一下Order Crossover的工作原理吗? 我将举出这个例子,我希望以一种通用的方式来理解它。

父1 = 1 2 3 | 4 5 6 7 | 8 9

父2 = 4 5 2 | 1 8 7 6 | 9 3

解决方案是两个childreen:

儿童1 = 2 1 8 | 4 5 6 7 | 9 3

儿童2 = 3 4 5 | 1 8 7 6 | 9 2

我了解一些部分,但其他部分没有。

谢谢

本文详细介绍了Ordered Crossover的一种解决方案。

这个答案提供了一些示例Java代码,其中包含详细说明用于Ordered Crossover的进程的文档。

此外,Moscato的这篇论文提供了OX过程的细分。

希望这可以帮助!

基本上,来自父母1的一系列连续等位基因下降,并且剩余的值按照它们在父母2中出现的顺序放置在儿童中。

在此处输入图像描述

步骤1:从父母1中选择一系列连续的等位基因。(下划线)

步骤2:将条带放到Child 1并在Parent 2中标出这些等位基因。

步骤3:从条带的右侧开始,从父母2抓取等位基因并将它们插入到条带右边缘的Child 1中。 由于8位于父2中的该位置,因此首先将其插入到子区1的右边缘。 注意等位基因1,2和3被跳过,因为它们被标记出来,4被插入到Child 1的第2个位置。

步骤4:如果您想要父母双方的第二个孩子,请翻转父母1和父母2并返回步骤1。