遗传算法实验六演示文稿
%定义遗传算法参数
NIND=40;
%群体中个体数目
MAXGEN=25; %最大遗传代数
PRECI=20;
%变量的二进制位数
Hale Waihona Puke 具有性能跟踪和图像输出功能的程序代码
%代沟 GGAP=0.9; %寻优结果的初始值 trace=zeros(2, MAXGEN); %建立区域描述器 FieldD=[20;-1;2;1;0;1;1]; %生成初始种群 Chrom=crtbp(NIND, PRECI);
[Chrom ObjV]=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]);
具有性能跟踪和图像输出功能的程序代码
%最优个体的十进制转换 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('解的变化','种群均值的变化')
SelCh=recombin('xovsp', SelCh, 0.7);
%重组
SelCh=mut(SelCh);
%变异
variable=bs2rv(SelCh, FieldD);
%子代个体的十进制转换
ObjVSel=variable.*sin(10*pi*variable)+2.0; %计算子代的目标函数值
具有性能跟踪和图像输出功能的程序代码
%子代个体的十进制转换 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);
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);
程序运行追踪结果:
代序
寻优结果
自变量
函数值
1
2.0292
2
2.2104
3
2.3577
4
2.4881
3.8423 3.7819 3.8063 3.815
5
2.6401
3.8072
程序运行追踪结果
6
2.6133
7
2.8658
8
2.9400
9
2.9120
10
2.8677
11
2.6973
12
2.7963
具有性能跟踪和图像输出功能的程序代码
%代计数器 gen=0; %计算初始种群的十进制转换 variable=bs2rv(Chrom, FieldD); %计算目标函数值 ObjV=variable.*sin(10*pi*variable)+2.0;
具有性能跟踪和图像输出功能的程序代码
while gen<MAXGEN %分配适应度值 FitnV=ranking(-ObjV); %选择 SelCh=select('sus', Chrom, FitnV, GGAP); %重组 SelCh=recombin('xovsp', SelCh, 0.7); %变异 SelCh=mut(SelCh);
具有性能跟踪和图像输出功能的程序代码
%代计数器增加 gen=gen+1; %输出最优解及其序号,并在目标函数图像 %中标出,Y为最优解,I为种群的序号 [Y, I]=max(ObjV);hold on; plot(variable(I), Y, 'bo'); %遗传算法性能跟踪 trace(1, gen)=max(ObjV); %每一代最优解 trace(2, gen)=sum(ObjV)/length(ObjV); end
遗传算法实验六演示文稿
遗传算法实验六
§5.1 简单一元函数优化实例
例 1 利用遗传算法计算下面函数的最大值
f ( x) x sin(10 * x) 2.0 x [1,2]
选择二进制编码,种群中个体数目为 40,每个 种群的长度为 20,使用代沟为 0.9,最大遗传代数 为 25
程序简化代码如下:
%初始种群的十进制转换
ObjV=variable.*sin(10*pi*variable)+2.0; %计算初始种群目标函数值
while gen<MAXGEN+1
FitnV=ranking(-ObjV);
%分配适应度值
SelCh=select('sus', Chrom, FitnV, GGAP); %选择
程序运行追踪结果
21
3.0947
22
3.1525
23
2.9147
24
2.9144
25
3.0259
3.8489 3.8496 3.8496 3.8493 3.8493
经过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]——给出变量 范围
13
2.7317
3.7555 3.8073 3.8043 3.8321 3.8321 3.8320 3.8326 3.8318
程序运行追踪结果
14
2.7739
15
2.6521
16
2.7844
17
2.5158
18
2.7768
19
2.7907
20
2.8080
3.8318 3.8274 3.8274 3.8274 3.8285 3.8277 3.8379