遗传算法及其MATLAB实现课件_第1页
遗传算法及其MATLAB实现课件_第2页
遗传算法及其MATLAB实现课件_第3页
遗传算法及其MATLAB实现课件_第4页
遗传算法及其MATLAB实现课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章遗传算法及其MATLAB实现1、遗传算法的理论现代生物进化理论的基本观点:种群是生物进化的基本单位,生物进化的实质是种群基因频率的改变。种群进化将最终导致新物种的形成。遗传算法杂交了渐变式和爆发式两种思想。(2)解码目的是为了将不直观的二进制还原成十进制。设某一个体的二进制编码为bkbk-1…b2b1,则对应的解码公式为解码在宏观上对应着表现型,微观上对应DNA的翻译过程。(3)交配“交配运算”是使用单点或多点进行交叉的算子。首先用随机数产生一个或多个交配点位置,然后两个个体在交配点位置互换部分基因码,形成两个子个体。原代子代交换后四位基因(4)突变为了避免在算法迭代后期出现种群过早收敛。对于二进制的基因码组成的个体种群,实行基因码的小几率翻转,即0变为1,1变为0。突变后的染色体可以看成原染色体的子代染色体。(5)倒位

指一个染色体某区段排列顺序发生180°的颠倒,造成染色体内的DNA序列重新排列。

倒位的部分倒位后(6)个体适应度评估自然界对于生物的筛选机制与下图相似。落在各个区域的几率对应遗传算法中各条染色体被遗传到下一代的几率,其坠落位置对应自变量取值。个体适应度大的个体更容易被遗传到下一代。通常,求目标函数最大值的问题可以直接把目标函数作为检测个体适应度大小的函数。3、遗传算法的MATLAB程序设计

程序设计流程及参数选取MATLAB遗传算法工具箱①种群的规模②变异概率③交配概率④进化代数⑤种群初始化遗传算法的参数设计原则工具箱核心函数用法函数ga函数gaoptimset[x,fval.reason]=ga(@fitnessfun.nvars,options)options=gaoptimset(‘PropertyName1’,’PropertyValue1’,PropertyName2’,’PropertyValue2’,PropertyName3’,’PropertyValue3’……)GeneticAlgorithmandDirectSearchToolbox适应度函数设计实例1遗传算法和直接搜索工具箱中的函数ga是求解目标函数最小值,可直接令目标函数为适应度函数function

f=fitnessfcn(x)%x为自变量实例2若有约束条件(包括自变量取值范围)求最小值functionf=fitnessfcn()xIf(x<=-1|x>3)%表示有约束x>-1和x<=3,其他约束条件类推f=inf;elsef=f(x);end实例3若有约束条件(包括自变量取值范围)求最大值将f=f(x)换成f=-f(x)4、遗传算法应用案例案例一

>>globalBitLengthglobalboundsbeginglobalboundsendbounds=[-22]; %一维自变量取值范围precision=0.0001;%运算精度boundsbegin=bounds(:,1);boundsend=bounds(:,2)计算如果满足求解精度至少需要多长染色体BitLength=ceil(log2((boundsend-boundsbegin)'./precision));popsize=50;%初始种群大小Generationnmax=12;%最大代数pcrossover=0.90;%交配概率pmutation=0.09;%变异概率

产生初始种群population=round(rand(popsize,BitLength)); 计算适应度,返回适应度fitvalue和累积概率[Fitvalue,cumsump]=fitnessfun(population);Generation=1;whileGeneration<Generationnmax+1forj=1:2:popsizeseln=selection(population,cumsump);%选择操作scro=crossover(population,seln,pcrossover);%交叉操作scnew(j,:)=scro(1,:);scnew(j+1,:)=scro(2,:);%变异操作smnew(j,:)=mutation(scnew(j,:),pmutation);smnew(j+1,:)=mutation(scnew(j+1,:),pmutation);endpopulation=smnew[Fitvalue,cumsump]=fitnessfun(population);%记录当前代最好的适应度和平均适应度[fmax,nmax]=max(Fitvalue);fmean=mean(Fitvalue);ymax(Generation)=fmax;ymean(Generation)=fmean;%记录当前代的最佳染色体个体x=transform2to10(population(nmax,:));%自变量取值范围是[-22],需要把经过遗传运算的最佳染色体整合到[-22]区间xx=boundsbegin+x*(boundsend-boundsbegin)/(power((boundsend),BitLength)-1);xmax(Generation)=xx;Generation=Generation+1endGeneration=Generation-1;Bestpopulation=xxBesttargetfunvalue=targetfun(xx)%绘制经过遗传运算后的适应度曲线。一般地,如果进化过程中种群的平均适应度与最大适%应度在曲线上有相互趋同的形态,表示算法收敛进行得很顺利,没有出现震荡;在这种前%提下,最大适应度个体连续若干代都没有发生进化表明种群已经成熟。%给适应度函数加上一个大小合理的数以便保证种群适应值为正数Fitvalue=Fitvalue'+230;%计算选择概率fsum=sum(Fitvalue);Pperpopulation=Fitvalue/fsum;%计算累积概率cumsump(1)=Pperpopulation(1);fori=2:popsizecumsump(i)=cumsump(i-1)+Pperpopulation(i);endcumsump=cumsump';%子程序:新种群变异操作,函数名称存储为mutation.mfunctionsnnew=mutation(snew,pmutation);BitLength=size(snew,2);snnew=snew;pmm=IfCroIfMut(pmutation);%根据变异概率决定是否进行变异操作,1则是,0则否election.mfunctionseln=selection(population,cumsump);%从种群中选择两个个体fori=1:2r=rand;%产生一个随机数prand=cumsump-r;j=1;whileprand(j)<0j=j+1;endseln(i)=j;%选中个体的序号end%子程序:将2进制数转换为10进制数,函数名称存储为transform2to10.mfFunctionx=transform2to10(Population);BitLength=size(Population,2);x=Population(BitLen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论