1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab遗传算法 约束条件 关于MATLAB 遗传算法 加入约束条件的问题 求大神帮助!...

matlab遗传算法 约束条件 关于MATLAB 遗传算法 加入约束条件的问题 求大神帮助!...

时间:2022-12-08 01:45:27

相关推荐

matlab遗传算法 约束条件 关于MATLAB 遗传算法 加入约束条件的问题 求大神帮助!...

小弟写的源代码如下:

clc;

close;

clear all;

tic

warning off

NIND=35;

MAXGEN=500;

NVAR=14;

PRECI=15;

GGAP=0.7;

trace=zeros(MAXGEN,2);

FieldD=[rep([PRECI],[1,NVAR]);rep([0;1],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];

Chrom=crtbp(NIND,NVAR*PRECI);

gen=0;

x_value=bs2rv(Chrom,FieldD);

a=x_value(1)+x_value(2)+x_value(3)+x_value(4)+x_value(5)+x_value(6)+x_value(7)+x_value(8)+x_value(9)+x_value(10)+x_value(11)+x_value(12)+x_value(13)+x_value(14);

if a==1

objV=entropy(x_value(:,1),x_value(:,2),x_value(:,3),x_value(:,4),x_value(:,5),x_value(:,6),x_value(:,7),x_value(:,8),x_value(:,9),x_value(:,10),x_value(:,11),x_value(:,12),x_value(:,13),x_value(:,14));

else

x_value=bs2rv(Chrom,FieldD);

end

while gen

FitnV=ranking(objV);

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

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

SelCh=mut(SelCh);

objVSel=bs2rv(SelCh,FieldD);

objVSel=entropy(objVSel(:,1),objVSel(:,2),objVSel(:,3),objVSel(:,4),objVSel(:,5),objVSel(:,6),objVSel(:,7),objVSel(:,8),objVSel(:,9),objVSel(:,10),objVSel(:,11),objVSel(:,12),objVSel(:,13),objVSel(:,14));

[Chrom objV]=reins(Chrom,SelCh,1,1,objV,objVSel);

gen=gen+1;

trace(gen,1)=max(objV);

trace(gen,2)=sum(objV)/length(objV);

end

plot(trace(:,1));hold on;

plot(trace(:,2),'-.');grid;

xlabel('进化代数/代');

ylabel('y');

title('训练次数与目标函数最小值变化曲线图');

legend('解的变化','种群均值的变化');

[Y,I]=max(objV);

COR_Max=Y;

X=bs2rv(Chrom,FieldD);

disp(' ');

disp('各行业的权重分别是:');

disp(' ');

Final={x_value(1),x_value(2),x_value(3),x_value(4),x_value(5),x_value(6),x_value(7),x_value(8),x_value(9),x_value(10),x_value(11),x_value(11),x_value(13),x_value(14)}

toc;

子函数:

function f=entropy(q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14)

if (q1>1&q1<0&q2>1&q2<0&q3>1&q31 ...

&q4<0&q5>1&q5<0&q6>1&q6<0&q7>0&q7<0 ...

&q8>4&q8<0.0143&q9>1&q9<0.0729&q10>1&q10<0.0014& ...

q11>1&q11<0.0159&q12>1&q12<0.0081&q13>1&q13<0.0115& ...

q14<0.008&q14<0.0072)

f=300;

else

f=*******;%%(太长了 就不粘了)

end

问题1:里面有14个指标,加权应该等于1,一开始试着放到子函数里,可是压根儿没用,想放到初始函数里,却不知道怎么放,求帮助!!!

问题2:为啥我在子函数力写的这些约束条件压根儿没起到任何作用呢??难道是&符号的问题?可是我放| 并不行,求帮助!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。