书名:复杂(第一推动丛书·综合系列)
作者:梅拉妮·米歇尔
译者:唐璐
出版社:湖南科学技术出版社
出版时间:2018-01-01
ISBN:9787535794369
第9章 遗传算法
- 遗传算法菜谱
- 遗传算法的应用
- 进化的罗比,易拉罐清扫机器人
- GA演化的策略是如何解决这个问题的
- GA是如何演化出好的技巧的
三、进化的罗比,易拉罐清扫机器人
2、遗传算法进化
这个问题很简单,人工为罗比设计一个好策略可能也不是很难。
不过,有了遗传算法我们就可以什么也不用干,我们只需要等着计算机替我们进化出来。
下面我们用遗传算法来为罗比进化出一个好策略。
第1步
- 第1步是搞清楚我们想要进化的到底是什么。
也就是说,策略具体指的是什么?
1)策略
- 一般来说,策略指的是一组规则,规则给出了在各种情形下你应当采取的行动。
对于罗比,它面对的“情形”就是它看到的:当前格子以及东南西北四个格子中的情况。
对于“在各种情形下怎么做”的问题,罗比有7种可能选择:北移、南移、东移、西移、随机移动、不动、收集罐子。
因此,罗比的策略可以写成它可能遇到的所有情形以及面对每种情形应当采取的行动。
2)所有情形及应对行动
-
有多少种可能的情形呢?
罗比可以看到5个格子(当前格子、东、南、西、北),每个格子可以标为空、罐和墙。这样就有243种可能情形。
其实还没有这么多,因为有许多不可能的情形,例如当前位置不可能是墙,也不可能四面都是墙,等等。
不过,因为我们很懒,不想费劲找出所有不可能的情形,因此我们会列出所有243种情形,只要知道其中一些永远也不会遇到就行了。 -
表9-1是一个策略的例子
表91 一个策略的例子
3)罗比的情形及应对
- 罗比在图9.2中的情形是:
北 南 东 西 中
墙 空 罐 墙 空 - 要知道下一步怎么做,罗比只需要查看策略表,查到对应的行动是往西移动。
因此它往西移动一格,结果一头撞到墙上。 - 我没说这是一个好策略。寻找好策略不关我的事;这事归遗传算法管。
4)遗传算法来进化
- 我写了一个遗传算法程序来进化罗比的策略。
算法中,群体中每个个体都是一个策略——与各种可能情形相对应的行动列表。
也就是说,对于表9—1中的策略,GA用来演化的个体就是最右侧243个行动依次列出的列表:
向北移动 向东移动 随机移动 收集罐子……向西移动……不动
字符串中第1个行动(这里是向北移动)对应第1种情形(“空 空空 空 空”),第2个行动(这里是向东移动)对应第2种情形(“空 空 空空 罐”),依次往后。
这样就不用明确列出与动作对应的情形;GA记得各情形的排列顺序。 - 例如,假设罗比观察到情形如下:
北 南 东 西 中
空 空 空 空 罐 - GA根据内建知识知道是情形2。通过查询策略表可以得知位置2上的行动是往东移动。罗比往东移动一格,然后又观察周围情形;GA再次查询表上的相应行动,反复进行。