进化算法

进化算法是运行在计算机中的复杂引擎的实例,它们是人类的技术创新,本身也是社会进化的产物。进化算法的起源有很详细的文献记录。1940年,最早的一些程序员就开始用程序模拟生物进化的某些方面。结果成功了。DNA不是必需的,细胞也不是,生命的所有具体细节都不是必需的。要在计算机中人为构造出能进化的系统,所需的只是编码的信息,复制信息的机制,在复制过程中引入适度的变化,以及根据一致的标准选择部分信息进行复制和修改的机制。显然,这些算法的来源是人类的天赋和对生物的模仿;另外当然,算法少不了计算机。由于进化算法是预先设计的,它们的起源没有什么神秘。人类发明了它们。

在更深的层面上,复杂引擎在计算机上的实现要有编程语言才有可能,这是编码和使用信息的新途径。因此,人类社会的进化需要人类语言,而计算机进化算法则需要编程语言。计算机是社会进化的产物,社会进化又是能够交流、思维和学习的神经系统的产物。思维的大脑本身又是基于DNA序列所决定的复杂发育系统的背景下实现的随机尝试和选择才成为可能。而DNA序列本身又是在整个生物层面上无数次实验和选择的结果。因此这是复杂引擎的嵌套实现,每一个都是基于一个更古老的进化系统。唯一不是(明显)来自更古老进化系统的就是生命本身。

我们所讨论的所有的复杂引擎的例子,除了适应性免疫,都有不同的编码信息的方式,信息被用于生成某种东西或使得某种事件发生。表13.1对此进行了简要总结。

表13.1 5种进化系统概要

其中除了最后一个,复杂引擎在启动之前都有一个系统利用了选择但没有编码和复制信息的机制,而且在每个例子中,除了适应性免疫,都是新的编码和利用信息的方式使得复杂引擎的新实现成为可能。我们不知道最初的实现(生命的起源)是不是比后来的那些要困难得多,因为我们不是很清楚到底发生了什么。但显然讨论的所有系统,除了生命之外,它们的起源都是基于之前已经在运作的某种复杂引擎所发展出的结构才成为可能。这引出了一个问题,就是未来是否还会产生这个引擎的新的实现。如果是这样,将很有可能是从现存的复杂引擎的活动中涌现出来,并且有新的将信息作为指令进行编码和利用的方式。很难做出更具体的预测。谁能在100年前预测到社会(例如技术)的进化会导致解决困难的工程问题的进化算法的出现呢?现在进化算法已经被用于设计更强大的计算机。这一点有很深远的意义,下一章将进行探讨。