维普资讯 http://www.cqvip.com 第17卷第3期 江西电力职业技术学院学报 VoL17,N o.3 2OO4年9月 Journal of Jiangxi Electric Vocational and Technical College Sep.2OO4 MATLAB遗传算法工具箱(GAOT)的应用 蒋云彩。,万顷波2 (1.南昌大学信息工程学院,江西南昌330029;2.南昌供电公司调度所。江西南昌330006) 摘 要:简要阐述了遗传算法的基本原理,并对MATLAB遗传算法工具箱(GAOT)的参数进 行了详细的介绍。探讨了MATLAB遗传算法工具箱在参数优化和非线性规划中的应用,实例证明 了遗传算法在参数优化和非线性规划中的可行性。 关键词:遗传算法;MATLAB;优化;非线性规划 中图分类号: 01.6 文献标识码:A 文章编号:1008—6862(2004)03—0042一(03) 1遗传算法简介 体构成了一个种群;(3)适应度评估检测:GA在搜索进化过 程中一般不需要其他外部信息,仅用适应度来评估个体或解 遗传算法(Genetic Algorithm:GA)最早是由美国密执安 的优劣。并作为以后遗传操作的依据。对于不同的问题,适应 大学Holland教授提出的,它是模拟生物在自然环境中的遗 度的定义方式也不同;(4)选择:选择或复制是为了从当前个 传和进化过程而形成的一种自适应全局优化概率搜索算法。 体中选出优良的个体,使它们有机会作为父辈为下一代繁殖 20世纪70年代De Jong基于遗传算法的思想在计算机上进 子孙。个体适应度越高,被选择的机会就越多;(5)杂交:杂交 行了大量的纯数值函数优化计算实验。在一系列研究工作的 操作是遗传算法中的特色操作,将群体内的各个个体随机搭 基础上,1989年Goldl ̄rg出版了专著‘搜索、优化和机器学 配成对,对每一对个体.按杂交概率交换它们之间的部分染 习中的遗传算法).形成了GA的基本框架11]。 色体。通过杂交可以得到新一代个体,新个体组合了其父辈 遗传算法与传统搜索算法不同,它是以适应度(fi ̄ess) 个体的特性;(6)变异:变异首先在群体中随机选择一个个 函数为依据,通过对种群(popldAfon)中的所有个体实施遗 体,对选中的个体以一定的概率随机地改变串结构数据中某 传操作,实现群体内个体 个位的值。同生物界一样,GA中变异发生的概率很低,通常 结构重组的迭代过程搜索 在0.0o1加.01之间取值。 法。选择(selection)、杂交 遗传算法的主要特点是群体搜索策略和群体中个体之 (crossover)、变异(mutation) 间的信息交换,搜索不依赖于梯度信息。它尤其适用于处理 构成了遗传算法的三个主要 传统搜索方法难以解决的复杂问题和非线性问题,可广泛用 遗传操作。参数编码、初始群 于组合优化、机器学习、自适应控制、规划设计和人工生命等 体的设定、适应度函数的设 领域,是21世纪有关智能计算中的关键技术之一。 计、遗传操作设计、控制参数 设定等要素组成了遗传算法 2 MATLAB遗传算法工具箱(GAOT) 的核心内容【 。遗传算法的基 本流程如图I所示.其主要 遗传算法的许多算子(如选择、杂交、变异等).都是针对 步骤有: 所谓的染色体进行的,染色体实质是一个向量,可将其看成 (I)编码:由于GA不能 直接处理解空间的数据.必 圈1 GA的基本流程 个lxn的矩阵,因而这些算子实质上是一些矩阵运算。而 Matlab的基本数据单元就是一个维效不加的矩阵。在这 须通过编码将它们表示成遗传空间的基因型串结构数据; 种环境下,用户无需考虑大量有关矩阵算法的低层问题.更 (2)初始种群的生成:随机产生N个初始串结构数据,每个串 不必深入了解相应算法的具体细节.因而利用Matlab绾程可 结构数据称为一个个体,也称为染色体(chromosome),N个个 以节省大量的时间和精力。遗传算法的应用过程中必须要绾 收稿日期:2004—02—D6 作者简介:蒋云彩(1974一),女,江西乐平人,硕士研究生. 维普资讯 http://www.cqvip.com 第3期 蒋云彩 ,万顷波2:MATLAB遗传算法工具箱(GAOT)的应用43 制大量的程序进行计算,作为使用者总希望有一个现成的程 序。而Matlab遗传算法工具箱(GAOT)正好满足这一要求。 其主程序ga.m调用形式如下所示,其参数定义见附表。 function[x,endPop,bPop,traceinfo】=ga ds,evalFN,evalOps, startPop,opts。termFN,termOps,selectFN,selectOps,xOverFNs, xOverOps,mutFNs,mutOps) 附表遗传算法工具箱参数 输出参数 定义 X 运行中的最好结果 endpop 最后一代染色体(可选项) bpop 最好染色体的轨迹(可选项) tracelnfo 每一代的最好个体和平均结果矩阵(可选项) 输入参数 定义 bounds 变量上6 。 下限矩阵 5 . ● 3 ;:,。伽2 , 0D evaU 适应度函数的-Ⅲ文件名 evclops 适应度函数的输入参数,默认为Ⅱ 『IJa(可选项) startPop 调用initialize.m文件得到的初始种群(可选项) [epailon pmb._ops dl叩lay】向量,epspilon是适应度门 限值.prob._ops, ̄1为实数编码,0为二进制编码; opts diBphy取1表示运行中显示当前染色体和最好结 果,0则不显示,默认为【le-6lO】f可选项) termFN 终止函数的.m文件名,默认为【‘MaxGenTerm’1(可选) t∞n0p8 终止函数的输入参数,即最大迭代次数,默认为[1oo】 (可选项) selectFN 选择函数的.皿文件名,默认为【‘normGeomSelect’】 f可选项) selectOps 选择函数的输入参数,默认为[0.O8】(可选项) xOverF'Ns 含空格的xOver.m文件名字符串。实数编码默认为 【‘arithXover heuristicXover simpleXover’】,二进制编 码默认为[‘simpleXover’】(可选项) xover0pB xOver.m的输入参数矩阵,实数编码默认为[2 0;2 3;2 o】,二进翻编码默认为[0.6】(可选项) mutFNs 含空格的mutation.m文件名组成的字符串,实数编 码默认为【‘boundaryMutation multiNonUnlfMutation nonunifMutation unifMutation’】,二进制编码默认为 【‘binaryMutation’】(可选项) mutO ̄ mutafion.m的输入参数矩阵,实数编码默认为[4 0 0;6 100 3;4 100 3;4 0 o】,二进制编码默认为[0.05】 (可选项) 3遗传算法在参数优化中的应用 De Jong函数是连续的、凸起的单峰函数,表达式为 ):∑z ,其2维函数图形如图2所示。 I-1 IOUO·1咖 1,1 圈2 De Jong函数圈 譬s皇耳I! Gel 圈3遗传算法寻优性能的甩踪圈 下面用遗传算法解De long函数的参数优化问题。求 解:minf(x)-512 zI≤512 采用GAOT的步骤如下: (1)编制目标函数文件d ̄jongMin.m如下 function[sol,eva1]=dejongMin(sol,options) numva_r-msize(sol'2卜l: x=sol(1:numvar); eval=-(s啪(x 2);%ga.m used to find the max (2)编程调用主程序ga.m,其程序如下: bounds=ones(3,1)*[-512 512];%维效n=3 [x,endPop,bestSols,u ̄el=sa(boun&,'d*jonzMin’); plot( ̄'ace(:。1)。一 ̄'Bce(:,3), ‘b一’。trace(:,1)。一trace(:,2)。一r); xlabel(‘Generation’,‘fontsize’。14); ylabel(‘Fitmess’,‘fontslze’,14); text(4,100000。‘ ̄hftarrow解的变化’); te=(4。9OOO。‘ ̄leftarrow种群平均值的变化’); (3)结果输出 最优解为:x---[-4.2044e-005 7-3O45e—)05 8.7125 e一005】 维普资讯 http://www.cqvip.com 江西电力职业技术学院学报 第17卷 dejongMin(z)=1.4694 一008 理论上最优解为:z=【0 0 O],dejongMin---O;显然遗传算 法有效地解决了De Jong函数的极小化问题。图3是De Jong函数的遗传算法的寻优性能图。 4 遗传算法在非线性规划中的应用 (1)简述非线性规划四 非线性规划是在存在等式或不等式约束的前提下最优 化某目标函数的同题,一般非线性规期可描述如下: 目标函数 蚴 不等式约束g/x)- ̄o,i=1…m 等式约束  ̄(x)-o,i=m+l,…,l ∈Q 遗传算法对染色体做遗传操作通常会产生不可行的后 代,因而运用遗传算法解非线性规划的核心是如何满足约束 的同题。对于约束条件,工程中常通过惩罚不可行解,将有约 束问题转化为无约束同题。构造带有惩罚项的适值一般有两 种。 种是加法形式:val(z)=-,(z)+p(z) 对于极大化 则ftp tzJ<u:,兵侣 , 对于极小化憾则 : 另一种乘法形式.val=f(x)·p(z) 对于极大化憾则 ;三 对于极小化同题,则ip(x)Ox行 【pptz (zJ>)>1 ,其兵他 他其中, 是染色体, 是目标函数, 是惩罚项。 (2)实例分析 mir ( )=( l-2) +( 2—1) gI(z)=xI-2x2+l 0 g 2:(z)寺2= 一—z:+1+ 0 取加法形式的适值函数: yn r 0,若z可行 1 r-1 』g ),其他 rl是约束i的可变惩罚系数。 (3)采用GA0T编程计算 ①编制目标函数文件rosonbrockMin.m如下 function[soLeVa1]=wsonbrockMin(osl,options) xl=sol(1);  ̄--osl(2); rl--O.1; r2=0.8; gl=xl-2*x2+l;%约束条件 g2=x1.' ̄/4--x2. +l; %加惩罚项的适值 if(g1> &(g2>=0) eval=(xl-2). +(】【2一1). ; else eval=(xl-2). x2—1). ̄2+rl,gl+r2,g2; end eval=-eval; ⑦编程调用主程序ga.m,其程序如下: bounds=ones(2,1).卜1,11;%n=2,设置参数边界 [x,endPop,bestSols,tra ̄]=ga(bounds,"ro ̄nbroekMing; plat(trace(:,1),-trace(:,3),‘b--’ ce(:,1),一仃ace(:’2),‘卜’) xlabel(‘Generation’,‘fontsize’,14); ylabel(‘Fit-tn ̄’,‘fontsize’,14); legend(‘解的变化’,‘种群平均值的变化’); ③结果输出 x=【1 1】 eval(x)=l,gI(x)=O, ̄x)--o.25 显然最优解满足约束条件,图4是遗传算法寻优的跟踪 图。 Gener ̄on 田4遗传算法寻优性能的跟踪田 总之。通过两个实例验证了遗传算法的实际应用效率, 应用GAOT可节省大量编程时间和精力,且使用灵活、方便, 易于学习和掌握,只要对其相关模块作适当修改,即可解决 许多实际问题。 参考文献: 【1】陈国良,王煦法,庄镇来,等.遗传算法及其应用【M】.北京: 人民邮电出版社,1996. 【2】周明,孙树栋.遗传算法原理及其应用【M】.北京:国防工业 出版社,1999. 【3】飞思科技中心产品研发中心.MATLAB6.5辅助优化计算与 设计【M】.北京:电子工业出版社,2003. 【责任■辑杜琴】