多父辈遗传算法交叉算子研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多父辈遗传算法交叉算子研究
[日期:2006-05-31] 来源:作者:[字体:大中小]
罗治情戴光明詹炜郑蔚
摘要: 通过对遗传算子和多父辈交叉遗传算法的研究,提出了多父辈循环移位的交叉算子。新的交叉算子能够让多父体之间实现基因互补,达到保持种群个体多样性的目的。仿真测试结果表明:新的算子改进了多父辈遗传算法对全局最优解的搜索能力和收敛速度。在此基础上可以进一步改善多父辈遗传算法的性能,从而使遗传算法获得更广泛的应用。
关键词: 多父辈;遗传算法;遗传算子;循环交叉
1 引言
传统的遗传算法作为一种通用的自适应随机搜索算法,存在着局部收敛和收敛速度慢这两个问题。而多父辈交叉(Multi-parent Recombination) 遗传算法在近年来逐渐引起了研究者的注意。由于随着在交叉操作中多父辈的引入,降低了一些个体将自身复制到子代中的可能性,这就意味着多父辈交叉有利于提高遗传算法的性能。但是,研究发现,对于不同的测试函数,不知道在何种情况下或者说对于具有何种特点的测试函数,应该采用何种交叉算子才能获得最优的结果。
本文在对遗传算子和多父辈交叉遗传算法的研究的基础上,提出了多父辈循环移位的交叉算子,算子改进了多父辈遗传算法的性能。
2 多父辈遗传算法的算子
在多父辈遗传算法的研究中,其遗传算子一直都是被研究的热点。曾经也有很多学者进行了相关方面的研究。如:多父辈交叉的基因池重组算子(Gene pool recombination)、、二值编码遗传算法的多父辈扫描交叉( scanning crossover) 算子和对角线交叉(diagonal cross over) 算子以及采用边界镜像延拓(Boundary Extension by Mirroring , BEM) 的实数编
码的质心交叉(Center of Mass Crossover , CMX) 算子和单纯形交叉(Simplex Crossov er , SPX) 算子。另外还有多父辈的单峰均匀分布交叉算子(Unimodal Normal Distribution Crossover ,UNDX-m) 。
通过对以上研究的总结可以知道:多父辈交叉有利于提高遗传算法的性能,但是同时也发现多父辈交叉遗传算法的性能依赖于测试函数和交叉操作的父辈数量。
3 循环移位交叉算子的设计
循环移位交叉算子的思想实质上就是基本遗传算法中的交叉算子,只是在本文中处理方式不一样而以,由于是多个父体进行交叉,产生的后代也不是只有一个后代个体。因此,需要在交叉过程中进行有效的处理,以便得到同样数目的个体。
基本遗传算法的交叉操作一般是在交配池中选择两个个体之后,然后随机选择一个交叉点n,然后将两个个体基因位数n后面的基因交换而得到下一代个体。如图1所示。
图1 基本遗传算法中的交叉操作
本文的多父辈交叉操作思想来自于基本的交叉操作,但是在处理上有些不同之处。在交配池中随机选择一定数目(一般≥3)的参入交叉的父辈个体之后,将这些父辈个体的染色体连接在一起,形成一个长的染色体C。然后,产生一个随机数P(1≤P≤单个染色体长度-1),将C循环左移P位,即让左端移出的基因填补到C的右端,得到C。如图2所示。交叉完之后,再按照单个个体染色体的长度将C’“分割还原”为后代子个体。
图2 循环移位交叉操作
另外,在算法的实际实现过程中,我们引入了自适应的概念。当进化到群体中最坏个体和最好个体的适应度相差很小的时候,我们可以减小父辈的数目,从而加快算法的收敛速度。
4 算法模拟测试
为了检验本文交叉算子对多父辈遗传算法的搜索能力的影响,选取平均收敛次数作为评价标准。平均收敛次数是指对于同一目标函数做多次测试(本文对同一目标函数统一都做30 次) 而得到的停机代数的平均值。
算法的停机条件也是采用一般常用的方法,适应度值与当前理论结果的差值(e)很小则认为算法收敛并停机;另外如果进化代数大于某一指定的值时则认为不收敛并停机。
本文中选取的测试函数:
F1:六驼峰函数f(x,y)=(4-2.1x2+x4/3)x2 + xy + (-4 + 4y2)y2的最小值,-100≤x, y≤100。函数在两个不同点:(-0.089860, 0.712657)和(0.089860, -0.712657)为全局最小,最小值为-1.031628。
F2:DeJong函数f(x,y)=100*(x2-y)2+(1-x)2的最大值,-2.048 ≤x, y≤2.048。
该函数有两个局部最大点(f (-2.048,- 2.048) =3905.926227和f(2.048,-2.048)= 3897.722 309,其中第一个点为全局最大点。
F3:函数f(x,y)=(a÷(b+( x2+y2)))2+( x2+y2)的最大值, -5.12≤x, y≤5.12。其中设a=3.0,b= 0.05,max f(0,0) =3600,同时存在4个局部极值点。
测试结果如表1所示:
表1 函数优化测试结果
5 总结
对标准测试函数的实验结果表明:本文的算法,提出了循环移位交叉算子,引入了自适应的父辈数量(自适应搜索空间),能够提高空间搜索寻优能力,
本文的研究为减轻交叉操作父辈数量对于遗传算法性能的影响,以及增强遗传操作算子对于各种问题的优化能力做了一定的探索,对于今后进一步深入的研究工作提供了基础。
参考文献
1 刘勇,康立山,陈毓屏. 非数值并行算法——遗传算法[M]. 北京:科学出版社出版,199 8.
2 潘正君,康立山,陈毓屏. 演化计算[M]. 北京:清华大学出版社,2000.
3 王小平,曹立明. 遗传算法——理论、应用与软件实现[M].西安:西安交通大学出版社,2002.
4 陈国良,王煦法,庄镇泉等. 遗传算法及其应用[M].北京:人民邮电出版社,1996.
5 龚道雄,阮晓钢. 一种新的多父辈交叉遗传算法[J]. 计算机应用,2004,24(6):264-266.
6 李凡,黄数林,张东风. 一种改进的多倍体遗传算法[J]. 华中科技大学学报(自然科学版),2005,33(1):16-18.
7 任庆生,叶中行,曾进等. 遗传算法中常用算子的分析[J]. 电子学报,2000,28(5):113-114