欢迎来到天天文库
浏览记录
ID:9099360
大小:20.85 KB
页数:4页
时间:2018-04-17
《遗传算法简单一元函数优化实例》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1.遗传算法简单一元函数优化实例利用遗传算法计算最大值f(x)=xsin(10*pi*x)+2, xin[-1,2]选择二进制编码,种群中个体数目为40,每个种群的长度为20,使用代沟为0.9,最大遗传代数为25。下面为一元函数优化问题的MATLAB代码figure(1);fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲线%定义遗传算法参数NIND=40; %个体数目(Numberofindividuals)MAXGEN=25; %最大遗传代数(Maximu
2、mnumberofgenerations)PRECI=20; %变量的二进制位数(Precisionofvariables)GGAP=0.9; %代沟(Generationgap)trace=zeros(2,MAXGEN); %寻优结果的初始值FieldD=[20;-1;2;1;0;1;1]; %区域描述器(Buildfielddescriptor)Chrom=crtbp(NIND,PRECI); %初始
3、种群gen=0; %代计数器variable=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换ObjV=variable.*sin(10*pi*variable)+2.0; %计算目标函数值whilegen4、elCh=select('sus',Chrom,FitnV,GGAP); %选择 SelCh=recombin('xovsp',SelCh,0.7); %重组 SelCh=mut(SelCh); %变异 variable=bs2rv(SelCh,FieldD); %子代个体的十进制转换 ObjVSel=variable.*sin(10*pi*variable5、)+2.0; %计算子代的目标函数值 [ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代的新种群 variable=bs2rv(Chrom,FieldD); gen=gen+1; %代计数器增加 %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号 [Y,I]=max(ObjV);holdon; plot(variable(I),Y,'bo');6、 trace(1,gen)=max(ObjV); %遗传算法性能跟踪 trace(2,gen)=sum(ObjV)/length(ObjV);endvariable=bs2rv(Chrom,FieldD); %最优个体的十进制转换holdon,grid;plot(variable,ObjV,'b*');figure(2);plot(trace(1,:));holdon;plot(trace(2,:),'-.');gridlegend('7、解的变化','种群均值的变化')基于排序的适应度分配计算由程序段FitnV=ranking(-ObjV)实现,这里的评定算法假设目标函数是最小化的,所以ObjV前加了个负号,使目标函数最大化,适应度值结果由向量FitnV返回。2.matlab遗传算法工具箱函数及实例讲解核心函数:(1)function[pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数【输出参数】 pop--生成的初始种群【输入参数】 num--种群中的个体数目 bounds--代表变量的上下界的矩8、阵 eevalFN--适应度函数 eevalOps--传递
4、elCh=select('sus',Chrom,FitnV,GGAP); %选择 SelCh=recombin('xovsp',SelCh,0.7); %重组 SelCh=mut(SelCh); %变异 variable=bs2rv(SelCh,FieldD); %子代个体的十进制转换 ObjVSel=variable.*sin(10*pi*variable
5、)+2.0; %计算子代的目标函数值 [ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代的新种群 variable=bs2rv(Chrom,FieldD); gen=gen+1; %代计数器增加 %输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的序号 [Y,I]=max(ObjV);holdon; plot(variable(I),Y,'bo');
6、 trace(1,gen)=max(ObjV); %遗传算法性能跟踪 trace(2,gen)=sum(ObjV)/length(ObjV);endvariable=bs2rv(Chrom,FieldD); %最优个体的十进制转换holdon,grid;plot(variable,ObjV,'b*');figure(2);plot(trace(1,:));holdon;plot(trace(2,:),'-.');gridlegend('
7、解的变化','种群均值的变化')基于排序的适应度分配计算由程序段FitnV=ranking(-ObjV)实现,这里的评定算法假设目标函数是最小化的,所以ObjV前加了个负号,使目标函数最大化,适应度值结果由向量FitnV返回。2.matlab遗传算法工具箱函数及实例讲解核心函数:(1)function[pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数【输出参数】 pop--生成的初始种群【输入参数】 num--种群中的个体数目 bounds--代表变量的上下界的矩
8、阵 eevalFN--适应度函数 eevalOps--传递
此文档下载收益归作者所有