达尔文的自然选择

书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
第9章目录

9.3 达尔文的自然选择

  在研究遗传算法之前,我们要先学习达尔文进化学说中的3个基本法则。如果要正确地模拟自然选择,我们必须同时实现这3个要素。

1、遗传

  • 子代必须以某种方式继承父代的特性。
  • 如果生物存活的时间足够长,繁殖的概率也足够大,那么它们的特征将会传递给下一代。

2、突变

  • 种群的个体具有多种特征,也就是说,必须引入突变的机制保证个体的多样化。
  • 举个例子,在某个甲虫种群中,所有个体的特征都是相同的:它们有同样的颜色、尺寸和翅展等。
    如果没有变异,子代将永远和父代保持一致,新的特征永远不会出现,种群也不会进化。

3、选择

  • 必须有一种选择机制:使得种群中的某些个体能够繁殖,把自己的基因传递给下一代;而另一些个体却没有机会繁殖。
    这通常称作“适者生存”。
    比如,羚羊种群的个体经常成为狮子的猎物。羚羊跑得越快,它就越能逃过狮子的猎杀,生存时间越久,繁殖的可能性越大,也就越有可能将自己的基因传递给下一代。
    适者这个术语有一定的误导性,在一般情况下,它指的是更大、更快,或更强。但还有一些例外,自然选择会挑选一些更适应环境的生物特性,让具有这些特性的生物有更多的生存和繁殖机会。
    自然选择并不会让某种生物变得更“好”(这是一个主观词语)或在生理上变得更强。举个例子,对于这些正在敲键盘的猴子,更“适”的个体是那些能敲出接近“to be or not to be”句子的猴子。

4、算法本身的两部分

下面,我们将以猴子打字的例子为上下文学习遗传算法。
算法本身分为两部分:一组

  • 初始化条件(也就是Processing的setup()函数)
  • 重复迭代的步骤(Processing的draw()函数),

这些步骤将一直重复执行,直到我们得到正确答案。

你可能感兴趣的:(达尔文的自然选择)