遗传算法原理介绍

前言

遗传算法( genetic algorithm,GA)是模拟自然界生物进化机制的一种算法,即遵循适者生存、优胜劣汰的法则,也就是寻优过程中有用的保留无用的则去除。在科学和生产实践中表现为在所有可能的解决方法中找出最符合该问题所要求的条件的解决方法,即找出一个最优解。

1.1遗传算法的基本概念

遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

遗传算法最初由美国Michigan大学Holland教授首先提出来的,并出版了颇有影响的专著Adaptation in Natural and Arti ficial Systems,之后遗传算法这个名称才逐渐为人所知, Holland教授所提出的遗传算法通常为简单遗传算法。

1.1.1 算法的基本运算

遗传算法由Holland提出来的最初的目的是研究自然系统的自适应行为并设计具有自适应功能的软件系统。它的特点是对参数进行编码运算不需要有关体系的任何先验知识,沿多种路线进行平行搜索不会落人局部较优的陷阱。

进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变.自然选择以及杂交等。遗传算法在适应度函数选择不当的情况下有可能收敛于局部最优,而不能达到全局最优。

遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。

每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。

由于仿照基因编码的工作很复杂,往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解。

在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。

这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。

1.1.3 遗传算法的特点

遗传算法是解决搜索问题的一种通用算法,对于各种通用问题都可以使用。
搜索算法的共同特征如下。

  1. 首先组成一组候选解。
  2. 依据某些适应性条件测算这些候选解的适应度。
  3. 根据适应度保留某些候选解,放弃其他候选解。
  4. 对保留的候选解进行某些操作,生成新的候选解。
    在遗传算法中,上述几个特征以一种特殊的方式组合在一起。基于染色体群的并行搜索,带有猜测性质的选择操作、交换操作和突变操作。这种特殊的组合方式将遗传算法与其他搜索算法区别开来。

遗传算法还具有以下几方面的特点。

  1. 遗传算法从问题解的串集开始搜索,而不是从单个解开始。这是遗传算法与传统优化算法的最大区别。传统优化算法是从单个初始值迭代求最优解的,容易误人局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。
  2. 遗传算法同时处理群体中的多个个体,即对搜索空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。
  3. 遗传算法基本上不用搜索空间的知识或其他辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。这一特点使得遗传算法的应用范围大大扩展。
  4. 遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导它的搜索方向。
  5. 具有自组织、自适应和自学习性。遗传算法利用进化过程获得的信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更适应环境的基因结构。

1.1.3 遗传算法中的术语

由于遗传算法是由进化论和遗传学机理而产生的搜索算法,所以在这个算法中会用到很多生物遗传学知识,下面是将来会用到的一些术语。

  1. 染色体
    染色体(chromosome)又可以称为基因型个体(individuals),-定数量的个体组成了群体(population) ,群体中个体的数量称为群体大小。
  2. 基因
    基因(gene)是串中的元素,基因用于表示个体的特征。例如有一个串S= 1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(alleles)。
  3. 基因位点
    基因位点(locus)在算法中表示一个基因在串中的位置,称为基因位置( gene position),有时也简称基因位。基因位置由串的左向右计算,例如在串S=1101中,0的基因位置是3。
  4. 特征值
    在用串表示整数时,基因的特征值(feature)与二进制数的权一致。例如在串S=1011中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。
  5. 适应度
    各个个体对环境的适应程度称为适应度(fitness)。为了体现染色体的适应能力,引人了对问题中的每一个染色体都能进行度量的函数,叫适应度函数。这个函数是计算个体在群体中被使用的概率。

1.1.4 遗传算法的发展现状

进入20世纪90年代,遗传算法迎来了兴盛发展时期,无论是理论研究还是应用研究都成了十分热门的课题。尤其是遗传算法的应用研究显得格外活跃,不但它的应用领域扩大,而且利用遗传算法进行优化和规则学习的能力也显著提高,同时产业应用方面的研究也在摸索之中。

此外一些新的理论和方法在应用研究中亦得到了迅速的发展,这些无疑均给遗传算法增添了新的活力。遗传算法的应用研究已从初期的组合优化求解扩展到了许多更新、更工程化的应用方面。

随着应用领域的扩展,遗传算法的研究出现了以下几个引人注目的新动向。

  1. 基于遗传算法的机器学习。这一新的研究课题把遗传算法从历来离散的搜索空间的优化搜索算法扩展到具有独特的规则生成功能的崭新的机器学习算法。这一新的学习机制对于解决人工智能中知识获取和知识优化精炼的瓶颈难题带来了希望。
  2. 遗传算法正日益和神经网络,模糊推理以及混沌理论等其他智能计算方法相互渗透和结合,这对开拓21世纪中新的智能计算技术将具有重要的意义。
  3. 并行处理的遗传算法的研究十分活跃。这一研究不仅对遗传算法本身的发展,而且对于新一代智能计算机体系结构的研究都是十分重要的。
  4. 遗传算法和另一个称为人工生命的崭新研究领域正不断渗透。所谓人工生命即是用计算机模拟自然界丰富多彩的生命现象,其中生物的自适应、进化和免疫等现象是人工生命的重要研究对象,而遗传算法在这方面将会发挥-定的作用。
  5. 遗传算法和进化规划(evolution programming, EP)以及进化策略(evolution strategy, ES)等进化计算理论8益结合。

EP和ES几乎是和遗传算法同时独立发展起来的,同遗传算法-样,它们也是模拟自然界生物进化机制的智能计算方法,即同遗传算法具有相同之处,也有各自的特点。目前,这三者之间的比较研究和彼此结合的探讨正形成热点。

1991年,D. Whitey在他的论文中提出了基于领域交叉的交叉算(adjacency based crossover),这个算子是特别针对用序号表示基因的个体的交叉,并将其应用到了TSP问题中,通过实验对其进行了验证。

D. H. Ackley 等提出了随机迭代遗传爬山法( stochastic iterated genetic hill-climbing,SIGH)采用了一种复杂的概率选举机制,此机制中由m个“投票者"来共同决定新个体的值(m表示群体的大小)。

实验结果表明,SIGH与单点交叉、均匀交叉的神经遗传算法相比,所测试的6个函数中有4个表现出更好的性能。

总体来讲,SIGH比现存的许多算法在求解速度方面更有竞争力。H. Bersini和G.Seront将遗传算法与单一方法(simplex method)结合起来,形成了一种叫单一操作的多亲交叉算子(simplex crossover),该算子在根据两个母体以及一个额外的个体产生新个体,事实.上它的交叉结果与对三个个体用选举交叉产生的结果一致。

同时,文献还将三者交叉算子与点交叉、均匀交叉做了比较,结果表明,三者交叉算子比其余两个有更好的性能。

1992年,英国格拉斯哥大学的李耘(YunLi)指导博士生将基于二进制基因的遗传算法扩展到七进制.十进制.整数、浮点等的基因,以便将遗传算法更有效地应用于模糊参量、系统结构等的直接优化,于1997年开发了世界上最受欢迎的、也是最早之一的遗传/进化算法程序。

国内也有不少的专家和学者对遗传算法的交叉算子进行改进。2002 年,戴晓明等应用多种群遗传并行进化的思想,对不同种群基于不同的遗传策略,如变异概率、不同的变异算子等来搜索变量空间,并利用种群间迁移算子来进行遗传信息交流,以解决经典遗传算法的收敛到局部最优值问题。

2004年,赵宏立等针对简单遗传算法在较大规模组合优化问题上搜索效率不高的现象,提出了一种用基因块编码的并行遗传算法( building-block coded parallel GA ,BCPGA)。
该方法以粗粒度并行遗传算法为基本框架,在染色体群体中识别出可能的基因块,然后用基因块作为新的基因单位对染色体重新编码,产生长度较短的染色体,在用重新编码的染色体群体作为下一轮以相同方式演化的初始群体。

2005年,江雷等针对并行遗传算法求解TSP问题,探讨了使用弹性策略来维持群体的多样性,使得算法跨过局部收敛的障碍,向全局最优解方向进化。

1.1.5 遗传算法的应用领域

由于遗传算法的整体搜索策略和优化搜索方法在计算时不依赖于梯度信息或其他辅助知识,而只需要影响搜索方向的目标函数和相应的适应度函数,所以遗传算法提供了一种求解复杂系统问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于许多科学。

遗传算法主要应用以下两个领域。

  1. 函数优化
    函数优化是遗传算法的经典应用领域,也是遗传算法进行性能评价的常用算例,许多人构造出了各种各样复杂形式的测试函数:连续丽数和离散函数、凸函数和凹函数、低维函数和高维函数、单峰函数和多峰函数等。对于–些非线性、多模型、多目标的函数优化问题,用其他优化方法较难求解,而遗传算法可以方便地得到较好的结果。
  2. 组合优化
    随着问题规模的增大,组合优化问题的搜索空间也急剧增大,有时在目前的计算上用枚举法很难求出最优解。对这类复杂的问题,人们已经意识到应把主要精力放在寻求满意解上,而遗传算法是寻求这种满意解的最佳工具之一。实践证明,遗传算法对于组合优化中的NP问题非常有效。例如遗传算法已经在求解旅行商问题,背包问题、装箱问题、图形划分问题等方面得到成功的应用。此外,GA也在生产调度问题、自动控制、机器人学、图像处理、人工生命、遗传编码和机器学习等方面获得了广泛的运用。

1.2 遗传算法的原理

1.2.1 算法运算过程

遗传操作是模拟生物基因遗传的做法。在遗传算法中,通过编码组成初始群体后,遗传操作的任务就是对群体的个体按照它们对环境适应度(适应度评估)施加一定的操作,从而实现优胜劣汰的进化过程。从优化搜索的角度而言,遗传操作可使问题的解,一代又一代地优化,并逼近最优解。

遗传算法过程图如图所示。

在这里插入图片描述
遗传操作包括三个基本遗传算子( genetic operator): 选择(selection)、交叉(crossover)和变异(mutation)。

个体遗传算子的操作都是在随机扰动情况下进行的。因此,群体中个体向最优解迁移的规则是随机的。需要强调的是,这种随机化操作和传统的随机搜索方法是有区别的。遗传操作进行的高效有向的搜索而不是如一般随机搜索方法所进行的无向搜索。

遗传操作的效果和上述三个遗传算子所取的操作概率、编码方法、群体大小、初始群体以及适应度函数的设定密切相关。

  1. 选择

从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时也称为再生算子(reproduction operator)。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。

选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子方法有轮盘赌选择法、适应度比例方法、随机遍历抽样法和局部选择法。
其中轮盘赌选择法(roulette whee selection)是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n.其中个体 i 的适应度为 fi ,则i被选择的概率为 pi=fi/Σfi.显然,概率反映了个体 i 的适应度在整个群体的个体适应度总和中所占的比例。个体适应度越大,其被选择的概率就越高,反之亦然。

计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机数作为选择指针来确定被选个体个体被选后,可随机地组成交配对,以供后面的交叉操作。

  1. 交叉

在自然界生物进化过程中起核心作用的是生物遗传基因的重组(加上变异)。同样,遗传算法中起核心作用的是遗传操作的交叉算子。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。通过交叉,遗传算法的搜索能力得以飞跃.提高。

交叉算子根据交叉率将种群中的两个个体随机地交换某些基因,能够产生新的基因组合,期望将有益基因组合在-起。根据编码表示方法的不同有以下几种算法。

  • 实值重组(real valued recombination):离散重组(discrete recombination),中间重组(intermediate recombination),线性重组( linear recombination)、扩展线性重组(extended linear recombination)。

  • 二进制交叉(binary, valued crossover):单点交叉(single point crossover).多点交叉(
    multiple point crossover). 均匀交叉funiform crossover). 洗牌交叉( shufle
    crossover)、缩小代理交叉(crossover with reduced surrogate)。

最常用的交叉算子为单点交叉(one point crossover)。具体操作是:在个体串中随机设定一个交叉点,实行交叉时,该点前或后的两个个体的部分结构进行互换,并生成两个新个体。下面给出了单点交叉的一个例子:
个体A: 1001↑11 1→1001 000新个体
个体B:0011↑000→0011111新个体

  1. 变异

变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:实值变异、二进制变异。
一般来说,变异算子操作的基本步骤如下。

  • 对群中所有个体以事先设定的变异概率判断是否进行变异。
  • 对进行变异的个体随机选择变异位进行变异。

遗传算法引人变异的目的有两个:

  • 使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。显然,此种情况下的变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。
  • 使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。此时收敛概率应取较大值。
    遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。
    遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。
    所谓相互配合,是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。

所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。

基本变异算子是指对群体中的个体码串随机挑选–个或多个基因座并对这些基因座的基因值做变动,(0,1)二值码串中的基本变异操作如下:
(个体A)10010110空要11000110(个体A’)
注意:在基因位下方标有兴号的基因发生变异。
变异率的选取一般受种群大小、染色体长度等因素的影响,通常选取很小的值,一般取0.001~0.1。

  1. 终止条件

当最优个体的适应度达到给定的阈值,或者最优个体的适应度和群体适应度不再上升时,或者迭代次数达到预设的代数时,算法终止。预设的代数一般设置为100~ 500代。

1.2.2算法编码

遗传算法不能直接处理问题空间的参数,必须把它们转换成遗传空间的由基因按一定结构组成的染色体或个体。这一转换操作称为编码,也可以称为(问题的)表示(representation)。
评估编码策略常采用以下3个规范。

  • 完备性(completeness)。间题空间中的所有点(候选解)都能作为GA空间中的点(染色体)表现。
  • 健全性(soundness)。GA空间中的染色体能对应所有问题空间中的候选解。
  • 非冗余性(nonredundancy)。染色体和候选解一一对应。
    目前几种常用的编码技术有二进制编码、浮点数编码、字符编码、变成编码等。而二进制编码是目前遗传算法中最常用的编码方法。即是由二进制字符集{0,1}产生通常的0,1字符申来表示问题空间的候选解。它具有以下特点。
  • 简单易行。
  • 符合最小字符集编码原则。
  • 便于用模式定理进行分析。

1.2.3 适应度及初始群体选取

进化论中的适应度,是表示某一个体对环境的适应能力,也表示该个体繁殖后代的能力。遗传算法的适应度函数也叫评价函数,是用来判断群体中的个体的优劣程度的指标,它是根据所求问题的目标函数来进行评估的。

遗传算法在搜索进化过程中一般不需要其他外部信息,仅用评估函数来评估个体或解的优劣,并作为以后遗传操作的依据。由于遗传算法中,适应度函数要比较排序并在此基础.上计算选择概率,所以适应度函数的值要取正值。由此可见,在不少场合,将目标函数映射成求最大值形式且函数值非负的适应度函数是必要的。适应度函数的设计主要满足以下条件。

  • 单值、连续、非负、最大化。
  • 合理、一致性。
  • 计算量小。
  • 通用性强。

在具体应用中,适应度丽数的设计要结合求解问题本身的要求而定。适应度函数设计直接影响到遗传算法的性能。
遗传算法中初始群体中的个体是随机产生的。–般来讲,初始群体的设定可采取如
下的策略。

  • 根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始群体。
  • 先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。这种过程不断迭代,直到初始群体中个体数达到了预先确定的规模。
  • 3
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值