- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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);
程序运行追踪结果
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]——给出变量 范围
程序运行追踪结果:
代序
寻优结果
自变量
函数值
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
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
具有性能跟踪和图像输出功能的程序代码
%子代个体的十进制转换 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);
遗传算法实验六演示文稿
遗传算法实验六
§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); %选择
[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]);
%定义遗传算法参数
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=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
具有性能跟踪和图像输出功能的程序代码
%代计数器 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);
具有性能跟踪和图像输出功能的程序代码
%最优个体的十进制转换 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);
Baidu Nhomakorabea
%变异
variable=bs2rv(SelCh, FieldD);
%子代个体的十进制转换
ObjVSel=variable.*sin(10*pi*variable)+2.0; %计算子代的目标函数值