打字猴:1.701066669e+09
1701066669
1701066670 将我的策略记为M, GA生成的策略记为G。下面是这两个策略的基因组。
1701066671
1701066672 M:6563536562523532526563536561513531512523532521513 53151656353656252353252656353656050353050252353252050 3530501513531512523532521513531510503530502523532520503 5305065635356252353252656353656151353151252353252151353 151656353656252353252656353454
1701066673
1701066674 G:254355153256235251056355461151336154151034156110550 1500520302562561322523503251120523330540552312550513361 541506652641502665060122644536056315202564310543546324 0435033415325025325135235204515013015621343625235322313 5051260513356201524514343432
1701066675
1701066676 仅仅从策略的基因组看不出其中的运作。我们可以知道其中一些基因的意义,例如当前位置有罐子的情形,对第2种情形(“空空空空罐”),两个策略的动作都是5(清扫罐子)。M对这种情形总是动作5,但G并不总是这样。例如下面这种情形:
1701066677
1701066678
1701066679
1701066680
1701066681 动作就是3(往西移动),罗比在这种情形下不会捡罐子。这不太好,不过G总体上还是比M好。
1701066682
1701066683 关键之处不在于单个的基因,而在于各个基因之间的相互作用,就像真正的基因一样。而且同真正的基因一样,很难确定各种相互作用是如何影响整体上的行为或适应度。
1701066684
1701066685 相较于观察一个策略的基因,观察其具体的行为——也就是它们的表型——会更有意义。我编了一个程序来演示罗比在采用某个给定策略时的行动,然后对罗比在采用策略M和策略G时的行为进行观察。我发现这两个策略在许多情形中的行为类似,但策略G有两个小技巧,让它比策略M表现得更好。
1701066686
1701066687 首先来看看当前位置和四周都没有罐子的情形。如果罗比采用策略M,它就会随机选择一个方向移动。但如果它采用的是策略G,它就会往东移动,直到遇到墙为止。然后它会往北移动,就这样逆时针围着格子边缘移动,直到发现罐子。图9.4可以看到罗比的轨迹(虚线)。
1701066688
1701066689 这种围着绕圈的策略不仅让罗比不会撞墙(如果用策略M,随机移动时有可能会撞墙),而且搜索罐子的效率也比随机移动要高。
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
[ 上一页 ]  [ :1.701066669e+09 ]  [ 下一页 ]