- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序运行追踪结果
14 15 16 17 18 19 20
13
2.7739 2.6521 2.7844 2.5158 2.7768 2.7907 2.8080
3.8318 3.8274 3.8274 3.8274 3.8285 3.8277 3.8379
.
程序运行追踪结果
21
3.0947
22
3.1525
%遗传算法性能跟踪
trace(1, gen)=max(ObjV); %每一代最优解
trace(2, gen)=sum(ObjV)/length(ObjV);
9 end
.
具有性能跟踪和图像输出功能的程序代码
%最优个体的十进制转换
variable=bs2rv(Chrom, FieldD);
hold on, grid on;
%初始种群的十进制转换
ObjV=variable.*sin(10*pi*variable)+2.0; %计算初始种群目标函数值
while gen<MAXGEN+1
FitnV=ranking(-ObjV);
%分配适应度值
SelCh=select('sus', Chrom, FitnV, GGAP); %选择
23
2.9147
24
2.9144
25
3.0259
3.8489 3.8496 3.8496 3.8493 3.8493
经过25次迭代后最优解及种群均值的变化如下图:
14
.
15
.
16
.
例题中用到的一些绘图函数说明
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]——给出变量 范围
%定义遗传算法参数
NIND=40;
%群体中个体数目
MAXGEN=25; %最大遗传代数
PRECI=20;
%变量的二进制位数
4
.
具有性能跟踪和图像输出功能的程序代码
%代沟 GGAP=0.9; %寻优结果的初始值 trace=zeros(2, MAXGEN); %建立区域描述器 FieldD=[20;-1;2;1;0;1;1]; %生成初始种群 Chrom=crtbp(NIND, PRECI);
plot(variable,ObjV,'b*');
figure(2);
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid off
legend('解的变化','种群均值的变化')
10
.
程序运行追踪结果:
代序
1 2 3 4 5
11
寻优结果
自变量
函数值
%分配适应度值
FitnV=ranking(-ObjV);
%选择
SelCh=select('sus', Chrom, FitnV, GGAP);
%重组
SelCh=recombin('xovsp', SelCh, 0.7);
%变异
SelCh=mut(SelCh);
7
.
具有性能跟踪和图像输出功能的程序代码
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);
%子代个体的十进制转换
variable=bs2rv(SelCh, FieldD); %计算子代的目标函数值
ObjVSel=variable.*sin(10*pi*variable)+2.0; %重插入子代的新种群
[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel);
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到种群
Y=max(ObjV)
%当前种群最优解
gen=gen+1;
%代计数器增加
end
.
3
具有性能跟踪和图像输出功能的程序代码
figure(1);
%画出函数曲线
fplot('variable.*sin(10*pi*variable)+2.0',[-1,2]);
Matlab遗传算法工具箱应用举例
1
.
§5.1 简单一元函数优化实例
例 1 利用遗传算法计算下面函数的最大值
f ( x) x sin(10 * x) 2.0 x [1,2]
选择二进制编码,种群中个体数目为 40,每个 种群的长度为 20,使用代沟为 0.9,最大遗传代数 为 25
2
.
程序简化代码如下:
SelCh=recombin('xovsp', SelCh, 0.7);
%重组
SelCh=mut(SelCh);
%变异
variable=bs2rv(SelCh, FieldD);%子代Fra bibliotek体的十进制转换
ObjVSel=variable.*sin(10*pi*variable)+2.0; %计算子代的目标函数值
5
.
具有性能跟踪和图像输出功能的程序代码
%代计数器 gen=0; %计算初始种群的十进制转换 variable=bs2rv(Chrom, FieldD); %计算目标函数值 ObjV=variable.*sin(10*pi*variable)+2.0;
6
.
具有性能跟踪和图像输出功能的程序代码
while gen<MAXGEN
variable=bs2rv(Chrom, FieldD);
8
.
具有性能跟踪和图像输出功能的程序代码
%代计数器增加
gen=gen+1;
%输出最优解及其序号,并在目标函数图像
%中标出,Y为最优解,I为种群的序号
[Y, I]=max(ObjV);hold on;
plot(variable(I), Y, 'bo');
2.0292 2.2104 2.3577 2.4881 2.6401
3.8423 3.7819 3.8063 3.815 3.8072
.
程序运行追踪结果
6
7
8
9
10
11
12
12
13
2.6133 2.8658 2.9400 2.9120 2.8677 2.6973 2.7963 2.7317
3.7555 3.8073 3.8043 3.8321 3.8321 3.8320 3.8326 3.83.18