遗传算法(Genetic Algorithms),也有人把它叫作
进化算法(Evolutionary Algorithms),是基于
生物进化的“物竞天择,适者生存”理论发展起来的一种应用广泛且高效随机搜索与优化并举的智能算法,其主要特点是群体
搜索策略和群体中
个体之间的
信息交换,不依赖于问题的梯度信息。遗传算法最初被研究的出发点不是为专门解决最优化问题而设计的,它与
进化策略、进化规划共同构成了
遗传算法的主要
框架,都是为当时
人工智能的发展服务的。迄今为止,遗传算法是智能计算中最广为人知的一种算法。
遗传算法就是模拟自然界进化论的基本思想,可以很好地用于优化问题,若把它看作对自然过程高度理想化的模拟,更能显出它本身的优雅与应用的重要。该算法以一个群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、杂交和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五要素组成了遗传算法的核心内容。作为一种新的全局优化搜索算法,遗传算法以其简单通用、健壮性强、适于并行处理以及高效、实用等显著特点,在各个领域得到了广泛应用,取得了良好效果,并逐渐成为重要的智能算法之一。
近几年来,遗传算法主要在复杂优化
问题求解和
工业工程领域应用等方面,取得了一些令人信服的结果,所以引起更
多人的关注。
要想进一步的了解遗传算法,当然要先了解遗传、进化及其有关的一些概念和知识,下面就对其进行一些简单介绍。作为遗传算法生物背景的介绍,了解下面的一些概念及内容也就够了。
个体:组成种群的单个生物;
种群:生物进化以群体的形式进行,这样的一个群体称为种群;
基因:DNA长链结构中占有一定位置的基本遗传单位,也叫遗传因子;
基因DNA、RNA片段(摘自互联网)
染色体:是生物细胞中含有的一种微小的丝状物,是遗传物质的主要载体,由多个遗传基因组成;
遗传:新个体会遗传父母双方各自一部分的基因,承现出亲子之间以及
子代个体之间性状相似性,表明性状可以从亲代传递给子代;
变异:亲代和子代之间、子代和子代的不同个体之间总会存在一些差异,这种现象称为变异;变异是随机发生的,变异的选择和积累是生命多样性的根源;
进化:生物在其延续生命的过程中,逐渐适应其生存环境使得其品质不断得到改良,这种生命现象称为进化;生物的进化是以种群的形式进行的;
生存竞争,适者生存:生物的繁殖过程,会发生基因交叉、基因突变,适应度低的个体会被逐步淘汰,而适应度高的个体会越来越多;这样经过多代的自然选择后,保存下来的都是适应度很高的个体,其中很可能包含史上产生的适应度最高的那些个体。
遗传算法是解决搜索问题的一种通用算法,各种各样、类型不同的问题都可以使用。
遗传算法的共同特征有:?① 首先组成一组候选解;?② 依据某些适应性条件测算这些候选解的适应度;?③ 根据适应度保留某些优良候选解,放弃其中欠佳的部分候选解;?④ 对保留的候选解进行某些操作,生成新的候选解。在遗传算法中,上述几个特征以一种特殊的方式组合
在一起,如基于
染色体群的并行搜索,带有猜测性质的选择操作、交换操作和突变操作。这种特殊的组合方式将遗传算法与其它搜索算法
区别开来。
除上述共同特征外,遗传算法还具有以下几方面的特点:
(1) 遗传算法从问题解的串集中开始搜索,而不是从单个解开始,这是遗传算法与
传统优化算法的最大区别。传统优化算法是从单个初始值迭代求最优解,容易误入局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。
(2) 许多传统搜索算法都是
单点搜索算法,容易陷入局部的最优解。遗传算法同时处理群体中的多个个体,即对搜索
空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。
(3) 遗传算法
基本上不用搜索空间的知识或其它
辅助信息,而仅用
适应度函数值来评估个体,在此基础上进行遗传操作。适应度函数不仅不受连续、可微等的约束,而且其定义域可以任意设定。这一特点使得遗传算法的
应用范围得到很大扩展。
(4) 遗传算法不是采用
确定性规则,而是采用概率的变迁规则来指导它的搜索方向。
(5) 具有
自组织、自适应和自学习等特性。遗传算法利用进化过程获得的信息自行组织搜索时,硬度大的个体具有较高的生存概率,并获得更适应环境的
基因结构。
遗传算法以一个群体中的所有个体为对象,利用随机化技术对编码参数空间进行高效搜索,把选择、杂交和变异等遗传现象构成遗传操作。作为一种全局优化搜索算法,遗传算法不考虑函数本身是否连续、是否可微等性质,以其简单通用、健壮性强和高效、实用、隐含并行性、容易找到“全局最优解”等显著特点,在许多领域得到成功应用,成为一种重要的智能算法。
上面的描述是简单的遗传算法模型,可由此给出下面的遗传算法流程图,再加延伸,可以在这一基本型上进行改进和发展,形成诸多不同类别的遗传算法,使其在
科学和工程领域得到更广泛的应用。
遗传算法流程图
上面遗传算法流程图中有六个重要的环节:
(1)编码和初始群体的生成:遗传算法在进行搜索之前先将解空间的解数据表示成遗传空间的基因型串结构数据,这些串结构数据的不同组合便构成了不同的点。然后随机产生N个初始串结构数据,每个串结构数据称为一个个体, N个体构成了一个群体。遗传算法以这N个串结构数据作为初始点开始迭代。当然,初始群体应该选取适当,如果选取的过小则杂交优势不明显,算法性能很差,群体选取太大则计算量会过大。
(2)检查算法收敛准则是否满足,控制算法是否结束,也可以采用判断与最优解的适配度或者选定一个迭代次数来结束计算。
(3)适应度评估选择和检测:适应性函数表明个体或解的优劣性,在程序的开始也应该评价适应性,以便和以后的做比较。不同的问题,适应性函数的定义方式也不同。根据适应性的好坏,进行选择。选择的目的是为了从当前群体中选出优良的个体,使它们有机会作为父代为下一代繁殖子孙。遗传算法通过选择过程体现这一思想,进行选择的原则是适应性强的个体为下一代贡献一个或多个后代的概率大。选择实现了达尔文的适者生存原则。
(4)
选择:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的
适应度评估基础上的。
(5)杂交:按照杂交概率进行杂交。杂交操作是遗传算法中最主要的遗传操作。通过杂交操作可以得到新一代个体,新个体组合了其父辈个体的特性。杂交体现了信息交换的思想。
可以选定一个点对染色体串进行互换,插入,逆序等杂交,也可以随机选取几个点杂交。杂交概率如果太大,种群更新快,但是高适应性的个体很容易被淹没,概率小了搜索会停滞。
(6)变异:按照变异概率进行变异。变异首先在群体中随机选择一个个体,对于选中的个体以一定的概率随机地改变串结构数据中某个串的值。同生物界一样,遗传算法中变异发生的概率很低,但为新个体的产生提供了机会。
变异可以防止有效基因的缺损造成的进化停滞。比较低的变异概率就已经可以让基因不断变更,太大了会陷入随机搜索。不难想象一下,生物界每一代都和上一代差距很大,会出现是怎样一种可怕的情形。
就像自然界的变异适和任何物种一样,对变量进行了编码的遗传算法没有考虑函数本身是否可导,是否连续等性质,所以适用性很强;并且,它开始就对一个种群进行操作,隐含了并行性,也容易找到“全局最优解”。
由上面遗传算法流程图不难看出,遗传算法提供了一种求解复杂系统优化问题的通用框架,计算时不依赖于梯度信息或其它辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,不依赖于问题的具体领域,对问题的种类有很强的稳健性,可广泛应用于很多学科。下面是遗传算法的一些主要应用领域。
(1)函数优化:函数优化是遗传算法的经典应用领域,也是对遗传算法进行性能评价的常用算例,特别是对于一些非线性、多模型、多目标的函数优化问题,用其他优化方法较难求解,而遗传算法却可以方便地得到较好的结果;(2)组合优化:随着问题规模的增大,组合优化问题的搜索空间也急剧扩大,实践证明,遗传算法已经在求解旅行商问题、背包问题、装箱问题、布局优化、图形划分问题等各种具有NP难度的问题中得到成功的应用;(3)生产调度问题:车间调度问题是一个典型的NP问题,从最初的传统车间调度问题到柔性作业车间调度问题,遗传算法都有优异的结果显示,在很多算例中都得到了最优解或近优解;(4)自动控制;(5)?机器人学;(6)?图像处理;(7)人工生命;(8)遗传编程;(9)机器学习;(10)数据挖掘等。
随着应用领域的扩展,遗传算法的研究出现了几个引人注目的新动向:(1)基于遗传算法机器学习,这一新的研究课题把遗传算法从历来离散的搜索空间的优化搜索算法扩展到具有独特的规则生成功能的机器学习算法。这一新的学习机制对于解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。(2)遗传算法正日益和神经网络、模糊推理以及混沌理论等其它智能计算方法相互渗透和结合,这对开拓21世纪中新的智能计算技术将具有重要的意义。(3)
并行处理的遗传算法的研究十分活跃。这一研究不仅对遗传算法本身的发展,而且对于新一代智能
计算机体系结构的研究都是十分重要的。(4)遗传算法和另一个称为人工生命的崭新研究领域正不断渗透。所谓人工生命即是用
计算机模拟自然界丰富多彩的生命现象,其中生物的自适应、进化和免疫等现象是人工生命的重要研究对象,而遗传算法在这方面将会发挥一定的作用,(5)遗传算法和进化规划以及
进化策略等进化
计算理论日益结合。它们几乎是和遗传算法同时独立发展起来的,同遗传算法一样,它们也是模拟自然界生物进化机制的
智能算法,即同遗传算法具有相同之处,也有各自的特点。目前,这三者之间的比较研究和彼此结合的探讨正形成热点。
进入二十一世纪,遗传算法迎来了兴盛发展时期,无论是数学理论研究、计算机硬件研发还是应用研究都成了十分热门的课题,尤其是遗传算法的应用研究显得格外活跃,不但它的应用领域扩大,而且利用遗传算法进行优化和规则学习的能力也显著提高。此外一些新的理论和方法在应用研究中亦得到了迅速的发展,这些无疑均给遗传算法增添了新的活力。遗传算法的应用研究已从初期的组合优化求解扩展到了许多更新、更工程化的应用方面,同样也会取得更多新的突破,使得遗传算法的研究更上一层楼。