如何在遗传算法中交叉

时间:2018-08-05 15:45:12

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

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

1 个答案:

答案 0 :(得分:2)

如前所述,这是一个真正的开放性问题。

让我们从大小为50的种群开始。在评估种群中每个基因组的适合度之后,我们可以根据它们的评分方式以降序对它们进行排序。因此,我个人希望选择3-5个表现最好的人,以自动将其纳入下一代。从长远来看,这可能会导致premature convergence,因为从理论上讲,性能最高的人是永生的(直到被性能更好的基因组所篡改),但鉴于我们还有45个空位需要填补,因此还有其他组合空间被评估。

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

有两个父母,我们已经准备好进行分手。有不同的解决方法,但是通常,您需要选择两个亲本中的更合适的一个,通过其基因进行迭代,如果较小的亲本具有相同的基因,则可以在两者之间随机选择(否则只需复制更适合的基因)。当然,您可以复制整个基因,也可以更深入地研究并随机化两者之间的基因内部特性。

越过后,然后应用mutations来随机修改后代基因的属性。这很重要,因为它使我们能够(随机)遍历您要优化的问题的搜索空间。

可以认为它是结合上一代最适合的基因组来尝试尚未测试的新组合。有几种方法可以完成此操作,而要实现此目的的最佳解决方案将需要进行一些测试和调整。

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