【发布时间】:2020-06-04 18:59:18
【问题描述】:
我是遗传算法的新手,正在研究 python 实现。我已经完成了交叉步骤,并且正在尝试部分匹配的交叉。对于我的最终输出,我希望得到一个不包含重复数字的列表。但是,在某些情况下,我会引入重复项。 例如,获取列表
Mate 1 [1,2,3,5,4,6]
Mate 2 [6,5,4,3,2,1]
如果交叉部分是[3,5,4] -> [4,3,2]
那么映射前的后代就变成了[1,2,4,3,2,6]。我对算法的理解是交叉外的映射是4 -> 3, 5 -> 3 and 2 -> 4。但是,这会导致 [1,4,4,3,2,6] 的输出有重复并且缺少 5。
如何解决这个问题?前4个就变成5个了吗?这将如何扩展到可能引入多个重复的更大列表?
【问题讨论】:
-
在您的问题中,您似乎将 3 映射到 4 和 5?而且您还将 4 映射到 2 和 3?这个video 展示了 PMX 中的映射是如何工作的。
标签: python optimization genetic-algorithm evolutionary-algorithm