打字猴:1.70106669e+09
1701066690
1701066691
1701066692
1701066693
1701066694 ▲图9.4 罗比在一个有罐子的场地中。图中虚线是它在仿真时的移动轨迹,上图采用策略M,下图采用策略G
1701066695
1701066696 另外,遗传算法通过策略G还发现了一个巧妙的技巧,它在一些特定的情形中不会去捡当前格子中的罐子。
1701066697
1701066698 例如图9.5(a)给出了一种情形。在这种情形下,如果罗比采用策略M,它会捡起当前格子里的罐子,向西移动,然后捡起新的格子里的罐子[图9.5(b)—图9.5(d)]。由于罗比只能看见相邻格子的情形,因此当前它看不到余下的一堆罐子。它只能随机移动,直到碰巧遇到余下的罐子。
1701066699
1701066700 再看看策略G在同样情形中的表现(图9.6)。罗比没有去捡当前位置上的罐子,而且是直接向西移动[图9.6(b)]。然后它捡起了一堆罐子中最西边的罐子[图9.6(c)]。前面没有捡的罐子现在成了路标,罗比根据这个可以“记住”返回去有罐子。接下来它就会把这一堆罐子都捡起来[图9.6(d)—图9.6(k)]。
1701066701
1701066702 我知道我的策略不完美,但也没想到会有这种办法。进化可能聪明得多,GA经常会让我们感到意外。
1701066703
1701066704 遗传学家经常用“敲除突变(knockout mutations)”的办法来验证关于基因功能的理论,其实就是用遗传工程的方法阻止所研究的基因转录,再看对机体会有何影响。这里我也可以用这种方法。我将策略G中与这个技巧对应的基因敲掉:将所有与“当前格子中有罐子的”情形相对应的基因都换成“清扫罐子”。这会使得策略G的平均分从最初的483降到443,因此证明了我在前面的猜测,策略G之所以成功,部分就是因为这个技巧。
1701066705
1701066706
1701066707
1701066708
1701066709 ▲图9.5 罗比在一堆罐子中,使用策略M移动的四步
1701066710
1701066711
1701066712
1701066713
1701066714
1701066715
1701066716
1701066717 ▲图9.6 罗比在同样的一堆罐子中,用策略G走的11步
1701066718
1701066719 复杂 [:1701064775]
1701066720 GA是如何演化出好的技巧的
1701066721
1701066722 下一个问题是,GA是如何从随机的群体演化出像策略G这样好的策略的呢?
1701066723
1701066724 要回答这个问题,我们可以看一看策略是如何一代一代改进的。图9.7中画出了每一代中最佳策略的适应度。你可以看到最好的适应度最开始是小于0的,前300代提高得很快,此后的提高要慢一些。
1701066725
1701066726 第1代有200个随机生成的策略,可以想象它们都很糟糕。最好的策略适应度才-81,最糟糕的到了-825。(可能这么低吗?)
1701066727
1701066728
1701066729
1701066730
1701066731 ▲图9.7 GA演化出策略G的过程中,各代群体中的最佳适应度
1701066732
1701066733 我用几个任务测试了一下罗比采用这一代中最糟糕的策略时的行为。在一些环境设定中,罗比移动了几步就卡住了,之后在整个任务过程中都停止不动。在一些情况下,则不停地撞墙,直到任务结束。有时候则一直不断地去捡罐子,虽然当前位置上没有罐子。显然这些策略在进化过程中很快就会被淘汰掉。
1701066734
1701066735 我也测试了一下这一代中最好的策略,还是很糟糕,比最差的好不了多少。不过比起来它还是有两个优点:不那么容易一直撞墙了,而且偶尔碰到罐子的时候还能把罐子捡起来!作为这一代中最好的策略,它有很大的机会被选中用来繁殖!一旦被选中,它的子代就会继承这些优点(同时也会继承许多缺点)。
1701066736
1701066737 到第10代,群体中最佳策略的适应度已经变成正数了。这个策略经常会停滞不动,有时候还会在两个格子之间不停地来回移动。但基本不怎么撞墙,同第1代的前辈一样,偶尔也会捡罐子。
1701066738
1701066739 GA就这样不断改进最佳适应度。到200代时,最好的策略已经具有向罐子移动并捡起罐子这个最重要的能力——至少大部分时候是这样。不过,如果周围没有罐子,它也会浪费很多时间用来随机游走,这一点同策略M相似。到250代时,做得已经和策略M一样好了;等到了400代,适应度超过了400分,这时的策略如果少做一些随机移动,就能和策略G一样好。到800代时,GA发现了将罐子留作相邻罐子的路标的技巧,到900代时,沿着围墙转的技巧就基本完善了,到1000代时会进一步做些修正。
[ 上一页 ]  [ :1.70106669e+09 ]  [ 下一页 ]