进化计算综述

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

进化计算综述

1.什么是进化计算

在计算机科学领域,进化计算(Evolutionary Computation)是人工智能(Artificial Intelligence),进一步说是智能计算(Computational Intelligence)中涉及到组合优化问题的一个子域。其算法是受生物进化过程中“优胜劣汰”的自然选择机制和遗传信息的传递规律的影响,通过程序迭代模拟这一过程,把要解决的问题看作环境,在一些可能的解组成的种群中,通过自然演化寻求最优解。

2.进化计算的起源

运用达尔文理论解决问题的思想起源于20世纪50年代。

20世纪60年代,这一想法在三个地方分别被发展起来。美国的Lawrence J. Fogel提出了进化编程(Evolutionary programming),而来自美国Michigan 大学的John Henry Holland则借鉴了达尔文的生物进化论和孟德尔的遗传定律的基本思想,并将其进行提取、简化与抽象提出了遗传算法(Genetic algorithms)。在德国,Ingo Rechenberg 和Hans-Paul Schwefel提出了进化策略(Evolution strategies)。

这些理论大约独自发展了15年。在80年代之前,并没有引起人们太大的关注,因为它本身还不够成熟,而且受到了当时计算机容量小、运算速度慢的限制,并没有发展出实际的应用成果。

到了20世纪90年代初,遗传编程(Genetic programming)这一分支也被提出,进化计算作为一个学科开始正式出现。四个分支交流频繁,取长补短,并融合出了新的进化算法,促进了进化计算的巨大发展。

Nils Aall Barricelli在20世纪六十年代开始进行用进化算法和人工生命模拟进化的工作。Alex Fraser发表的一系列关于模拟人工选择的论文大大发展了这一工作。

[1]Ingo Rechenberg在上世纪60 年代和70 年代初用进化策略来解决复杂的工程问题的工作使人工进化成为广泛认可的优化方法。[2]特别是John Holland的作品让遗传算法变得流行起来。[3]随着学术研究兴趣的增长,计算机能力的急剧增加使包括自动演化的计算机程序等实际的应用程序成为现实。[4]比起人类设计的软件,进化算法可以更有效地解决多维的问题,优化系统的设计。[5]

3.进化计算的分支

进化计算的主要分支有:遗传算法GA ,遗传编程GP、进化策略ES、进化编程EP。下面将对这4个分支依次做简要的介绍。

1遗传算法(Genetic Algorithms):

遗传算法是一类通过模拟生物界自然选择和自然遗传机制的随机化搜索算法,由美国John HenryHoland教授于1975年在他的专著《Adaptation in Natural and Artificial Systems》中首次提出。[6]它是利用某种编码技术作用于称为染色体的二进制数串,其基本思想是模拟由这些串组成的种群的进化过程,通过有组织地然而是随机地信息交换来重新组合那些适应性好的串。遗传算法对求解问题的本身一无所知,它所需要的仅是对算法所产生的每个染

色体进行评价,并根据适应性来选择染色体,使适应性好的染色体比适应性差的染色体有更多的繁殖机会。

2遗传编程(Genetic Programming):

遗传编程的思想是Stanford大学的John R.Koza在1992年出版专著《Genetic Programming》中提出的。[7] 由自计算机出现以来,计算机科学的一个重要目标即是让计算机自动进行程序设计,即只要明确地告诉计算机要解决的问题,而不需要告诉它如何去做,遗传编程便是该领域的一种尝试。

[8] 它采用遗传算法的基本思想,但使用一种更为灵活的表示方式——分层

结构来表示解空间。这些分层结构的叶节点是问题的原始变量,中间节点则是组合这些原始变量的函数,这样的每一个分层结构对应问题的一个解,也可以理解为求解该问题的一个计算机程序。遗传编程即是使用一些遗传操作动态的改变这些结构以获得解决该问题的一个计算机程序。

3进化策略(Evolution Strategies):

1964年,由德国柏林工业大学的IngoRechenberg等人提出。在求解流体动力学柔性弯曲管的形状优化问题时,用传统的方法很难优化设计中描述物体形状的参数,而利用生物变异的思想来随机地改变参数值获得了较好的结果。

随后,他们便对这一方法进行了深入的研究,形成了进化计算的另一个分支――进化策略。[9]

进化策略与遗传算法的不同之处在于:进化策略直接在解空间上进行操作,强调进化过程中从父体到后代行为的自适应性和多样性,强调进化过程中搜索步长的自适应性调节,主要用于求解数值优化问题;而遗传算法是将原问

题的解空间映射到位串空间之中,然后再施行遗传操作,它强调个体基因结构的变化对其适应度的影响。

4进化编程(Evolutionary Programming):

由美国Lawrence J. Fogel等人在20世纪60年代提出。他们在研究人工智能时发现,智能行为要具有能预测其所处环境的状态,并且具有按照给定的目标作出适当的响应的能力。在研究中,他们将模拟环境描述成是由有限字符集中符号组成的序列。

4.进化计算的原理

进化算法是一种基于自然选择和遗传变异等生物进化机制的全局性概率搜索算法,运用了迭代的方法。

它从选定的初始解出发,通过不断迭代逐步改进当前解,直至最后搜索到最适合问题的解。在进化计算中,用迭代计算过程模拟生物体的进化机制,从一组解(群体)出发,采用类似于自然选择和有性繁殖的方式,在继承原有优良基因的基础上,生成具有更好性能指标的下一代解的群体

种群(population):进化计算在求解问题时是从多个解开始的

代数(generation):种群进化的代数,即迭代的次数

群体的规模(popsize):一般地,元素的个数在整个进化过程中是不变的

当前解:新解的父解(parent,或称为父亲、父体等)

后代解(offspring,或称为儿子、后代等):产生的新解

编码:计划计算常常还需要对问题的解进行编码,即通过变换将映射到另一空间(称为基因空间)。通常采用字符串(如位串或向量等)的形式

相关文档
最新文档