【发布时间】:2011-10-11 03:05:23
【问题描述】:
我已经实现了许多遗传算法来解决各种问题。但是我仍然对交叉/重组的有用性持怀疑态度。
我通常在实现交叉之前先实现突变。在我实施交叉后,与简单地使用突变并在每一代中引入一些随机个体以确保遗传相比,我通常不会看到生成良好候选解决方案的速度有显着提高。
当然,这可能归因于对交叉函数和/或概率的错误选择,但我想获得一些具体的解释/证据来说明交叉为什么/是否会改善 GA。有没有这方面的研究?
我理解其背后的原因:交叉允许将两个人的优势结合为一个人。但对我来说,这就像说我们可以将科学家和美洲虎交配,从而获得聪明而快速的混合体。
编辑:在 mcdowella 的回答中,他提到如何找到一个可以改善从多个起点爬山的交叉点的案例并非易事。有人可以详细说明这一点吗?
【问题讨论】:
-
这种问题可能会在cstheory.SE得到更好的答案。
-
1) 你用的是什么分频器?随机的?一点?两点? 2)你到底在找什么?参考一篇讨论交叉对解决方案质量影响的文章?
-
“对文章的引用”会很好。我并不是特别想改进我的交叉功能(我已经使用了各种),而是为了一个具体的原因/证据,它可以提高 GA 的效率。
-
它总是依赖于问题,并且可以证明是这样。没有通用的技术。任何有效的搜索算法只有在其偏差在某种意义上与搜索空间的显着特征一致时才有效。当您的大山丘相对较少时,爬山效果最佳。当最优值之间的大多数障碍很浅时,模拟退火效果最好。在某些情况下,特定的交叉运算符运行良好,而在某些情况下则不行。
-
@deong:是的,但我正在寻找交叉工作良好的示例/案例。
标签: algorithm genetic-algorithm