matlab遗传算法先收敛后发散,遗传算法收敛问题

本人在做一个目标函数的最优化问题,但是目标函数以及进化曲线如下:

求得是目标函数的最小值,因此去目标函数的倒数作为适应度函数。

现在的问题是,进化曲线在100代之前波动比较剧烈,这个是什么原因?进化曲线是否符合一般规律?

第二个,如果进化曲线有问题,可以通过调整哪些参数来改善?

下面附上自己的代码:

%% 定义遗传算法参数

NIND=20;

MAXGEN=200;

a=5;b=5;c=5;d=5;

Pc=0.7;

GGAP=0.95;

Pm=0.001;

FieldD=[a b c d;300 0.2 200 0.1;500 0.4 400 0.3;1 1 1 1;0 0 0 0;1 1 1 1;1 1 1 1];

Chrom=crtbp(NIND,20);

N=4;

trace=zeros(N+1,MAXGEN);

%优化省略

while gen

FitnV=ranking(-ObjV);

SelCh=select('sus',Chrom,FitnV);

SelCh=recombin('xovsp',SelCh,Pc);

SelCh=mut(SelCh,Pm);

abcd=bs2rv(Chrom,FieldD);

求子代目标函数值ObjVSel

[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);

abcd=bs2rv(Chrom,FieldD);

gen=gen+1;

%获取每代的最优解及其序号,Y为最优解,I为个体的序号

[Y,I]=max(ObjV);

trace(1:N,gen)=abcd(I,:);

trace(end,gen)=Y;

end

%%画进化图

figure(1);

plot(1:MAXGEN,trace(end,:));

grid on

xlabel('遗传代数')

ylabel('误差的变化')

title('进化过程')

bestX=trace(1:end-1,end);

bestErr=trace(end,end);

目标函数.jpg

(4.35 KB, 下载次数: 10)

2012-2-2 09:29 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

目标函数

55b47a14f1422281ecd46ad7755113ce.png

500.jpg

(58.66 KB, 下载次数: 5)

2012-2-2 09:28 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

500代

5e891cd0f6267545b09400e20f63bf80.png

200.jpg

(62.09 KB, 下载次数: 5)

2012-2-2 09:28 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

200代

87a326a741c30433217fea00f36f4939.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值