Matlab遗传算法工具箱的设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
强大功能,作者在Mauab下开发了遗传算法工具箱(G舡幻oIb。x),为№Ⅱab增加了一个有利的工具.并可
帮助人们认识、了解遗传算法,同时也为进一步开发遗传算法的应用提供了基础和有益的帮助.
1遗传算法‘2
遗传算法是由美国MicKRan大学的John H011and教授在60年代提出的,该算法是基于自然遗传和自 然优选机理的寻忧方法.自然遗传和自然优选来自于选尔文的进化论学说.该学说认为,在生物进化过 程中,任一动植物经过若干代的遗传和变异,使之能够适应新的环境.是优胜劣汰的结果;这种自然遗传思 想也适用于求解优化问题.遗传算法采用选择(selecdon)、交叉(crossover)和变异(mu诅60n)运算来实现 这一自然法则的模拟;其演算流程如图l所示. 选择其过程为,基于个体对环境的适应度(由,/∑,决定;其中,是对象的适配值,∑,是种群所有 对象的适配值之和),决定哪个个体被复制.选择意味着由较高适配值的个体,被复制的慨率也比较大. 交叉指在选择个体成员的过程中,按一定概率随机选择匹配对;然后两个匹配的个体位串根据随机 选取的交叉点进行交叉繁殖,产生一对新的个体串.采用二进制编码,交叉可以描述如下(f是交叉点):
+ev al
m遗传算法与具体应用问题的唯一接口,是种群中个体优劣的一种量化反映;它的构造直接
影响求解的效率.许多类型的评价函数都可以用于遗传算法,但它至少要满足一个条件:函数值町阱部分 有序地分布.砰价函数是独立r遗传算法的. 2.7终止函数 遗传算法从一代到一代通过选择和复制父代直到某一条件被满足.最常用到的终止条件是到某一最 大的代数停止(maxl'erm),另一终止策略与种群的收敛标准有关(spel-erm).一般来说,遗传算法将会强 迫整个种群的大部分解收敛到一个值上.当偏离的个体数量之和小于某一具体极限时,算法就停止.如 果在寻优的过程中经过许多代最优值都没有明显改善,当代数累积到一定值时算泼也会停止.
统一变异:uniMut.m随机地选择一变量J,使它等于一个统一的随机数畎口.~,);边界变异:咖Muim
随机地选择一个变量,,使它等于它的上边界或下边界;非统一变异:NLIMut.m随机地选择一个变量,,使它 等于一个非统一的随机数;多点非统一变异:h仆n I^Iu【m把非统一变异操作应用于父代Ⅳ中的每一个元素. 2.5初始函数 init.m用来提供初始种群,最通常的方法是为整个种群随机地生成解.然而,既然遗传算法自身能够 不断地反复提高现有的解,可以在初始种群中加入好的解,剩余的部分再随机产生. 2.6评价函数
竺旷—一 萋.。}∥U小h~ 弧一卅^.^M
12—
世代数
8}—五厂—南—1矿1疗—面
阿4二进制遗传算法 图5浮点式遗传算法
3)corana函数寻优 corana函数是一系列参数变量函数吼,非常便于计算并且含有许多的局部最小值.c。rana函数是一 个直角口袋状H维空间抛物线(见图6),它的全局最小值产生在(0,0,O,…).使用不同的随机种子对测 试函数分别用二进制(BGA)和浮点式(FGA)遗传算法测试10次,并且与使用模拟退火算法(sA)求得的 结果进行比较,结果见表1.
sinCro.m rollselln 图l遗传算法流程
tousel.m;遗传算子:二进制, Min“IMuLm;终止函
binMut m:浮点式.heuCro.m
speTeLm.
aTiCr0.m
bouM【uLm
uniⅣIut m
NuNuLm
数:maxTeLm 2.2编码方式
在遗传算法中对每一个个体进行适当的编码是必不可少的一步.算法中问题的构成以及遗传算子的 使用都取决于编码方式.H011and的简单遗传算法采用的是二进制编码.二进制编码理论分析方便,遗传 操作与生物进化相似,能在相同的范围内表示最多的模式,能够充分体现隐性的并行性.但二进制编码也 有自己的缺陷,例如不能直接反映问题的固有结构,精度不高,个体长度大,占用计算机内存多等. Michalewicz对实值编码和二进制编码遗传算法进行了研究比较,经过实验发现,使用浮点数编码的遗传 算法进行函数优化能取得更好的精度和更高的效率. 2.3选择函数 选择个体不断地生成下一代在遗传算法中是极其重要的一个环节.概率选择是根据个体的适配值来 进行的,适配值高的个体被选中的机会也太.选择策略有:轮盘赌轮盘选择mllsel m(roulet【e m(Nomlalized
子定义如下:
单点交叉:simseI m随机产生一个1到”之间的数r,根据式(1)、(2)产生2个新个体x7和y7:
,
。一2
k olhe嘶e.
h,if
L。 f<r;
卜,,if
j<r;
(1)
,
,,5
1即。山enVise.
l】一J.t
if
(2)
简单变异:bjnMut.m根据式(3)U概率只.对个体的每一位进行改变: u(o,1)<P,; ot】1ewlse.
表l算法比较
250 25 250 20
—250
I
5
亡:25010
250 05 250 00 0
m
20
30
40
50
60
图6平面CDrana函数
万方数据
35二
北京
【、业大’≯
学报
二㈣】q
实验结果显示:在低维数的情况下,算法之间区别不大;到r高维数的问题.FGA叫碌优1‘其他两种 算法.FGA在3种维数隋况下都能够找到最优点;sA在旧维情况下,有2次没有找到最优解;在}‘维晴况 下,根本无法找到最优解.BGA在低维数隋况下有较好的表现;到了高维数.寻解效率明屁降低.
4结语
完成MaIlab遗传算法工具箱的设计,支持二进制硐『浮点式编码力式,工具箱提供r一个标准化的、n, 扩展的、简单的算法,广泛适用于各种复杂的数值运算.L具箱包括了夫量的算子函数,提供各种类型的 选择策略,交叉、变异的方式,适用于各类不同的nq题.使用L具箱对一系列非线性、非凸、多峰值函数逆
第17卷第3期
200l干 9门
JouRNAI
北京
oF
L
BEIJ【NG
lp^学々 报 PoLYTEfHh旧L JNI、ERS】TY
voI 17
ho 3
S}n二00】
Matlab遗传算法工具箱的设计
郭 强,赵晓华,孙 亮
(北京上业夫学电子信息与控制上程学院.北京100011、
摘要:介绍丁使用Ⅵ引ab语言苌玩遗传算法,建d遗传曹往j,具箱(GAs t∞I_Dox).开发的遗传算法J,具箱 支持二进制和浮点式编码方式,并fl提供了多种选择.交叉、变异的力法,用【l提高遗传算法的性能使_£}Ij具 箱对一系列非线性、多峰值函数问题进行ur测试,显,下r优良的1生能通过洲试、发现浮电式遗传算法的寻解效 率和精确度都优于二进制算法以及传统的寻优方涪.
(3)
_3
1‰
L
2)浮点式编码卫y采用实值编码~~为每一个变量,的边界值. 交叉:simcrom与二进制式相同,见式(1).(2). 算术交叉:aiCm.m当r=u(0.1)时,对父代进行线性算术交叉,见式(4). F=rx+(1一r)y,y’=(1一一x+,y’
(4)
启发式交叉:heucm.m对个体进行线性递推,在r=“f 0,1)并且Ⅳ的适配值优于y的适配值的情况下 生成新的个体.如果Ⅳ7不可行,那么产生一个新的随机数r并重新计算产生一个新的解;否则,停止运算.
wheel
selec60n),竞赛选择tousel m(toumament),elidst选择,排序选择(ranIdng),几何规划排序选择NGRsel.
geornemc
ranbng).
万方数据
3jO
北京上业夫学学报
!㈣1年
2.4遗传算子 遗传算法的基奉算子是交叉和变异,算子的应用取决于个体的编码力式. 1J二进制编码 设f和】,是n维的行向量,用来代表种群中的2个父代.采用二进制编码,交叉和变
个怍l
11011.00100ll
011n、后化1
110l】I】1 0000111】0,
收稿日期:2000.07-07. 作者墒介:郭强(1978),男,本科生【已毕业)
万方数据
第3期
个体2
110ll
郭强等:MaⅡab遗侍算法工具箱的设计 110∞01lll0,后代2
110IIl 00100110l】0.
种群
遗传算子
变异是以一定的概率改变位串的某个位置的值.采用二 进制编码,交叉可以描述如下:
原来的后代l
原来的后代l 11011110000llll0,变异的后代l
11叭lO 0100110l】O,变异的后代2
llO叭11000叭1110;
1101101100110110;
在遗传算法中先寻找一个基本可行解,然后对这个基本可 行解进行遗传操作,通过选择、交叉和变异3个算子在串编码空 间进行搜索,根据系统输出的结果性能对编码串进行评价,利用 随机技术进行复制,同时选择交叉点,对编码串进行交叉,得到 新的下一代编码串,在这个过程中允许在变异概率内对编码串 进行变异.这一过程重复执行直到某种条件被满足. 遗传算法的特点”1:①遗传算法直接使用问题参数的适当编码,而不是参数集本身;@遗传算法从问 题的解组成的群体开始搜索,寻找最优懈,而不是从某一点出发;@遗传算法利用输出结果的性能来指导 算法朝着最优的方向前进,而不利用一些特殊的知识.这样保证了系统的鲁棒性,可以适用于任何环境; ④遗传算法概率地使用3种遗传操作(选择、交叉、变异)进行搜索.而不用确定的规则,可以避免传统搜索 方法的局部最优的限制,找到全局最优解;@遗传算法具有任意时闻算法的特点,可以在任意时刻中断, 并输出当时的基本较优可行解,随着规划时间的增加,系统的性能在增长;@遗传算法对待寻优函数基 本无限制,它既不要求函数连续,也不要求函数可微;⑦遗传算法在解空问进行高效启发式搜索,而非盲 目的穷举或完全随机搜索;@遗传算法具有并行计算的特点,因而可通过大规模并行计算来提高计算速 度;⑨遗传算法计算简单,功能强. 2 GAs toolbox 使用遗传算法需要决定以下几个基本问题:编码方式、选择函数、遗传算子.初始种群的建立、终止标 准以及评价函数等. 2.1工具库主要函数清单 主函数:gene6c.m;初始函数:i血Lm;选择函数:NGRsel.m
湛 g 略
20r—f—盲—气——i—葡
J
掣芦
。0 5 lO 15 20
25
圈2单变量多峰值函数寻优
2)测试函数 ,(‘,乇)‘sin
3丌一+sinl2“鼍;
‘=【一3,lO],恐=[4,6】一 对测试函数分别使用二进制编码和浮点式编码进行比较.实验结果如图4、5所示(初始种群取80,执 行100代),浮点式在求解效率和稳定性上优于二进制遗传算法.
关键词:
遗传算法:函数优化:Madab
5
中图分类号:TP 273
文献标识码:A
文章编号:o:54 0037(200”03
0348
05
遗传算法是演化计算的一个重要分支,是一种基于自然选择和基因遗传学原理的优化搜索方法.遗 传算法吸收了自然生物系统“适者生存,优胜劣汰’的进化原理,从而使它能够提供一个在复杂空间中进行 鲁捧搜索的方法,为解决许多传统的优化方法难以鹇决的优化问题提供了新的途径.与传统的搜索和优 化过程相比,遗传算法在计算机上模拟生物的进化过程和基因操作.因而不需要对象的特定知识,也不需 要对象的搜索空间是连续可徽的,具有全局寻优的能力. Mauab作为一种拥有高速性能数值计算能力的通用科技计算机语言在其简单易用的操作环境中集成了 数值分析、矩阵计算、符号计算、图视能力、文字处理、可视化建模仿真和实时控制能力,适合多学科、多部门 的发展需求.Mauab本身提供的大量内建辅助函数对于处理函数优化问题十分有用,而且相当全面、简便易 用,Mau曲的数值计算功能很强,另外,Manab开放、可扩展的体系结构允许用户开发自己的应用程存…. M砌ab的这些性质为开发遗传算法工具箱提供了一个统一和熟悉的操作环境.为了更好地利用遗传算法的
3性能测试H
1)求函数/(x)=x+10 sin
5工上7
c。s
ቤተ መጻሕፍቲ ባይዱ
4』在区间(O,10)内的极大值
万方数据
第3期
郭强等:MaⅡab遗传算法工具箱的设计
35
设初始种群大小等于10,采用几何规划排序选择、算术交叉、非统一变异,计算代数分别取1代和25 代.实验测试结果如图2、3所示.本算法对单变量的多峰函数寻优十分有效,并且随着计算代数的增加, 计算精度得到改善.