【发布时间】:2014-10-30 10:11:13
【问题描述】:
我已经为求解 TSP 的遗传算法实现了有序交叉。
但是,我注意到我的算法在不启用突变的情况下表现更好,我猜这是因为有序交叉如何混合一些遗传信息以保持有效的排列编码,从而创建稍微“突变”的解决方案。
但是我觉得这是错误的?使用有序交叉可以去除变异吗?
【问题讨论】:
-
我已经很久没有这样做了,因此是评论而不是答案。但是:引入新的遗传信息不需要突变吗?如果我记得的关于交叉的内容是正确的,那么原则上,他们不能探测整个问题空间,而只是其中的一个子集。只有突变能够探测整个问题空间。
-
除非您已经用第一代覆盖了整个问题空间,否则@KonradRudolph 是正确的;您需要突变才能搜索更多空间。但是,您可能会很幸运,因为您的问题是可以通过交叉发现一个非常好的解决方案。
-
是的,我知道。如果您查看@ASantosRibeiro 发布的论文 (ijcopi.org/ojs/…),您就会明白我的意思。有序交叉通常会将遗传信息移动到染色体的新区域,而这在任何一个父母中都没有。所以它有点像突变。然而,在我看到的所有使用有序交叉的论文中,都没有讨论这个问题,并且仍然实现了变异,考虑到我得到的结果,这似乎很奇怪。
-
对于 TSP,有序交叉确实提供了突变特性,并且可以在没有突变的情况下使用,因为您可以生成任何具有有序交叉和足够代数的字符串。然而,突变可能会提供不依赖于父母的更快变化。请注意,尽管您可以如前所述生成任何字符串,但这仍然依赖于父母。同样,如下面的答案所示,使用了突变和交叉概率,具体实现将对此进行不同的平衡。我建议您测试不同的技术并自行决定。
标签: optimization artificial-intelligence genetic-algorithm