【问题标题】:What is the role of crossover in genetic algorithms?交叉在遗传算法中的作用是什么?
【发布时间】:2021-12-19 19:12:39
【问题描述】:

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

它工作正常,但我注意到一些我不明白的东西。如果我使用“无性”繁殖,即每个字符串克隆自身,然后以一定的概率发生变异,则解决方案的收敛速度要慢得多,有时根本不收敛,但会被困在说平均适合度约为 0.8。这对我来说没有意义,因为突变应该使它趋于最优,对吧?

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

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

【问题讨论】:

    标签: evolutionary-algorithm


    【解决方案1】:

    交叉在遗传算法中的作用是将种群成员的有益突变传播给更多的种群成员。

    关键是只有适合种群的成员相互交叉,从而将有益的突变传播给更多的种群成员,以使后代(/新成员)也可能受益来自父母的突变。因此,交叉会导致变异的传播,从而导致更高的适应度值在整个群体中传播 - 导致您观察到的更快收敛。

    以玩跳跃和跑步视频游戏并使用遗传算法进行优化的神经网络为例。一位成员可能通过使他跳过障碍物的突变获得了较高的健康分数。另一个成员可能通过使他在地图上收集生命的突变获得了较高的适应度得分。与其他群体需要偶然学习这些提高适应度的突变本身相比,交叉适合的父母成员传播有益突变的速度更快。

    【讨论】:

    • 非常感谢!现在回想起来似乎很明显,哈哈。每个孩子有多个(即超过 2 个)父母有什么影响?
    • 很高兴我能帮上忙!如果所有 3 个亲本都具有不同的有益突变并且可能被交叉,则在交叉过程中拥有 3 个或更多亲本可能是有益的。问题是,只有在父母有些不同的情况下,交叉才是有益的——但是,涉及的父母越多,2 个相似父母的可能性就会增加。另一个问题是如何实现 3 个或更多父母的交叉。如果它只是 ((1&2)&3) 而不是 (1&2&3) 的顺序交叉,那么你可能有 2 个父母。
    • 简而言之:需要考虑很多问题,尽管通常有 2 个以上的父母在计算和实施方面的成本太高且不值得
    猜你喜欢
    • 2014-08-12
    • 2016-08-31
    • 2012-06-02
    • 2010-12-05
    • 1970-01-01
    • 2017-10-19
    • 2015-09-21
    • 2011-02-22
    相关资源
    最近更新 更多