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

下载本文档

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

文档简介

1、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; %计算初始种群目标函数值 while genMAXGEN

2、+1 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; %计算子代的目标函数值 Chrom ObjV=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到种群 Y=max(O

3、bjV) %当前种群最优解 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, PREC

4、I);,具有性能跟踪和图像输出功能的程序代码,%代计数器 gen=0; %计算初始种群的十进制转换 variable=bs2rv(Chrom, FieldD); %计算目标函数值 ObjV=variable.*sin(10*pi*variable)+2.0;,具有性能跟踪和图像输出功能的程序代码,while genMAXGEN %分配适应度值 FitnV=ranking(-ObjV); %选择 SelCh=select(sus, Chrom, FitnV, GGAP); %重组 SelCh=recombin(xovsp, SelCh, 0.7); %变异 SelCh=mut(SelCh);,具

5、有性能跟踪和图像输出功能的程序代码,%子代个体的十进制转换 variable=bs2rv(SelCh, FieldD); %计算子代的目标函数值 ObjVSel=variable.*sin(10*pi*variable)+2.0; %重插入子代的新种群 Chrom ObjV=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); variable=bs2rv(Chrom, FieldD);,具有性能跟踪和图像输出功能的程序代码,%代计数器增加 gen=gen+1; %输出最优解及其序号,并在目标函数图像 %中标出,Y为最优解,I为种群的序号 Y, I=max(Obj

6、V);hold on; plot(variable(I), Y, bo); %遗传算法性能跟踪 trace(1, gen)=max(ObjV); %每一代最优解 trace(2, gen)=sum(ObjV)/length(ObjV); end,具有性能跟踪和图像输出功能的程序代码,%最优个体的十进制转换 variable=bs2rv(Chrom, FieldD); hold on, grid on; plot(variable,ObjV,b*); figure(2); plot(trace(1,:); hold on; plot(trace(2,:),-.);grid off legend(

7、解的变化,种群均值的变化),具有性能跟踪和图像输出功能的程序代码,程序运行追踪结果:,程序运行追踪结果,程序运行追踪结果,程序运行追踪结果,经过25次迭代后最优解及种群均值的变化如下图:,例题中用到的一些绘图函数说明,1、绘制函数图像函数fplot 调用格式: FPLOT(FUN,LIMS) FPLOT(FUN,LIMS,TOL) FPLOT(FUN,LIMS,N) FPLOT(FUN,LIMS,LineSpec) 参数说明: LIMS = XMIN XMAX或 LIMS = XMIN XMAX YMIN YMAX给出变量范围,TOL可接受的相对误差,默认值为2e-3, 即 0.2% N 限定

8、绘制的函数至少有N+1个点,默认值为1. 最大步长限定为 (1/N)*(XMAX-XMIN). LineSpec指定线型 FUN要绘制图像的函数 例如: fplot(variable.*sin(10*pi*variable)+2.0,-1,2);,2、定义零矩阵ZEROS ZEROS(N)产生N阶零矩阵 ZEROS(M,N) 或 ZEROS(M,N) )产生MN阶零矩阵; ZEROS(M,N,P,.) or ZEROS(M N P .) )产生MNP .阶零矩阵; ZEROS(SIZE(A) )产生与矩阵A一样大小的零矩阵。 3、求最大值函数MAX MAX(X) X为向量时,返回向量X的最大元

9、素;X为矩阵时,返回一个行向量,包含矩阵X的每列的最大元素.,4、绘图函数PLOT PLOT(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为一字符串,指定绘图方式,线型和颜色,数据点标记字符,5、建立图形窗口函数FIGURE FIGURE(H) 使句柄为 H的图形窗口为

10、当前图形;如果图形窗口不存在,则建立一个句柄为 H的图形窗口。 GCF返回当前图形窗口的句柄。 6、设置网格线GRID GRID ON 给坐标系添加网格线 GRID OFF 去除坐标系中的网格线,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,

11、NVAR*PRECI); %创建初始种群 gen=0; %代计数器 ObjV=objfun1(bs2rv(Chrom, FieldD); %计算初始种群个体的目标函数值 while genMAXGEN %迭代 FitnV=ranking(ObjV); %分配适应度值 SelCh=select(sus, Chrom, FitnV, GGAP); %选择 SelCh=recombin(xovsp, SelCh, 0.7); %重组 SelCh=mut(SelCh); %变异 ObjVSel=objfun1(bs2rv(SelCh, FieldD); %计算子代目标函数值 Chrom ObjV=re

12、ins(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); 参数说明 M

13、atIn输入矩阵 MatOut输出矩阵 REPN 一个二维向量,其中REPN(1)指定垂直方向复制次数;REPN(2)指定水平方向复制次数,程序中的函数说明,例如: MatIn = 1 2 3 MatIn = 1 2 3 REPN = 1 2 REPN = 1 2 MatOut = rep(MatIn,REPN) MatOut = 1 2 3 1 2 3,程序中的函数说明,例如: MatIn = 1 2 3 MatIn = 1 2 3 REPN = 2 1 REPN = 2 1 MatOut = rep(MatIn,REPN) MatOut = 1 2 3 1 2 3,程序中的函数说明,例如:

14、 MatIn = 1 2 3 MatIn = 1 2 3 REPN = 3 2 REPN = 3 2 MatOut = rep(MatIn,REPN) MatOut = 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3,程序中的函数说明,具有性能跟的程序代码如下: %定义遗传算法参数 NIND=40; %个体数目 MAXGEN=500; %最大遗传代数 NVAR=20; %变量的维数 PRECI=20; %编码长度 GGAP=0.9; %代沟 trace=zeros(MAXGEN, 2); %建立区域描述器 FieldD=rep(PRECI,1,NVAR);rep(-51

15、2;512, 1, NVAR);rep(1;0;1;1,1,NVAR); %创建初始种群 Chrom=crtbp(NIND, NVAR*PRECI); %代计数器 gen=0; %计算初始种群个体的目标函数值 ObjV=objfun1(bs2rv(Chrom, FieldD);,while genMAXGEN %迭代 FitnV=ranking(ObjV); %分配适应度值 SelCh=select(sus, Chrom, FitnV, GGAP); %选择 SelCh=recombin(xovsp, SelCh, 0.7); %重组 SelCh=mut(SelCh); %变异 %计算子代目标

16、函数值 ObjVSel=objfun1(bs2rv(SelCh, FieldD); %重插入 Chrom ObjV=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);hold on; plot(trace(:,2),-.);grid; legend( 种群均值的变化,解的变化) %输出最优解及其对应的20个自变量的十进制值,Y为最优解, %

17、 I为种群的序号 Y, I=min(ObjV) X=bs2rv(Chrom, FieldD); X(I,:),function ObjVal = objfun1(Chrom,switch1); %目标函数 OBJFUN1.M %调用格式: ObjVal = objfun1(Chrom,switch1) %输入参数: % Chrom- 当前种群 % switch1- 如果Chrom = 则switch1 = 1 %并返回边界;如果switch1 = 2 则返回标题; %如果switch1 = 3 则返回全局最小值 % 输出变量: % ObjVal- 各个体的目标函数值,目标函数,if Nind

18、= 0 if switch1 = 2 ObjVal = DE JONG function 1- int2str(Dim); elseif switch1 = 3 ObjVal = 0; else ObjVal = 100*-5.12; 5.12; ObjVal = ObjVal(1:2,ones(Dim,1); end elseif Nvar = Dim ObjVal = sum(Chrom .* Chrom); else error(size of matrix Chrom is not correct for function evaluation); end,程序运行所求得的最优解为:y

19、=1.0320,5.3多元多峰函数优化实例,Shubert函数的图像为,目标函数,function z=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

20、= 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; %变量

21、数目 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);,while genMAXGEN FitnV=ranking(

22、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); Chrom ObjV=reins(Chrom,SelCh,1,1, ObjV,ObjVSel); gen=gen+1;,Y, I=min(ObjV); %输出每一次的最优解及其对应的自变量值 Y,bs2rv(Chrom(I,:),FieldD) %遗传算法性能跟踪 trace(gen,1

23、)=min(ObjV); trace(gen,2)=sum(ObjV)/length(ObjV); %迭代数为50时画出目标函数值分布图 if(gen=50) figure(2); plot(ObjV);hold on; plot(ObjV,b*);grid; end end,figure(3);clf; plot(trace(:,1);hold on; plot(trace(:,2),-.);grid legend(解的变化,种群均值的变化),5.4 在多目标优化中的应用,5.4.1多目标优化的概念,5.4.1多目标优化的概念,5.4.1多目标优化的概念,5.4.1多目标优化的概念,5.4.

24、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(PREC

25、I,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; while genMAXGEN 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,:),

26、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

27、(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);hold on;plot(trace1(:,2),-.); plot(trace1(:,1),.);plot(trace1(:,2),.);grid on; legend(解的变化,种群均值的变化) xlabel(迭代次数);ylabel(第一目标函数值); figure(2);clf; plot(trace2(:,1);hold on; plot(trace2(:,2),-.); plot(trace2(:,1),.); plot(trace2(:,2),.);grid;,5.4.2 多目标优化问题的遗传算法,legend(解的变化,种群均值的变化) xlabel(迭代次数);ylabel(第二目标函数值); figure(3

温馨提示

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

评论

0/150

提交评论