为了用遗传算法让策略进化 我们需要把他们编码为遗传算法能处理的形式 这就是它的工作原理。回忆一下这是我们一个策略的例子 表示出了所有可能的情况 以及对应每个情况给出的动作 我们现在能做的就是选取动作的列表 要记下 243种可能处境的顺序 现在我们可以取出这一系列的动作 然后记得第一个动作对应着第一种情况 即所有位置都是空的 第二个动作对应第二种情况 每个位置都是空的 除了当前位置有一个易拉罐 以此类推 那么现在我们可以就拿出这个动作列表 然后我们根据数字对其编码 我将要做的是 给每一种动作一个数字代码,从0到6 然我可以编码这个特定策略 通过将表中每一个动作换为数字 那么现在第一个位置的一个0代表 第一个所有位置全空的情况 对应着向北边移动这个动作 一个6意味着在第三种情况 不论第三种情况在我们的顺序表中是什么 对应着随机移动,以此类推 这样我们现在就会有一串数字列表 对应着一种特定的策略 当Robby执行一个动作时,他环顾四周 他记得每一种可能的情况的顺序 然后他说 哦,我处于情况 比如说 201 他就去看列表第201个位置 判断出对应的代码是什么 然后执行那个动作 他就这样不断重复重复 这就是我们如何编码一种策略 所以你可以把这个策略比喻成Robby的DNA 这就是将要进化的东西 是这串数字列表。当然这串数字列表有243个值 所以如果你想要将每一个数字比作一个特定的基因 你可以说Robby有243个基因 当然这个基因的比喻不是非常精确 这只是一个粗略的概念 OK 所以现在这有一个问题 在我们的例子中有多少种可能的策略 我们想要找到一个好策略,但是问题是 我们得梳理多少个才能找到一个好策略? 我们可以问 有多少种可能的策略? 如果我们看243种不同的位置情况 怼于每一个位置都有七种可能的动作 因为我们有从0到6可以选 所以可能的策略的总数为 7乘以7乘以7... 每一个位置可以放不同的数字 总共243个位置 所以答案是惊人的 7的243次方 这是一个天文数字 你这辈子都没有希望数完 甚至整个宇宙也熬不完 这是一个没有人能搜索得完的数字 对于所有可能的策略 这里的目标是有一个遗传算法 智能地搜索这个庞大的空间,寻找一个好策略 现在我们终于准备好弄清楚 如何使用遗传算法进化策略 那么我们第一件要做的事就是随机生成200个策略 200就是我在这随便选的一个数字 也可以是一些完全随机的数字作为我们的起始群体