交叉在遗传算法中的作用是什么?

What is the role of crossover in genetic algorithms?

我并不完全熟悉所有术语,所以请原谅这部分的任何错误。我决定编写一个程序,使用进化 (?) 算法从随机字符串到目标字符串。

它工作正常,但我注意到一些我不明白的地方。如果我使用 'asexual' 复制,即每个字符串克隆自身,然后以一定的概率发生变异,则解决方案的收敛速度 much 较慢,有时根本不收敛,但是被困住了,比如说平均适应度约为 0.8。这对我来说没有意义,因为突变 应该 使其趋向于最佳,对吗?

但是,如果我改为使用交叉,例如我选择两个 parents 并统一混合字符,然后像正常情况一样以一定的概率变异 child 收敛不仅实际上得到保证,而且也是 个数量级 更快。我认为这不能仅仅通过 child 变得“更多变异”这一事实来解释,因为它的 parents 在上一代中也发生了变异。

有人可以解释一下交叉的作用,以及为什么它可以在这些算法中实现更快的收敛吗?

交叉在遗传算法中的作用是将种群成员的有益突变传播给种群中更多的成员,使它们获得较高的适应度值。

关键是只有合适的种群成员才能相互交叉,从而将有益的突变传播给更多的种群成员,目的是让后代 (/new成员)也可能受益于 parent 的突变。因此,交叉导致 突变的传播,从而导致更高的适应度值在整个种群中传播 - 导致您观察到更快的收敛。

以播放跳跃和 运行 视频游戏并使用遗传算法进行优化的神经网络为例。一名成员可能通过突变获得了很高的健康分数,使他跳过了障碍。另一个成员可能通过突变获得了高健康分数,使他在地图上收集生命。交叉适应性 parent 成员传播有益突变的速度比其他人需要偶然学习这些适应性增加突变本身的速度更快。