- 积分
- 0
- 注册时间
- 2009-5-10
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 messenger 于 2009-12-31 02:56 编辑
该实例是雷英杰写的《Matlab遗传算法工具箱及应用》的一个例子,经过运行已经通过.
%利用遗传算法计算下列函数最大值
%f(x)=x*sin(10*pi*x)+2.0 , x取值范围[-1,2]
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;
while gen<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;
[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
gen=gen+1;
[Y,I]=max(ObjV);
hold on;
plot(variable(1),Y,'bo');
trace(1,gen)=max(ObjV);
trace(2,gen)=sum(ObjV)/length(ObjV);
end
variable=bs2rv(Chrom,FieldD);
hold on;
grid;
plot(variable,ObjV','b*');
figure(2);
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');
grid;
legend('解的变化','种群均值的变化');
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
×
评分
-
1
查看全部评分
-
|