书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
第9章目录
9.4 遗传算法,第一部分:创建种群
继续猴子敲键盘的例子,我们将为此创建一个由句子构成的种群(“句子”指的是一个字符串)。
1、如何创建这个种群?
-
种群可以用达尔文学说中的突变法则创建。
举个简单的例子,假设我们要进化出“cat”这个单词,现在种群中有3个单
词:hug、rid、won
毫无疑问,这3个单词存在一定的多样性。但无论以何种方式组合它们,都无法得到“cat”单词,因为它们的多样性不足以进化出最优的答案
但如果我们有1000个单词,每个短语都是随机生成的,那么至少存在几个单词的第一个、第二个或第三个字母分别为“c”“a”和“t”。也就是说,大样本容易产生足够的多样性,更容易生成目标短语。 -
因此,我们可以把第一个步骤总结为:
创建一个种群,用随机的方式生成种群内的个体。
2、个体是什么?
- 前几章的种群个体是图像对象或小车对象,而本章却有所不同。
- 本章的种群个体拥有虚拟的“DNA”,DNA是描述个体外形和行为的一系列属性(我们称为“基因”)。
- 比如,在猴子敲键盘的例子中,DNA就是字符串。
3、遗传领域两个重要概念
1)概念
遗传领域有两个重要概念:基因型和表现型,两者之间有重要区别。
- 基因型(genotype)就是遗传密码,也就是本例的字符串,它会从父代传给子代;
- 表现型(phenotype)就是基因型的表达。
两者之间的区别关系着遗传算法的实现。
2)举例
- 在图形编程中,我们一直在回答以下问题:
你的世界是由什么对象组成的,以及如何设计这些对象的基因型(存储对象属性的数据结构)和表现型(你想用这些对象表达什么)。 -
最简单例子就是颜色的显示:
在这里,基因型就是数字信息,每种颜色都是一个整型变量。但数据的表达方式可以是随意的,它们可以表达完全不同的信息,比如以下整数就表示线段的长度。除此之外,它还可以表示力的大小。
-
在猴子敲键盘的例子中,基因型和表现型并没有区别。DNA是一个字符串,而DNA的表达也是这个字符串。
-
第一部分的内容概括为:
创建由N个个体组成的种群,每个个体都有随机的DNA。
网友评论