遗传算法实验六_第1页
遗传算法实验六_第2页
遗传算法实验六_第3页
遗传算法实验六_第4页
遗传算法实验六_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

Matlab遗传算法工具箱应用举例遗传算法实验六§5.1简单一元函数优化实例遗传算法实验六程序简化代码如下:NIND=40;%定义个体数目MAXGEN=25;%定义最大遗传代数PRECI=20;%编码长度GGAP=0.9;%代沟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;%计算初始种群目标函数值whilegen<MAXGEN+1FitnV=ranking(-ObjV);%分配适应度值

SelCh=select('sus',Chrom,FitnV,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);%重插入子代到种群

Y=max(ObjV)%当前种群最优解

gen=gen+1;%代计数器增加end遗传算法实验六figure(1);%画出函数曲线fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);%定义遗传算法参数NIND=40;%群体中个体数目MAXGEN=25;%最大遗传代数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;具有性能跟踪和图像输出功能的程序代码遗传算法实验六whilegen<MAXGEN%分配适应度值

FitnV=ranking(-ObjV);%选择

SelCh=select('sus',Chrom,FitnV,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为种群的序号

[Y,I]=max(ObjV);holdon;plot(variable(I),Y,'bo'); %遗传算法性能跟踪

trace(1,gen)=max(ObjV);%每一代最优解

trace(2,gen)=sum(ObjV)/length(ObjV);end具有性能跟踪和图像输出功能的程序代码遗传算法实验六%最优个体的十进制转换variable=bs2rv(Chrom,FieldD);holdon,gridon;plot(variable,ObjV,'b*');figure(2);plot(trace(1,:));holdon;plot(trace(2,:),'-.');gridofflegend('解的变化','种群均值的变化')具有性能跟踪和图像输出功能的程序代码遗传算法实验六程序运行追踪结果:代序寻优结果自变量函数值12.02923.842322.21043.781932.35773.806342.48813.81552.64013.8072遗传算法实验六程序运行追踪结果62.61333.755572.86583.807382.94003.804392.91203.8321102.86773.8321112.69733.8320122.79633.8326132.73173.8318遗传算法实验六程序运行追踪结果142.77393.8318152.65213.8274162.78443.8274172.51583.8274182.77683.8285192.79073.8277202.80803.8379遗传算法实验六程序运行追踪结果213.09473.8489223.15253.8496232.91473.8496242.91443.8493253.02593.8493经过25次迭代后最优解及种群均值的变化如下图:

遗传算法实验六遗传算法实验六遗传算法实验六例题中用到的一些绘图函数说明1、绘制函数图像函数—fplot

调用格式:

FPLOT(FUN,LIMS)FPLOT(FUN,LIMS,TOL)FPLOT(FUN,LIMS,N)FPLOT(FUN,LIMS,'LineSpec')

参数说明:

LIMS=[XMINXMAX]或

LIMS=[XMINXMAXYMINYMAX]——给出变量范围遗传算法实验六TOL—可接受的相对误差,默认值为2e-3,即0.2%N—限定绘制的函数至少有N+1个点,默认值为1.

最大步长限定为(1/N)*(XMAX-XMIN).LineSpec—指定线型FUN—要绘制图像的函数例如:

fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);遗传算法实验六2、定义零矩阵—ZEROSZEROS(N)—产生N阶零矩阵

ZEROS(M,N)或ZEROS([M,N]))—产生M×N阶零矩阵;

ZEROS(M,N,P,...)orZEROS([MNP...]))—产生M×N×P×...阶零矩阵;ZEROS(SIZE(A)))—产生与矩阵A一样大小的零矩阵。3、求最大值函数—MAXMAX(X)—X为向量时,返回向量X的最大元素;X为矩阵时,返回一个行向量,包含矩阵X的每列的最大元素.遗传算法实验六4、绘图函数——PLOTPLOT(X,Y)—绘制以向量X为横坐标,向量Y为纵坐标的线图.如果X或Y是一个矩阵,则绘制多线图;如果X是一个标量,而Y是一个向量,则绘声绘色制的是length(Y)个不连续点。

PLOT(Y)—以矩阵Y的行标为横坐标,每一列为纵坐标绘制图形。如果Y是一个复矩阵,PLOT(Y)相当于PLOT(real(Y),imag(Y)).PLOT(X,Y,S)—指定线型绘图,S为一字符串,指定绘图方式遗传算法实验六代表字符颜色代表符号线型C青色-实线M洋红--虚线Y黄色:点连线R红色-.点划线G绿色none无线B兰色W白色k黑色线型和颜色遗传算法实验六标记符绘图方式标记符绘图方式+十字号^反勾号o小圆圈v勾号*星号>大于号.小黑点<小于号X叉号pentagram五角星Square小正方形Hexagram六角星diamond菱形符号none无标记数据点标记字符遗传算法实验六5、建立图形窗口函数—FIGUREFIGURE(H)—使句柄为H的图形窗口为当前图形;如果图形窗口不存在,则建立一个句柄为H的图形窗口。

GCF—返回当前图形窗口的句柄。6、设置网格线—GRIDGRIDON—给坐标系添加网格线

GRIDOFF—去除坐标系中的网格线遗传算法实验六§5.2多元单峰函数优化实例遗传算法实验六简化程序代码如下:NIND=40; %个体数目MAXGEN=500; %最大遗传代数NVAR=20; %变量的维数PRECI=20; %编码长度GGAP=0.9; %代沟FieldD=[rep([PRECI],[1,NVAR]);rep([-512;512],…[1,NVAR]);rep([1;0;1;1],[1,NVAR])];%建立区域描述器Chrom=crtbp(NIND,NVAR*PRECI);%创建初始种群gen=0; %代计数器ObjV=objfun1(bs2rv(Chrom,FieldD));%计算初始种群个体的目标函数值whilegen<MAXGEN %迭代

FitnV=ranking(ObjV); %分配适应度值

SelCh=select('sus',Chrom,FitnV,GGAP);%选择

SelCh=recombin('xovsp',SelCh,0.7); %重组

SelCh=mut(SelCh); %变异

ObjVSel=objfun1(bs2rv(SelCh,FieldD)); %计算子代目标函数值

[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入

gen=gen+1; %代计数器增加

trace(gen,1)=min(ObjV); %遗传算法性能跟踪

trace(gen,2)=sum(ObjV)/length(ObjV);end[Y,I]=min(ObjV)X=bs2rv(Chrom,FieldD);X(I,:)遗传算法实验六

前5个语句进行的初始化工作,包括确定群体中个体数目,最大进化代数,编码长度,代沟,建立区域描述器等。遗传算法实验六1、矩阵复制函数REP功能用来复制一个矩阵调用格式:

MatOut=rep(MatIn,REPN);参数说明

MatIn—输入矩阵

MatOut—输出矩阵

REPN—一个二维向量,其中REPN(1)指定垂直方向复制次数;REPN(2)指定水平方向复制次数程序中的函数说明遗传算法实验六例如:>>MatIn=[123]MatIn=123>>REPN=[12]REPN=12>>MatOut=rep(MatIn,REPN)MatOut=123123程序中的函数说明遗传算法实验六例如:>>MatIn=[123]MatIn=123>>REPN=[21]REPN=21>>MatOut=rep(MatIn,REPN)MatOut=123123程序中的函数说明遗传算法实验六例如:

>>MatIn=[123]MatIn=123>>REPN=[32]REPN=32>>MatOut=rep(MatIn,REPN)MatOut=123123123123123123程序中的函数说明遗传算法实验六具有性能跟的程序代码如下:%定义遗传算法参数NIND=40; %个体数目MAXGEN=500;%最大遗传代数NVAR=20;%变量的维数PRECI=20; %编码长度GGAP=0.9;%代沟trace=zeros(MAXGEN,2);%建立区域描述器FieldD=[rep([PRECI],[1,NVAR]);rep([-512;512],…[1,NVAR]);rep([1;0;1;1],[1,NVAR])];%创建初始种群Chrom=crtbp(NIND,NVAR*PRECI);%代计数器gen=0; %计算初始种群个体的目标函数值ObjV=objfun1(bs2rv(Chrom,FieldD));遗传算法实验六whilegen<MAXGEN %迭代

FitnV=ranking(ObjV); %分配适应度值

SelCh=select('sus',Chrom,FitnV,GGAP); %选择

SelCh=recombin('xovsp',SelCh,0.7); %重组

SelCh=mut(SelCh); %变异

%计算子代目标函数值

ObjVSel=objfun1(bs2rv(SelCh,FieldD));%重插入

[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%代计数器增加

gen=gen+1;%遗传算法性能跟踪

trace(gen,1)=min(ObjV);trace(gen,2)=sum(ObjV)/length(ObjV);end遗传算法实验六plot(trace(:,1));holdon;plot(trace(:,2),'-.');grid;legend('种群均值的变化','解的变化')%输出最优解及其对应的20个自变量的十进制值,Y为最优解,%

I为种群的序号[Y,I]=min(ObjV)X=bs2rv(Chrom,FieldD);X(I,:)遗传算法实验六functionObjVal=objfun1(Chrom,switch1);%目标函数OBJFUN1.M%调用格式:ObjVal=objfun1(Chrom,switch1)%输入参数:%Chrom-当前种群%switch1-如果Chrom==[]则switch1==1%并返回边界;如果switch1==2则返回标题;%如果switch1==3则返回全局最小值%输出变量:%ObjVal-各个体的目标函数值目标函数遗传算法实验六ifNind==0ifswitch1==2ObjVal=['DEJONGfunction1-'int2str(Dim)];elseifswitch1==3ObjVal=0;elseObjVal=100*[-5.12;5.12];ObjVal=ObjVal(1:2,ones(Dim,1));endelseifNvar==DimObjVal=sum((Chrom.*Chrom)')';elseerror('sizeofmatrixChromisnotcorrectforfunctionevaluation');end遗传算法实验六遗传算法实验六程序运行所求得的最优解为:y=1.0320遗传算法实验六§5.3多元多峰函数优化实例遗传算法实验六Shubert函数的图像为遗传算法实验六目标函数functionz=shubert(x,y)z=((1*cos((1+1)*x+1))+(2*cos((2+1)*x+2))+…(3*cos((3+1)*x+3))+(4*cos((4+1)*x+4))+…(5*cos((5+1)*x+5))).*((1*cos((1+1)*y+1))+…(2*cos((2+1)*y+2))+(3*cos((3+1)*y+3))+…(4*cos((4+1)*y+4))+(5*cos((5+1)*y+5)));遗传算法实验六1、将绘图区域划分为矩形网格—MESHGRID功能:将向量x,y指定的区域转化为矩形X,Y调用格式:

[X,Y]=MESHGRID(x,y)2、3维图形输出函数

SURF(X,Y,Z)—着色表面图

MESH(X,Y,Z)—网线图例如:

[X,Y]=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.^2-Y.^2);surf(X,Y,Z);MESH(X,Y,Z);程序中的函数说明遗传算法实验六遗传算法实验六遗传算法实验六程序代码如下:[x1,x2]=meshgrid(-10:.1:10);%画出Shubert函数图像figure(1);mesh(x1,x2,shubert(x1,x2));%定义遗传算法参数NIND=40; %个体数目MAXGEN=50;%最大遗传代数NVAR=2; %变量数目PRECI=25; %变量的二进制位数GGAP=0.9; %代沟遗传算法实验六%建立区域描述器FieldD=[rep([PRECI],[1,NVAR]);…rep([-10;10],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];%创建初始种群Chrom=crtbp(NIND,NVAR*PRECI);gen=0;%遗传算法性能跟踪初始值trace=zeros(MAXGEN,2);%初始种群十进制转换x=bs2rv(Chrom,FieldD); %初始种群的目标函数值ObjV=Shubert(x(:,1),x(:,2)); 遗传算法实验六whilegen<MAXGENFitnV=ranking(ObjV);%分配适应度值

SelCh=select('sus',Chrom,FitnV,GGAP);SelCh=recombin('xovsp',SelCh,0.7);SelCh=mut(SelCh);x=bs2rv(SelCh,FieldD);ObjVSel=Shubert(x(:,1),x(:,2));[ChromObjV]=reins(Chrom,SelCh,1,1,…ObjV,ObjVSel);gen=gen+1;遗传算法实验六[Y,I]=min(ObjV);%输出每一次的最优解及其对应的自变量值

Y,bs2rv(Chrom(I,:),FieldD)%遗传算法性能跟踪

trace(gen,1)=min(ObjV);trace(gen,2)=sum(ObjV)/length(ObjV);%迭代数为50时画出目标函数值分布图

if(gen==50)figure(2);plot(ObjV);holdon;plot(ObjV,'b*');grid;endend遗传算法实验六figure(3);clf;plot(trace(:,1));holdon;plot(trace(:,2),'-.');gridlegend('解的变化','种群均值的变化')遗传算法实验六遗传算法实验六遗传算法实验六§5.4在多目标优化中的应用遗传算法实验六5.4.1多目标优化的概念遗传算法实验六5.4.1多目标优化的概念遗传算法实验六5.4.1多目标优化的概念遗传算法实验六5.4.1多目标优化的概念遗传算法实验六5.4.2多目标优化问题的遗传算法遗传算法实验六5.4.2多目标优化问题的遗传算法遗传算法实验六5.4.2多目标优化问题的遗传算法遗传算法实验六5.4.2多目标优化问题的遗传算法遗传算法实验六5.4.2多目标优化问题的遗传算法遗传算法实验六5.4.2多目标优化问题的遗传算法遗传算法实验六5.4.2多目标优化问题的遗传算法遗传算法实验六5.4.3应用举例遗传算法实验六5.4.2多目标优化问题的遗传算法NIND=100;%个体数目MAXGEN=50;%最大遗传代数NVAR=2;%变量个数PRECI=20;%变量的二进制位数GGAP=0.9;%代沟trace1=[];trace2=[];trace3=[];%性能跟踪%建立区域描述器FieldD=[rep([PRECI],[1,NVAR]);[1,1;4,2];…rep([1;0;1;1],[1,NVAR])];遗传算法实验六5.4.2多目标优化问题的遗传算法Chrom=crtbp(NIND,NVAR*PRECI);%初始种群v=bs2rv(Chrom,FieldD);%初始种群十进制转换gen=1;whilegen<MAXGEN[NIND,N]=size(Chrom);M=fix(NIND/2);ObjV1=f1(v(1:M,:));%分组后第一目标函数值

FitnV1=ranking(ObjV1);%分配适应度值遗传算法实验六5.4.2多目标优化问题的遗传算法SelCh1=select('sus',Chrom(1:M,:),FitnV1,GGAP);ObjV2=f2(v(M+1:NIND,:));%分组后第二目标函数值

FitnV2=ranking(ObjV2);SelCh2=select('sus',Chrom((M+1):NIND,:),…FitnV2,GGAP);%选择

SelCh=[SelCh1;SelCh2];%合并

SelCh=recombin('xovsp',SelCh,0.7);%重组

Chrom=mut(SelCh);%变异

v=bs2rv(SelCh,FieldD);遗传算法实验六5.4.2多目标优化问题的遗传算法

trace1(gen,1)=min(f1(v));trace1(gen,2)=sum(f1(v))/length(f1(v));trace2(gen,1)=min(f2(v));trace2(gen,2)=sum(f2(v))/length(f2(v));trace3(gen,1)=min(f1(v)+f2(v));trace3(gen,2)=sum(f1(v))/length(f1(v))+…sum(f2(v))/length(f2(v));gen=gen+1;end遗传算法实验六5.4.2多目标优化问题的遗传算法figure(1);clf;plot(trace1(:,1));holdon;plot(trace1(:,2),'-.');plot(trace1(:,1),'.');plot(trace1(:,2),'.');gridon;legend('解的变化','种群均值的变化')xlabel('迭代次数');ylabel('第一目标函数值');figure(2);clf;plot(trace2(:,1));holdon;plot(trace2(:,2),'-.');plot(trace2(:,1),'.');plot(trace2(:,2),'.');grid;遗传算法实验六5.4.2多目标优化问题的遗传算法legend('解的变化','种群均值的变化')xlabel('迭代次数');ylabel('第二目标函数值');figure(3);clf;plot(trace3(:,1)

温馨提示

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

评论

0/150

提交评论