Order Crossover(OX) - 遗传算法

时间:2014-10-22 22:44:46

标签: java artificial-intelligence

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

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

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

解决方案是两个孩子:

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

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

我了解一些部分而不是其他部分。

由于

2 个答案:

答案 0 :(得分:14)

基本上,来自父母1的大量连续等位基因下降,剩余的值按照它们在父母2中出现的顺序放在孩子身上。

enter image description here

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

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

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

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

答案 1 :(得分:5)

有序交叉的一种解决方案详见this post

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

此外,Moscato的this paper提供了OX流程的细分。

希望这有帮助!