收集易拉罐的遗传算法

收集易拉罐的遗传算法

Content #

设想一个有10×10总共一百个格子的棋盘,每个格子代表一个房间,其中一半的房间被随机选中放了一个易拉罐作为垃圾。一个只能看到自己当前以及前后左右临近房间的机器人的任务是收集这些易拉罐。你能不能给机器人编制一个策略,让它根据自己看到的不同情况采取不同动作,从而在规定的时间内捡到最多的垃圾?

这是圣达菲研究所的女计算机科学家梅拉妮·米歇尔用来研究遗传算法的一个例子。米歇尔自己先设计了一个尽可能智能的策略。这个策略也不太难,比如说,作为一个视力有限而且没有记忆力的机器人,如果你所在房间内正好有一个易拉罐,你要做的显然是把它捡起来;如果没有,你就往别处找找。在理论上的最高分是500分的情况下,这个人为设计的策略得了346分。可是米歇尔用遗传算法,让计算机模拟进化出来的一个策略,却得了483分。

遗传算法的进化过程是这样的。你要把所有可能的策略都用数字编码表示。

1.首先随机生成200个策略,当作200个生物。这些策略可能是非常愚蠢的,也许一动就撞墙,但是别管那么多,进化的要点是人完全不参与设计。

2.计算这200个生物的适应度——也就是说,用很多个有不同垃圾布局的游戏去测试这些生物,看最后哪些生物的得分更高。

3.把适应度高的生物选出来,让它们两两随机配对——适应度越高的生物获得的交配机会也越多——以此来生育下一代。每一个孩子,都从其父母那里各获得一半基因,而且别忘了变异,也就是给每个孩子随机地再改变几个基因。这样得到下一代又是200个生物。

4.对新一代的生物重复第2步。

这样过了一千代之后,你得到了200个非常优秀的策略生物。其中最牛的策略做到了什么程度?在缺乏全局视角的情况下,它居然能让机器人自动从外围绕着圈往里走,从而能在有限的时间内遍历更多的房间。

From #

和这个世界讲讲道理