java - 顺序交叉 (OX) - 遗传算法

标签 java artificial-intelligence

谁能解释一下订单交叉的工作原理?我将给出这个例子,我想以一种通用的方式理解它,以便在之后实现。

父级 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 中出现的顺序放置在子代中。

enter image description here

第 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/

相关文章:

java - DFS从显式到隐式的堆栈问题

python - 如何让Open AI API返回部分文本结果?

java - 您如何配置 Spring MVC @PathVariables 以接受包含破折号的字符串?

java - 仅收集第一个索引

java - 使用 bufferedreader 获取输入

java - 使用java加密/解密sqlite数据库

artificial-intelligence - Prolog 开源社区、代码库、博客、论坛

python - 函数逼近 : How is tile coding different from highly discretized state space?

algorithm - 使用机器学习/人工智能的最短根

java - EditText 检查是否有关键字