遗传算法

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

遗传算法

遗传算法是一种借鉴生物遗传和进化机制寻求最优解的计算方法。该方法模拟生物进化中的复制、交换、变异等过程,并通过模拟自然选择压力的方式推动问题解集向最优解方向移动。遗传算法为解决多种难以采用传统数学方法求解的复杂问题提供了新的思路。

1. 遗传算法的发展历史

研究者采用计算机模拟生物进化过程并解决优化问题的尝试始于20世纪40至50年代。20世纪60年代中期,美国密歇根大学的Holland教授提出了位串编码技术,这种编码技术适用于变异操作和交叉操作,他指出在研究和设计人工自适应系统时可借鉴生物遗传的机制,以群体的方式进行自适应搜索。70年代中期,Holland提出遗传算法的模式定理(Schema Theorem),奠定了遗传算法的理论基础。1

1967年,Holland教授的学生De Jong首次将遗传算法应用于函数优化中,2设计了遗传算法执行策略和性能评价指标。他挑选的5个专门用于遗传算法数值实验的函数至今仍被频繁使用,而他提出的在线(on-line)和离线(off-line)指标则仍是目前衡量遗传算法优化性能的主要手段。

1989年,Goldberg出版专著“Genetic Algorithm in Search, Optimization, and Machine learning”3。该书全面阐述了遗传算法的基本原理及应用,并系统总结了遗传算法的主要研究成果。该书对遗传算法科学基础的奠定做出了重要贡献。

1991年,Davis编辑出版了专著“Handbook of Genetic Algorithms”,该书中介绍了遗传算法在工程技术和社会生活中的大量应用实例。4

1992年,美国斯坦福大学的Koza出版专著“Genetic Programming, on the Programming of Computers by Means of Natural Selection”,在此书中,他将遗传算法应用于计算机程序的优化设计和自动生成,并在此基础上提出遗传编程(Genetic Programming, GP)的概念5。1994年,他又出版了上述专著的第二版“Genetic Programming II, Automatic Discovery of Reusable Program”,深化了遗传程序设计的研究6。

从20世纪80年代中期起,遗传算法和进化计算的研究到达一个高潮,以遗传算法和进化计算为主题的国际学术会议在世界各地定期召开。1985年,第一届国际遗传算法会议(international conference on genetic algorithms, ICGA)在美国卡耐基·梅隆大学召开,以后每两年召开一届。此外,进化规划年会(annual conference on evolutionary programming, ACEP)于1992年在美国的加州召开第一届会议,以后每隔两年召开一届;进化计算会议(IEEE conference on evolutionary computation)也于1994年开始定期召开。

2. 遗传算法的生物学基础

遗传算法源于生物的进化与遗传原理在计算科学中的运用,了解生物学范畴的进化、遗传概念,有助于快速理解遗传算法的运行机理。

生物学对进化的认识经历了从宏观到微观两个阶段。在宏观阶段,达尔文创建了自然选择学说。该学说认为在特定的有限的资源条件下,生物时刻处在选择压力之中。生物种群内部压力、种群间压力和环境压力不断淘汰劣势个体,保留优质个体。在进化过程中,父代和子代之间存在性状的遗传和变异。遗传是指父代和子代之间性状上的相似性,变异则是指父代与子代之间以及子代个体之间形状上的差异性。遗传让子代能够继承父代的优良性状,而变异则让子代可能产生新的更适应环境的性状。生物种群内部的遗传与变异,和生物种群面临的选择压力,三者共同作用,使生物种群向适应环境生存的方向发展进化。

20世纪生命科学中对染色体和基因的研究,使人类对生物进化的认识进入微观层面。现代分子生物学研究显示,生物的外在性状是由生物细胞内染色体上的基因所决定的。对于某一性状而言(如虹膜的颜色),基因型不同,则生物的外在表型也不同。在遗传过程中,染色体发生连锁互换,基因型的组合发生变化,表型的组合也随之发生变化,有效增加更适应环境的表型组合出现的机率。染色体上的基因发生突变,使生物可能获得新的突变后表型。进化的实质,是基因的交换和突变创造出具有多样基因型和外在性状的种群,环境的选择压力再对种群进行筛选淘汰,保留具有适应环境的基因和性状的个体。种群内个体的遗传突变和环境对个体的筛选持续进行,最终带来种群的进化。

3. 基本遗传算法

为了解决不同的问题,不同的学者设计了许多不同的编码方法来表示问题的可行性,并开发出了不同的遗传算子来模仿不同环境下的生物遗传特性7。这些遗传算法有着共同的特点,即通过对生物进化过程中的交叉、变异、遗传、选择过程进行模仿。基于上述特点,Goldberg总结出了基本遗传算法(Simple Genetic Algorithms, SGA)3。基本遗传算法简单易懂,是其他遗传算法的基础。

3.1 基本遗传算法的运算过程

基本遗传算法的基础用语和运算过程与生物遗传过程存在着对应关系。与生物进化类似,遗传算法会首先生成一个初始种群,标记为X。X中包含问题的多个潜在解x1, x2, x3, …..,x n。初始种群生成后,因遗传算法不能直接处理解空间的潜在解数据,因此需要通过基因编码的方式,将解数据表达成遗传算法可处理的基因型串结构数据,即染色体。染色体经过遗传算子(Genetic Operators)操作,按照优胜劣汰的规则将适应度较高的个体的染色体更多的传递给后代,经过多次的遗传选择操作,第N代的种群中将会得到一个优良的个体x, x将达到或接近问题的最优解x*。

遗传算法中的遗传算子包括选择、交叉、变异三种:

选择(selection ):根据个体的适应度,按照一定的规则从第t 代种群中选择出优良个体遗传到t+1代群体中。

交叉(crossover ):将第t 代种群内的个体随机搭配成对,每一对个体以某个交叉概率交换他们之间的部分染色体。

变异(mutation ):对第t 代种群内的个体,以某一较低的变异概率改变染色体上的某一个或者某一些基因,使原基因值变为其他等位基因值。

基本遗传算法的运算过程如图表1所示。其运算过程如下:

① 随机建立初始群体。

② 计算各个体的适应度。

③ 根据遗传概率,用下述操作产生新群体:

a. 复制,即选择,将已有优良个体复制后添入新群体中,删除劣质个体。

b. 交换,将选出的两个个体进行交换,所产生的新个体进人新群体。

c. 突变,随机改变某个体的某一字符后,将新个体添入新群体。 ④ 反复执行②及③,直至达到终止条件,选择最佳个体作为遗传算法的结果。

图表1:基本遗传算法运算过程

选择运算

交叉运算 变异运算

解码 个体评价

编码

解集和

第t+1代群第t 代群体 遗传编码空间 解空间

相关文档
最新文档