遗传算法

遗传算法

生物进化过程的计算模型
遗传算法(GeneticAlgorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。
    中文名:遗传算法 外文名: 别名: 英文名:GeneticAlgorithm 基本概念:是一类借鉴生物界的进化规律 特点:对于各种通用问题都可以使用

基本框架

GA的流程图

GA的流程图如右图所示

编码

遗传算法不能直接处理问题空间的参数,必须把它们转换成遗传空间的由基因按一定结构组成的染色体或个体。这一转换操作就叫做编码,也可以称作(问题的)表示(representation)。

评估编码策略常采用以下3个规范:

a)完备性(completeness):问题空间中的所有点(候选解)都能作为GA空间中的点(染色体)表现。

b)健全性(soundness):GA空间中的染色体能对应所有问题空间中的候选解。

c)非冗余性(nonredundancy):染色体和候选解一一对应。

目前的几种常用的编码技术有二进制编码,浮点数编码,字符编码,变成编码等。

而二进值编码是目前遗传算法中最常用的编码方法。即是由二进值字符集{0,1}产生通常的0,1字符串来表示问题空间的候选解。它具有以下特点:

a)简单易行

b)符合最小字符集编码原则

c)便于用模式定理进行分析,因为模式定理就是以基础的。

适应度函数

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

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

适应度函数的设计主要满足以下条件:

a)单值、连续、非负、最大化

b)合理、一致性

c)计算量小

d)通用性强。

在具体应用中,适应度函数的设计要结合求解问题本身的要求而定。适应度函数设计直接影响到遗传算法的性能。

初始群体的选取

遗传算法中初始群体中的个体是随机产生的。一般来讲,初始群体的设定可采取如下的策略:

a)根据问题固有知识,设法把握最优解所占空间在整个问题空间中的分布范围,然后,在此分布范围内设定初始群体。

b)先随机生成一定数目的个体,然后从中挑出最好的个体加到初始群体中。这种过程不断迭代,直到初始群体中个体数达到了预先确定的规模。

一般算法

遗传算法是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型。它的思想源于生物遗传学和适者生存的自然规律,是具有“生存+检测”的迭代过程的搜索算法。遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。作为一种新的全局优化搜索算法,遗传算法以其简单通用、鲁棒性强、适于并行处理以及高效、实用等显着特点,在各个领域得到了广泛应用,取得了良好效果,并逐渐成为重要的智能算法之一。

遗传算法是基于生物学的,理解或编程都不太难。下面是遗传算法的一般算法:

创建一个随机的初始状态

初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样,在那里问题的初始状态已经给定了。

评估适应度

对每一个解(染色体)指定一个适应度的值,根据问题求解的实际接近程度来指定(以便逼近求解问题的答案)。不要把这些“解”与问题的“答案”混为一谈,可以把它理解成为要得到答案,系统可能需要利用的那些特性。

繁殖(包括子代突变)

带有较高适应度值的那些染色体更可能产生后代(后代产生后也将发生突变)。后代是父母的产物,他们由来自父母的基因结合而成,这个过程被称为“杂交”。

下一代

如果新的一代包含一个解,能产生一个充分接近或等于期望答案的输出,那么问题就已经解决了。如果情况并非如此,新的一代将重复他们父母所进行的繁衍过程,一代一代演化下去,直到达到期望的解为止。

并行计算

非常容易将遗传算法用到并行计算和群集环境中。一种方法是直接把每个节点当成一个并行的种群看待。然后有机体根据不同的繁殖方法从一个节点迁移到另一个节点。另一种方法是“农场主/劳工”体系结构,指定一个节点为“农场主”节点,负责选择有机体和分派适应度的值,另外的节点作为“劳工”节点,负责重新组合、变异和适应度函数的评估。

2014年,英国的科学家正在尝试用遗传算法软件,通过适者生存的“进化”过程得到更好的赛车设计方案。据了解,遗传算法是利用进化论原则进行工程设计的方法。设计人员提出多种初步方案,在计算机上对不同方案的效果进行模拟。效果差的方案被淘汰掉,好的方案生存下来,互相“杂交”并发生“变异”,最终得到令人满意的方案。遗传算法已经被用于设计一级 8月,三星与您激情奥运斗三国与众将一拚高下海纳百川候车亭媒体无限下载MP3你作K王方程式赛车的中途维修方案和某些零件。但一些专家对这种方法持保留态度,认为真实赛场上影响成绩的因素非常复杂,假设中难以全面考虑到,根据遗传算法得出的参数而设计的赛车有局限性。

术语说明

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

染色体(Chromosome)

染色体又可以叫做基因型个体(individuals),一定数量的个体组成了群体(population),群体中个体的数量叫做群体大小。

基因(Gene)

基因是串中的元素,基因用于表示个体的特征。例如有一个串S=1011,则其中的1,0,1,1这4个元素分别称为基因。它们的值称为等位基因(Alleles)。

基因地点(Locus)

基因地点在算法中表示一个基因在串中的位置称为基因位置(GenePosITion),有时也简称基因位。基因位置由串的左向右计算,例如在串S=1101中,0的基因位置是3。

特征值(Feature)

在用串表示整数时,基因的特征值与二进制数的权一致;例如在串S=1011中,基因位置3中的1,它的基因特征值为2;基因位置1中的1,它的基因特征值为8。

适应度(Fitness)

各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数。这个函数是计算个体在群体中被使用的概率。

运算过程

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

的解,一代又一代地优化,并逼近最优解。

遗传操作包括以下三个基本遗传算子(geneticoperator):选择(selection);交叉(crossover);变异(mutation)。这三个遗传算子有如下特点:

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

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

选择

从群体中选择优胜的个体,淘汰劣质个体的操作叫选择。选择算子有时又称为再生算子(reproductionoperator)。选择的目的是把优化的个体(或解)直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的,目前常用的选择算子有以

下几种:适应度比例方法、随机遍历抽样法、局部选择法。

其中轮盘赌选择法(roulettewheelselection)是最简单也是最常用的选择方法。在该方法中,各个个体的选择概率和其适应度值成比例。设群体大小为n,其中个体i的适应度为,则被选择的概率,为遗传算法

显然,概率反映了个体i的适应度在整个群体的个体适应度总和中所占的比例。个体适应度越大。其被选择的概率就越高、反之亦然。计算出群体中各个个体的选择概率后,为了选择交配个体,需要进行多轮选择。每一轮产生一个[0,1]之间均匀随机数,将该随机数作为选择指针来确定被选个体。个体被选后,可随机地组成交配对,以供后面的交叉操作。

交叉

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

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

a)实值重组(realvaluedrecombination)

1)离散重组(discreterecombination)

2)中间重组(intermediaterecombination)

3)线性重组(linearrecombination)

4)扩展线性重组(extendedlinearrecombination)。

b)二进制交叉(binaryvaluedcrossover)

1)单点交叉(single-pointcrossover)

2)多点交叉(multiple-pointcrossover)

3)均匀交叉(uniformcrossover)

4)洗牌交叉(shufflecrossover)

5)缩小代理交叉(crossoverwithreducedsurrogate)。

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

个体A:1001↑111→1001000新个体

个体B:0011↑000→0011111新个体

变异

变异算子的基本内容是对群体中的个体串的某些基因座上的基因值作变动。依据个体编码表示方法的不同,可以有以下的算法:

a)实值变异

b)二进制变异。

一般来说,变异算子操作的基本步骤如下:

a)对群中所有个体以事先设定的变异概率判断是否进行变异

b)对进行变异的个体随机选择变异位进行变异。

遗传算法引入变异的目的有两个:一是使遗传算法具有局部的随机搜索能力。当遗传算法通过交叉算子已接近最优解邻域时,利用变异算子的这种局部随机搜索能力可以加速向最优解收敛。显然,此种情况下的变异概率应取较小值,否则接近最优解的积木块会因变异而遭到破坏。二是使遗传算法可维持群体多样性,以防止出现未成熟收敛现象。此时收敛概率应取较大值。

遗传算法中,交叉算子因其全局搜索能力而作为主要算子,变异算子因其局部搜索能力而作为辅助算子。遗传算法通过交叉和变异这对相互配合又相互竞争的操作而使其具备兼顾全局和局部的均衡搜索能力。所谓相互配合.是指当群体在进化中陷于搜索空间中某个超平面而仅靠交叉不能摆脱时,通过变异操作可有助于这种摆脱。所谓相互竞争,是指当通过交叉已形成所期望的积木块时,变异操作有可能破坏这些积木块。如何有效地配合使用交叉和变异操作,是目前遗传算法的一个重要研究内容。

基本变异算子是指对群体中的个体码串随机挑选一个或多个基因座并对这些基因座的基因值做变动(以变异概率P.做变动),(0,1)二值码串中的基本变异操作如下:

基因位下方标有*号的基因发生变异。

变异率的选取一般受种群大小、染色体长度等因素的影响,通常选取很小

的值,一般取0.001-0.1。

终止条件

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

演示学习

EA_demo,英国格拉斯哥大学1997年出版,至今仍广泛使用,采用大学包括英国利物浦(Liverpool)大学、苏塞克(Sussex)大学、北安普顿(Northampton)大学,德国乌尔姆(Ulm)大学,瑞士日内瓦(Geneva)大学,西班牙格林纳达(Granada)大学,葡萄牙新里斯本(NovadeLisboa)大学,美国加州大学戴维斯分校(UCDavies),加拿大卡尔加里(Calgary)大学,澳大利亚墨尔本皇家理工大学(RMIT),新加坡国立大学,台湾国立清华大学,上海交通大学,巴西PUCRS大学等。EA_demo允许用户直接在网页上一代一代地手动运行,以看遗传/进化算法是怎样一步一步操作的,亦可在背景中批次运行,以观察算法的收敛和染色体是否跳出局部最优。用户可以改变终止代数,群体规模,交配率,变异率和选择机制。也有其它自学课件收录于AI中心网站和欧洲软计算中心网站。

2021年4月24日星期六下午,北京大学经济学院、北京大学金融工程实验室主办的“金工首席谈量化”专题讲座第五讲在线上举行。本次讲座邀请到招商证券量化与基金评价首席分析师任瞳作为演讲嘉宾,以“基于遗传算法的个股分组与组合优化”为题,为经济学院60余位师生作了主题报告。讲座由经济学院研究员黎新平博士主持。

相关词条

相关搜索

其它词条