【问题标题】:How to crossover in a genetic algorithm如何在遗传算法中交叉
【发布时间】:2019-01-12 17:10:49
【问题描述】:

我只是想问一下遗传算法中的学习过程是如何工作的。权重和偏差的值如何组合以生成新一代?我想让汽车绕着轨道行驶而不会发生碰撞。在我初始化两辆具有不同权重和偏差的汽车并选择更好的一辆后,我该怎么办?我是否制造了新一代并希望它比上一代更好?提前致谢!

【问题讨论】:

  • 这是超宽泛的;你有几个问题在这里。如果您主要关心的是跨界,请展示您尝试过的内容以及您需要帮助的具体内容。你研究过遗传算法吗?
  • 基本上我有一个包含神经元、连接、权重和偏差的简单网络。我有一个初始化(随机选择)权重和偏差的函数。作为输入,我在汽车前部以 45 度的间隔投射了 5 条光线,左侧和右侧的输出介于 -1 和 1 之间。我有一个计数器,它可以平均到周围物体的距离,并提供反馈以判断 gen 是否良好。但是我应该如何教网络。如果我似乎几乎没有做过研究,但我真的陷入困境并且没有很好的解释,我深表歉意。
  • 听起来你是在描述人工神经网络而不是遗传算法。

标签: neural-network artificial-intelligence genetic-algorithm reinforcement-learning


【解决方案1】:

如前所述,这是一个非常开放的问题。

让我们从大小为 50 的群体开始。在评估群体中每个基因组的适应度之后,我们可以根据它们的得分情况按降序对它们进行排序。由此,我个人喜欢选择表现最好的 3-5 名自动纳入下一代。从长远来看,这可能会导致premature convergence,因为理论上表现最好的人是不朽的(直到他们被表现更好的基因组篡夺),但鉴于我们还有 45 个位置需要填补,还有评估其他组合的空间.

接下来,您将需要一个或多个 selection algorithms 来为 45 个后代挑选父母。每种算法都有不同的选择父母的方法,但它们中的大多数都是为了让适应度较高的基因组有更高的被选择机会。

有了两个父母,我们已经准备好跨界了。有不同的方法可以解决这个问题,但一般来说,你会想要两个父母中更合适的,迭代它的基因,如果较小的父母有相同的基因,随机选择两者之间(否则只需复制更适合的基因)。当然,您可以复制整个基因,也可以更深入地在两者之间随机化基因的内部属性。

交叉后,您应用mutations 随机修改后代基因的属性。这一点至关重要,因为它允许我们(随机)遍历您尝试优化的问题的搜索空间。

可以将其视为结合上一代最适合的基因组,以尝试尚未测试的新组合。有几种方法可以做到这一点,而最好的解决方案需要进行一些测试和调整。

您似乎正在尝试将其应用于神经网络,因此如果您还没有这样做,我建议您阅读the original NeuroEvolution of Augmenting Topologies (NEAT) paper

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 2016-08-31
    • 1970-01-01
    • 2015-07-03
    • 2016-09-16
    • 1970-01-01
    • 2011-10-11
    • 2015-07-15
    相关资源
    最近更新 更多