欢迎来到天天文库
浏览记录
ID:58663380
大小:179.00 KB
页数:6页
时间:2020-10-15
《实验--利用遗传算法进行函数优化.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验利用遗传算法进行函数优化一、实验目的1了解及掌握遗传算法的基本操作2利用遗传算法解决实际问题3熟悉MATLAB编程语言二、实验内容编写一个基于遗传算法的函数寻优程序,完成如下任务:1、在区间[-1,2]上搜索函数f1=x*sin(10πx)+2的最大值。2、搜索函数f2=x12+x22的最小值(其中,-5.122、概率的取值范围为[0,1]。输出数据包括每代最优个体码串、译码值、目标函数值以及用图形显示逐渐逼近最优解的过程。三、实验原理遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。四、程序与运行结果第一题:figure(1);fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);%画出函数曲线%定义遗传算法参数NIND=40;%个体数目MAXGEN=25;%最3、大遗传代数PRECI=20;%变量的二进制位数GGAP=0.9;%代沟trace=zeros(2,MAXGEN);%寻优结果的初始值FieldD=[20;-1;2;1;0;1;1];%区域描述器Chrom=crtbp(NIND,PRECI);%初始种群gen=0;%代计数器variable=bs2rv(Chrom,FieldD);%计算初始种群的十进制转换ObjV=variable.*sin(10*pi*variable)+2.0;%计算目标函数值whilegen4、,GGAP);%选择SelCh=recombin('xovsp',SelCh,0.7);%重组SelCh=mut(SelCh);%变异variable=bs2rv(SelCh,FieldD);%子代个体的十进制转换ObjVSel=variable.*sin(10*pi*variable)+2.0;%计算子代的目标函数值[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重新插入子代的新种群variable=bs2rv(Chrom,FieldD);gen=gen+1;%代计数器增加%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的5、序号[Y,I]=max(ObjV);holdon;plot(variable(I),Y,'bo');trace(1,gen)=max(ObjV);%遗传算法性能跟踪trace(2,gen)=sum(ObjV)/length(ObjV);endvariable=bs2rv(Chrom,FieldD);%最优个体的十进制转换holdon,grid;plot(variable,ObjV,'b*');figure(2);holdon;plot(trace(2,:),'-.');gridlegend('解的变化','种群均值的变化')最后寻优结果为:x=1.8505,f(x)=3.8503第二题:fu6、nctionresult=zuoye23(Size,umin,umax,pc,pm,e)clc;clear;tic;Size=80;G=100;CodeL=10;umax=5.12;umin=-5.12;E=round(rand(Size,3*CodeL));fork=1:1:Gtime(k)=k;fors=1:1:Sizem=E(s,:);y1=0;y2=0;m1=m(1:1:CodeL);fori=1:1:CodeLy1=y1+m1(i)*2^(i-1);endx1=(umax-umin)*y1/1023+umin;m2=m(CodeL+1:1:2*CodeL);fori=1:1:Cod7、eLy2=y2+m2(i)*2^(i-1);endx2=(umax-umin)*y2/1023+umin;F(s)=x1^2+x2^2;endBestJ(k)=min(F);fi=F;%适应度函数[Oderfi,Indexfi]=sort(fi);%按照适应度大小排序Bestfi=Oderfi(1);%Oderfi中最后一个即是最大的适应度BestS=E(Indexfi(1),:);%记录每一代中最优个体的0
2、概率的取值范围为[0,1]。输出数据包括每代最优个体码串、译码值、目标函数值以及用图形显示逐渐逼近最优解的过程。三、实验原理遗传算法模拟自然选择和自然遗传过程中发生的繁殖、交叉和基因突变现象,在每次迭代中都保留一组候选解,并按某种指标从解群中选取较优的个体,利用遗传算子(选择、交叉和变异)对这些个体进行组合,产生新一代的候选解群,重复此过程,直到满足某种收敛指标为止。四、程序与运行结果第一题:figure(1);fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);%画出函数曲线%定义遗传算法参数NIND=40;%个体数目MAXGEN=25;%最
3、大遗传代数PRECI=20;%变量的二进制位数GGAP=0.9;%代沟trace=zeros(2,MAXGEN);%寻优结果的初始值FieldD=[20;-1;2;1;0;1;1];%区域描述器Chrom=crtbp(NIND,PRECI);%初始种群gen=0;%代计数器variable=bs2rv(Chrom,FieldD);%计算初始种群的十进制转换ObjV=variable.*sin(10*pi*variable)+2.0;%计算目标函数值whilegen4、,GGAP);%选择SelCh=recombin('xovsp',SelCh,0.7);%重组SelCh=mut(SelCh);%变异variable=bs2rv(SelCh,FieldD);%子代个体的十进制转换ObjVSel=variable.*sin(10*pi*variable)+2.0;%计算子代的目标函数值[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重新插入子代的新种群variable=bs2rv(Chrom,FieldD);gen=gen+1;%代计数器增加%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的5、序号[Y,I]=max(ObjV);holdon;plot(variable(I),Y,'bo');trace(1,gen)=max(ObjV);%遗传算法性能跟踪trace(2,gen)=sum(ObjV)/length(ObjV);endvariable=bs2rv(Chrom,FieldD);%最优个体的十进制转换holdon,grid;plot(variable,ObjV,'b*');figure(2);holdon;plot(trace(2,:),'-.');gridlegend('解的变化','种群均值的变化')最后寻优结果为:x=1.8505,f(x)=3.8503第二题:fu6、nctionresult=zuoye23(Size,umin,umax,pc,pm,e)clc;clear;tic;Size=80;G=100;CodeL=10;umax=5.12;umin=-5.12;E=round(rand(Size,3*CodeL));fork=1:1:Gtime(k)=k;fors=1:1:Sizem=E(s,:);y1=0;y2=0;m1=m(1:1:CodeL);fori=1:1:CodeLy1=y1+m1(i)*2^(i-1);endx1=(umax-umin)*y1/1023+umin;m2=m(CodeL+1:1:2*CodeL);fori=1:1:Cod7、eLy2=y2+m2(i)*2^(i-1);endx2=(umax-umin)*y2/1023+umin;F(s)=x1^2+x2^2;endBestJ(k)=min(F);fi=F;%适应度函数[Oderfi,Indexfi]=sort(fi);%按照适应度大小排序Bestfi=Oderfi(1);%Oderfi中最后一个即是最大的适应度BestS=E(Indexfi(1),:);%记录每一代中最优个体的0
4、,GGAP);%选择SelCh=recombin('xovsp',SelCh,0.7);%重组SelCh=mut(SelCh);%变异variable=bs2rv(SelCh,FieldD);%子代个体的十进制转换ObjVSel=variable.*sin(10*pi*variable)+2.0;%计算子代的目标函数值[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重新插入子代的新种群variable=bs2rv(Chrom,FieldD);gen=gen+1;%代计数器增加%输出最优解及其序号,并在目标函数图像中标出,Y为最优解,I为种群的
5、序号[Y,I]=max(ObjV);holdon;plot(variable(I),Y,'bo');trace(1,gen)=max(ObjV);%遗传算法性能跟踪trace(2,gen)=sum(ObjV)/length(ObjV);endvariable=bs2rv(Chrom,FieldD);%最优个体的十进制转换holdon,grid;plot(variable,ObjV,'b*');figure(2);holdon;plot(trace(2,:),'-.');gridlegend('解的变化','种群均值的变化')最后寻优结果为:x=1.8505,f(x)=3.8503第二题:fu
6、nctionresult=zuoye23(Size,umin,umax,pc,pm,e)clc;clear;tic;Size=80;G=100;CodeL=10;umax=5.12;umin=-5.12;E=round(rand(Size,3*CodeL));fork=1:1:Gtime(k)=k;fors=1:1:Sizem=E(s,:);y1=0;y2=0;m1=m(1:1:CodeL);fori=1:1:CodeLy1=y1+m1(i)*2^(i-1);endx1=(umax-umin)*y1/1023+umin;m2=m(CodeL+1:1:2*CodeL);fori=1:1:Cod
7、eLy2=y2+m2(i)*2^(i-1);endx2=(umax-umin)*y2/1023+umin;F(s)=x1^2+x2^2;endBestJ(k)=min(F);fi=F;%适应度函数[Oderfi,Indexfi]=sort(fi);%按照适应度大小排序Bestfi=Oderfi(1);%Oderfi中最后一个即是最大的适应度BestS=E(Indexfi(1),:);%记录每一代中最优个体的0
此文档下载收益归作者所有