遗传算法的高级实现技术.docx
《遗传算法的高级实现技术.docx》由会员分享,可在线阅读,更多相关《遗传算法的高级实现技术.docx(17页珍藏版)》请在冰豆网上搜索。
遗传算法的高级实现技术
第三章遗传算法的高级实现技术
3.1二倍体与显性操作算子
3.1.1二倍体结构的生物基础
生物学中,二倍体是指含有二个同源基因组(染色体)的个体。
二倍体是由两个同源染色体构成的,其中的每一个染色体都含有相同功能的基因信息。
二倍体结构中各个基因有显性基因和隐性基因之分,这二类基因使个体所呈现出的表现型由下述规则来决定(显性规则):
在每个基因座上,当两个同源染色体其中之一的基因是显性时,则该基因所对应的性状表现为显性;而仅当两个同源染色体中对应基因皆为隐性时,该基因所对应的性状才表现为隐性。
矚慫润厲钐瘗睞枥庑赖。
显性基因在纯合子(AA)或杂合子(A或a)情况下均能被表现出,而隐性基因只能在纯合子(aa)的情况下才能被表现出。
聞創沟燴鐺險爱氇谴净。
二倍体的二个重要特性:
1)二倍体的记忆能力,它使得生物能够记忆以前经历过的环境及变化,使得生物的遗传进化过程能够快速地适应环境的变化。
这个特点在遗传算法中的应用意义就在于,使用二倍体结构的遗传算法能够解决动态环境下的复杂系统优化问题,而常规的遗传算法却不能很好地应用于动态环境,它难于跟踪环境的动态变化过程。
残骛楼諍锩瀨濟溆塹籟。
2)显性操作的鲁律性,它使得即使随机选择了适应度不高的个体,而在显性操作的作用下,能够用其另一同源染色体对其进行校正,从而避免这个有害选择所带来的不利之处。
这个特点应用于遗传算法中,能有利于提高遗传算法的运算效率.维护好的搜索群体。
酽锕极額閉镇桧猪訣锥。
3.1.2二倍体结构在遗传算法中的实现方案
Hollstien提出了二倍体与显性操作的双基因座显性映射方法:
每个二进制基因用两个基因来描述,一个称为函数基因,取通常含义的0或1值;另一个称为修饰基因,取值为M或m,其中M表示显性基因,m表示隐性基因。
彈贸摄尔霁毙攬砖卤庑。
随后,Hollstien将这种映射关系简化为单基因座显性映射方法。
Holland对这种单基因座的显性映射描述方法进行了改进。
在这个单基因座显性映射方法中,描述基因的字符集为{0,1,10},其中10为隐性的1,1为显性的1。
謀荞抟箧飆鐸怼类蒋薔。
双基因座显性映射方法单基因座显性映射方法
使用双倍体的遗传算法的算法结构与基本遗传算法的算法结构相类似,但也有些差别,其不同之处在于:
(1)显性性状也能进化,所以同源染色体之间也需进行交叉操作。
(2)变异操作需要考虑隐性性状;
(3)对个体进行交叉、变异运算之后,要进行显性操作。
使用双倍体的遗传算法可描述如下:
算法DiploidyGA
①初始化,并设置进化代数计数器初值:
t=1。
②随机产生具有二倍体结构的初始群体P(0)。
③对初始群体P(0)进行显性操作。
④评价初始群体P(0)中各个个体的适应度。
⑤交叉操作:
P’(t)←crossover[p(t)]。
由每两个随机配对的二倍体个体进行交又操作时,共可产生四个单倍体个体。
厦礴恳蹒骈時盡继價骚。
⑥变异操作:
P’’(t)←mutation[p’(t)]。
在对群体中的各个个体进行变异操作时,需要考虑隐性基因的作用。
茕桢广鳓鯡选块网羈泪。
⑦对群体P’’(t)进行显性操作。
⑧评价群体P’’(t)中各个个体的适应度。
⑨个体选择、复制操作:
⑩终止条件判断。
若不满足终止条件,则:
t←t+1,转到第⑤步,继续进行进化操作过程;若满足终止条件.则.输出当前最优个体,算法结束。
鹅娅尽損鹌惨歷茏鴛賴。
3.2变长度染色体遗传算法
在生物的进化过程中,其染色体的长度并不是固定不变的,而是随着进化过程也在慢慢地变化着。
在遗传算法的实际应用中.有时为简要地描述问题的解,也需要使用不同长度的编码串。
结点1和结点6之间的连通路线,可用以下二种方法来描述:
(1)用二进制编码来表示各个结点是否在连通路线上,其中l表示在连通路线上,0表示不在连通路线上。
此时可使用等长度的编码串来表示连通路线,如:
籟丛妈羥为贍偾蛏练淨。
PATH1:
110011
PATH2:
111111
(2)用连通路线所经过结点的顺序排列来表示该条连通路线,如:
PATH1:
1—2—5—6
PATH2:
1—2—3—4—5—6
该方法使用的就是变长度的染色体编码方法。
Goldberg等提出的MessyGA(简称MGA)是一种典型的变长度染色体遗传算法。
3.2.1变长度染色体遗传算法的编码与解码(MessyGA)
编码
将常规遗传算法的染色体编码串中各基因座位置及相应基因值组成一个二元组,把这个二元组按一定顺序排列起来,就组成了变长度染色体的一种通用染色体编码方式。
一般它可表示为:
預頌圣鉉儐歲龈讶骅籴。
ik是所描述约基因在原常规染色体中的基因座编号,vk为对应的基因值。
对于所需求解的问题,若使用常规遗传算法时的染色体长度固定为l,各基因值取自集合V,则有
例如,若常规遗传算法中一个个体的基因型是:
X:
10010l
其染色体长度为l=6。
使用变长度染色体编码,该个体就可表示为:
Xm:
(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)
在这种变长度染色体遗传算法中,允许染色体的长度可长可短。
如:
Xm:
(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)(3,1)(1,0)
Xm:
(1,1)(3,0)(5,0)(6,1)
前者称为过剩指定,后者称为缺省指定。
而当个体的所有基因都能在编码串中得到唯一的描述时,这种描述称为正常指定。
渗釤呛俨匀谔鱉调硯錦。
解码
对变长度染色体进行解码处理时,在正常指定情况下,将变长度染色体遗传算法中的个体基因型转换为常规遗传算法中的个体基因型时不会有什么问题,而在过剩指定或缺省指定时,就会产生描述过剩或描述不足的问题,此时可按下述规则来进行解码处理:
铙誅卧泻噦圣骋贶頂廡。
(1)描述过剩时的解码方法。
此时,常规遗传算法中的一个基因座可能在变长度染色体中同时有几个对应的二元组,规定取最左边的二元组来进行解码。
擁締凤袜备訊顎轮烂蔷。
例如,对于变长度染色体遗传算法中的个体
Xm:
(1,1)(2,0)(3,0)(4,1)(5,0)(6,1)(3,1)(1,0)
它在常规遗传算法中所对应的个体为:
X:
100101
(2)描述不足时的解码方法。
此时,常规遗传算法中有些基因座上的基因值未被在变长度染色体中明确地指定,这时可规定它们取某一项先设定的标准值(或缺省值)。
贓熱俣阃歲匱阊邺镓騷。
例如,对于变长度染色体遗传算法中的个体
Xm:
(1,1)(3,0)(5,0)(6,1)
若取缺省值为0的话,则它在常规遗传算法中所对应的个体为:
X:
100001
3.2.2切断算子与拼接算子
变长度染色体遗传算法除了使用常规遗传算法中的选择算子和变异算子之外,不再使用通用的交叉算子。
而代之以使用下述的切断算子和拼接算子,以它们作为产生新个体的主要遗传算子。
坛摶乡囂忏蒌鍥铃氈淚。
1.切断算子(Cutoperator)
切断算子以某一预先指定的概率,在变长度染色体中随机选择一个基因座,在该处将个体的基因型切断,使之成为二个个体的基因型。
蜡變黲癟報伥铉锚鈰赘。
2.拼接算子(Spliceoperator)
拼按算子以某一预先指定的概率,将二个个体的基因型连接在一起,使它们合并为一个个体的基因型。
3.2.3变长度染色体遗传算法的算法结构
变长度染色体遗传算法的算法结构可描述如下:
算法MessyGA
①初始化。
随机产生M个染色体,长度全部为k的个体,以它们作为变长度遗传算法的初始个体集合P(0),其中k为根据问题的不同而设定的一个参数,并且k≤l。
買鲷鴯譖昙膚遙闫撷凄。
②适应废评价。
对变长度的染色体进行解码处理后,评价或计算各个个体的适应度。
③基本处理阶段。
对群体P(t)施加选择算子,以保留适应度较高的个体。
④并列处理阶段。
对群体P(t)施加变异算子、切断算子和拼接算子,以生成新的个体。
③重复第②~④步,直到满足终止条件为止。
3.3小生境遗传算法
在自然界,“人以群分,物以类聚”是一个司空见惯的现象。
生物总是倾向于与自己特征、性状相类似的生物(同类)生活在一起,一般总是与同类交配繁衍后代。
这种正选型交配方式在生物遗传进化过程中是有其积极的作用的。
生物学上,小生境(niche)是指特定环境中一种组织(organism)的功能,而把有共同特性的组织称作物种(species)。
綾镝鯛駕櫬鹕踪韦辚糴。
为了理解分类及小生境技术在遗传优化中的作用,我们先考察一下基本遗传算法在单变量多峰函数优化方面的搜索特性。
驅踬髏彦浃绥譎饴憂锦。
等峰的单变量多极值点函数变峰的单变量多极值点函数
我们以均匀分布的随机方式产生初始群体,则在算法的开始阶段,各个体分布在一个相对较宽的函数定义域中;
对于等峰的单变量多极值点函数,随着遗传优化过程的进行,群体开始爬山,并逐步集中到一个山峰上。
而对于变峰的单变量多极值点函数,基本遗传算法的优化结果将使群体集中到最高的一个山峰上。
而在实际应用中,我们有时需要了解问题空间内其它山峰的情况,显然,基本遗传算法不能满足这一性能要求。
另外,基本遗传算法采取的是一种随机交配方式;而在生物界,交配则不完全是随机的,至少有性别、区域以及物种类别等方面因素的制约。
从遗传算法角度来看,虽然随机交配方式增强了开劈新的、可能是有用的搜索空间的能力,但由于缺乏对可能的交配效果(子代的质量)方面的考虑,也会带来交配的有效性以及优化效率不太理想等方面的问题。
为了解决这些问题,在遗传算法中引入小生境技术已被一些实验研究证实是种有效的尝试。
猫虿驢绘燈鮒诛髅貺庑。
1.基于预选择机制的小生境技术
1970年,Cavicchio率先在遗传算法中引入了基于预选择机制的小生境技术。
只有在子串的适应度超过其父串的情况下,子串才能替换其父串,进入下一代群体。
由于这种方式趋向于替换与其本身相似的个体(父与子之间的性状遗传),因而能够较好地维持群体的分布特性。
Cavicchio声称使用这种方法可以在群体规模相对较小的情况下维持较高的群体分布特性。
2.基于排挤机制的小生境技术
1975年,DeJong一般化了Cavicchio的预选择机制,提出了一种称作排挤(crowding)机制的小生境技术。
锹籁饗迳琐筆襖鸥娅薔。
使用了群体的代间覆盖方式,依据相似性替换群体中的个体。
具体算法实现步骤如下:
(1)初始化;(建立初始群体,确定遗传参数,设定排挤因子CF)
(2)计算个体的适应度;
(3)遗传操作(选择、交叉和变异);
(4)从当前群体中随机选取群体规模的1/CF个个体组成排挤因子成员;
(5)比较新产生的个体与排挤因子成员之间的相似性;
(6)用新产生的个体去替换排挤因子成员中最相似的个体,形成新的当前群体;
(7)如未满足算法终止条件则返回第
(2)步,否则算法终止。
在优化的初始阶段,由于群体中个体间的相似性相差不大,个体的更新替换呈随机选择特性;随着遗传优化的进展,群体中的个体逐步被分类,形成若干个小生境,此时,基于个体相似性的替换技术可在一定程度上维持群体的分布持性,并为更进一步的分类和小生境的形成腾出空间。
構氽頑黉碩饨荠龈话骛。
DeJong曾将这一技术应用到多峰函数的遗传优化上,获得了比较满意的效果。
3.基于共享(sharing)机制的小生境技术
1987年,Goldberg和Richardson提出了一种基于共享(sharing)机制的小生境技术。
輒峄陽檉簖疖網儂號泶。
定义了共享函数(sharingfunction),用来确定每个个体在群体中的共享度。
一个个体的共享度等于该个体与群体内的各个其它个体之间的共享函数值的总和。
共享函数是关于两个体之间的关系密切程度(基因型的相似性或表现型的相似性)的函数,当个体间关系比较密切时,共享函数值较大,反之,则共享函数值较小。
尧侧閆繭絳闕绚勵蜆贅。
设dij表示个体i和个体j之间的关系密切程度,S为共享函数,Si表示个体i在群体中的共享度,则有:
在计算了各个体的共享度后,个体的适应度f(i)依据下式调整为fs(i):
显然,这种机制限制了群体内某一特殊“物种”的无控制的增长。
图3.7~图3.10显示了引入基于共享机制的小生境技术的遗传算法(GA)与基本遗传(sGA)算法在多峰函数优化方面的搜索特性差异。
识饒鎂錕缢灩筧嚌俨淒。
SGA优化等峰单变量多极基于小生境GA优化等峰单变量
值点函数的解群分布趋势多极值点函数的解群分布趋势
SGA优化变峰单变量多极基于小生境GA优化变峰单变量
值点函数的解群分布趋势多极值点函数的解群分布趋势
3.4混合遗传算法
3.4.1混合遗传算法的思想
应用实践表明,在遗传算法的应用中也会出现一些不尽人意的问题,这些问题中最主要的是它容易产生早熟现象、局部寻优能力较差等。
另外,遗传算法也无法避免多次搜索同一个可行解,这也是影响遗传算法运行效率的一个因素。
凍鈹鋨劳臘锴痫婦胫籴。
另一方面,梯度法、爬山法、模拟退火算法、列表寻优法等一些优化算法却具有很强的局部搜索能力,而另一些含有与问题相关知识的启发式算法的运行效率也比较高。
恥諤銪灭萦欢煬鞏鹜錦。
在遗传算法的搜索过程中融合这些优化方法的思想、构成一种混合遗传算法(HybridGeneticAlgorithm)是提高遗传算法运行效率和求解质量的一个有效手段。
鯊腎鑰诎褳鉀沩懼統庫。
一种基本的混合遗传算法构成框架。
由可以看出.这种混合遗传算法是在标准遗传算法中融合了局部搜索算法的思想,其特点主要体现在以下二个方面:
硕癘鄴颃诌攆檸攜驤蔹。
(1)引入了局部搜索过程。
基于群体中各个个体所对应的表现型,进行局部搜索,从而找出各个个体在目前的环境下所对应的局部最优解,以便达到改善群体总体性能的目的。
阌擻輳嬪諫迁择楨秘騖。
(2)增加了编码变换操作过程。
对局部搜索过程所得到的局部最优解,再通过编码过程将它们变换为新的个体,以便能够以一个性能较优的新群体为基础来进行下一代的遗传进化操作。
氬嚕躑竄贸恳彈瀘颔澩。
混合遗传算法的基本构成原则
在构成混合遗传算法时,DeJong提出了下面的三条基本原则:
(1)尽量采用原有算法的编码。
这样就便于利用原有算法的相关知识,也便于实现混合遗传算法。
(2)利用原有算法的优点。
这样就可保证由混合遗传算法所求到的解的质量不会低于由原有算法所求到的解的质量。
釷鹆資贏車贖孙滅獅赘。
(3)改进遗传算子。
设计能适应新的编码方式的遗传算子,并在遗传算子中溶入与问题相关的启发式知识,这样就可使得混合遗传算法既能够保持遗传算法的全局寻优特点,又能够提高其运行效率。
怂阐譜鯪迳導嘯畫長凉。
3.4.2模拟退火算法
在金属热加工工艺中,退火是指将金属材料加热到某一高温状态,然后让其慢慢冷却下来这样一个金属热处理过程。
从统计热力学的观点来说,随着温度的降低,物质的能量将逐渐趋近于一个较低的状态,并最终达到某种平衡。
谚辞調担鈧谄动禪泻類。
模拟退火算法(SimulatedAnnealing)就是基于金属退火的机理而建立起的一种全局最优化方法,它能够以随机搜索技术从概率的意义上找出目标函数的全局最小点。
模拟退火算法的构成要素如下:
嘰觐詿缧铴嗫偽純铪锩。
1.搜索空间
搜索空间也称为状态空间,它由可行解的集合所组成,其中一个状态x就代表一个可行解。
2.能量函数E(x)
能量函数也就是需要进行优化计算的目标函数所求的最优解。
3.状态转移规则P
状态转移规则是指从一个状态xold(一个可行解)向另一个状态xnew(另一个可行解)的转移概率,它与当前的温度参数T有关。
熒绐譏钲鏌觶鷹緇機库。
4.冷却进度表T(t)
冷却进度表是指从某一高温状态To向低温状态冷却时的降温管理表。
假设时刻t的温度用T(t)来表示,则经典模拟退火算法的降温方式为:
而快速模拟退火算法的降温方式为:
这两种方式都能够使得模拟退火算法收敛于全局最小点。
另外,在实际应用中,为计算简便起见,也可用下式来进行温度管理:
式中,k为略小于1.0的系数。
假设图所示为某一能量函数的描述图形。
如果搜索过程陷入局部最优点A,若要使搜索过程脱离这个局部员优点而到达C点,则必须使系统至少要具有B点所对应的能量。
亦即,这里必须允许能量函数值可以一时增大。
鶼渍螻偉阅劍鲰腎邏蘞。
假设在状态xold时,系统受到某种扰动而可能会使其状态变为xnew。
与此相对应,系统的能量也可能会从E(xold)变成E(xnew),系统由状态xold变为状态xnew的接受概率可由下面的Meteopolis规则来确定:
纣忧蔣氳頑莶驅藥悯骛。
上式的含义是:
当新状态使系统的能量函数值减少时,系统一定接受这个新的状态;而当新状态使系统的能量函数值增加时,系统也以某一概率接受这个新的状态。
颖刍莖蛺饽亿顿裊赔泷。
固定温度参数T,反复进行状态转移过程,接收概率p(x)将服从Gibbs分布:
式中,Z是使概率值正规化的系数。
由上式可见,随着温度参数T的减小,接收概率也逐渐减小,即能量函数增大的可能性也逐渐减小,最后系统会收敛于某一能量最小的状态,该状态就可作为目标函数的全局最小值。
濫驂膽閉驟羥闈詔寢賻。
模拟退火算法可描述如下:
算法SimulatedAnnealing
①随机产生一个初始最优点,以它作为当前最优点,并计算目标函数值。
②设置初始温度:
T=To。
③设置循环计数器初值:
t=1。
④对当前最优点作一随机变动,产生一新的最优点。
计算新的目标函数值,并计算目标函数值的增量D。
⑤如果D<0,则接受该新产生的最优点为当前员优点;
如果D>0,则以概率p=exp(-D/T)接受该新产生的愚优点为当前最优点。
⑥如果t<终止步效,则:
t=t+1,转向第④步。
⑦如果未到达冷却状态,则:
T=T(t)转向第③步;
如果已到达冷却状态,则:
输出当前最优点,计算结束。
3.4.3遗传模拟退火算法
遗传模拟退火算法是将遗传算法与模拟退火算法相结合而构成的一种优化算法。
遗传算法的局部搜索能力较差、但把握搜索过程总体的能力较强;
而模拟退火算法具有较强的局部搜索能力,并能使搜索过程避免陷入局部最优解,但模拟退火算法却对整个搜索空间的状况了解不多,不便于使搜索过程进入最有希望的搜索区域。
銚銻縵哜鳗鸿锓謎諏涼。
如果将遗传算法与模拟退火算法相结合,互相取长补短,则有可能开发出性能优良的新的全局搜索算法,这就是遗传模拟退火算法的基本思想。
挤貼綬电麥结鈺贖哓类。
与基本遗传算法的总体运行过程相类似,遗传模拟退火算法也是从一组随机产生的初始解(初始群体)开始全局最优解的搜索过程,它先通过选择、交叉、变异等遗传操作来产生一组新的个体,然后再独立地对所产生出的各个个体进行模拟退火过程,以其结果作为下一代群体中的个体。
这个运行过程反复迭代地进行,直到满足某个终止条件为止。
赔荊紳谘侖驟辽輩袜錈。
遗传模拟退火算法可描述如下:
算法GeneticSimulatedAnnealing
①进化代数计数器初始化:
t=0;
②随机产生初始群体P(t)。
③评价群体P(t)的适应度。
④个体交叉操作:
P’(t)=Crossover[P(t)]
⑤个体变异操作:
P’’(t)=Mutation[P(t)]
⑥个体模拟退火操作:
P’’’(t)=SimulatedAnnealing[P’’(t)]
⑦评价群体P’’’(t)的适应度。
⑧个体选择、复制操作:
P(t+1)=Reproduction[P(t)∪P’’’(t)]
⑨终止条件判断。
若不满足终止条件,则:
t=t+1,转到第④步,继续进化过程;若满足终止条件.则:
输出当前最优个体,算法结束。
塤礙籟馐决穩賽釙冊庫。
上面这个算法是在遗传算法的运行过程中溶入了模拟退火算法的思想。
另一种构造混合遗传算法的方法是在模拟退火算法中引入遗传算法的思想。
例如,Mathefoud所开发出的一种称为并行组合模拟退火的算法PRSA(ParallelRecombinationSimulatedAnnealing)就用于这种类型,其基本思想是在模拟退火算法的运行过程中溶入遗传算法中群体和交叉操作的概念。
该算法可描述如下:
裊樣祕廬廂颤谚鍘羋蔺。
算法PRSA
①随机生成含有M个个体的初始群体P(0)。
②设置初始温度参数:
T=Tmax
③对P(t)中的各个个体进行随机配对,对其中的每一对个体做下述处理:
进行交叉和变异运算,由两个父代个体P1、P2生成两个子代个体c1和c2。
对由父代个体和子代个体所组成的两个个体组P1和c1,P2和c2,以概率p接受父代个体为下一代群体中的个体,以概率(1-p)接受子代个体为下一代群体中的个体。
仓嫗盤紲嘱珑詁鍬齊驁。
其中,
式中,fp和fc分别为父代个体和子代个体所对应的目标函数值。
④终止条件判断。
若不满足终止条件,则:
按降温表更新温度参效T,t=t+1,转向第③步;若满足终止条件,则:
输出当前最优点,算法结束。
绽萬璉轆娛閬蛏鬮绾瀧。