遗传算法如何在不断变化的环境中适应并变得更好?

人工智能 遗传算法 进化算法 适应功能
2021-10-21 12:58:00

我刚刚开始研究遗传算法,我无法理解为什么如果在每次学习中,人口遇到的“世界”发生变化,遗传算法可以改进。例如,在这个演示(http://math.hws.edu/eck/js/genetic-algorithm/GA.html)中,我很清楚,如果一束草在在同一个地方,但它们总是在不同的位置生长,我不知道在下一个环境会不同的情况下评估(通过适应度函数)获得的饮食统计数据有什么用处。

1个回答

有几种方法可以解决这个问题。很多时候,该方法只是设计您的表示和运算符,以考虑世界变化的事实。这个想法是为算法提供一些可用于学习一般行为或解决方案而不是特定行为或解决方案的东西。

以学习在赛道上驾驶赛车为例。您想代表世界的状态并让 GA 学会选择适当的动作。您可以选择将世界状态表示为[x,y,v,a], 在哪里(x,y)是您在赛道上的位置,v是您当前的速度矢量,并且a是应用的加速度。适应度函数可以返回应用该加速度的“好”程度。如果你这样做,你的算法可能会学会在这条轨道上导航,但不同的轨道将是没有希望的,因为这些位置与新轨道上的相同转弯位置不对应。

但是,如果您将世界编码为[s,v,a], 而不是(x,y)代表您当前位置的对,您有s作为传感器读数的向量?是在你面前出现一堵墙还是轨道开始倾斜?现在,您的算法可以学习更通用。它不需要是它所学习的确切轨道,因为它所学习的不是在特定点制动,而是在检测到墙壁即将来临时制动。

我没有深入研究您链接的示例,但是如果您运行几年,您可以看到这方面的证据。您会看到代理似乎已经学会了水平或垂直移动,直到遇到绿色方块,然后它们会在该方块周围的补丁中停留并吃掉。这种行为是普遍的,因为它遇到的每个环境都有大量的空白区域和绿色簇。这不是学习“去广场(20,30)”。它正在学习以某种模式移动,直到找到绿色,然后在该位置周围移动。

在特定环境可以改变但目标相同的很多情况下,您可以这样做。然而,存在实际适应度函数随时间变化的问题。对于这些问题,有一些特定的技术可以处理动态适应度函数。一般来说,这涉及到做一些事情来保持多样性,这样你的整个人口就不会被困在当前“最好”的样子上。不过,这是一个更高级的话题,我认为您的问题实际上更多是关于前一类问题。