谁能解释一下订单交叉的工作原理?我将给出这个例子,我想以一种通用的方式理解它,以便在之后实现。
父级 1 = 1 2 3 | 4 5 6 7 | 8 9
父级 2 = 4 5 2 | 1 8 7 6 | 9 3
解决方案是两个 child :
child 1 = 2 1 8 | 4 5 6 7 | 9 3
child 2 = 3 4 5 | 1 8 7 6 | 9 2
我理解某些部分,但其他部分不理解。
谢谢
最佳答案
基本上,来自父代 1 的一系列连续等位基因下降,其余值按照它们在父代 2 中出现的顺序放置在子代中。
第 1 步:从父代 1 中随机选择一系列连续等位基因。(带下划线)
第 2 步:将 strip 向下延伸到 child 1,并在 parent 2 中标记出这些等位基因。
第 3 步:从 strip 的右侧开始,从父代 2 获取等位基因并将它们插入位于 strip 右边缘的子代 1 中。由于 8 在 Parent 2 中的那个位置,它首先在 swath 的右边缘插入 Child 1。请注意等位基因 1、2 和 3 被跳过,因为它们被标记出来并且 4 被插入到 child 1 的第二个位置。
第 4 步:如果您想要两个 parent 的第二个 child ,请翻转 Parent 1 和 Parent 2 并返回到第 1 步。
关于java - 顺序交叉 (OX) - 遗传算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26518393/