📄 遗传优选多目标代码.txt
字号:
nind=100;maxgen=50;nvar=3;preci=20;ggap=0.9;
fieldD=[rep([preci],[1,nvar]);[-1.11803 -1.11803 -1.11803;1.11803 1.11803 1.11803];rep([1;0;1;1],[1,nvar])];
chrom=crtbp(nind,nvar*preci);
v=bs2rv(chrom,fieldD);
gen=0;
while gen<maxgen,
[nind,n]=size(chrom);
M=fix(nind/2);
y1=sim(net,v(1:M,:)');
objv1=y1(1,:);
fitnv1=ranking(-objv1');
selch1=select('sus',chrom(1:M,:),fitnv1,ggap);
y2=sim(net,v((M+1):nind,:)');
objv2=y2(2,:);
fitnv2=ranking(-objv2');
selch2=select('sus',chrom((M+1):nind,:),fitnv2,ggap);
selch=[selch1;selch2];
selch=recombin('xovsp',selch,0.7);
chrom=mut(selch);
v=bs2rv(chrom,fieldD);
gen=gen+1;
trace1(gen,1)=max(objv1);
trace1(gen,2)=sum(objv1)/length(objv1);
trace2(gen,1)=max(objv2);
trace2(gen,2)=sum(objv2)/length(objv2);
end
trace3(1000,1)=max(objv2);
trace3(1000,2)=sum(objv2)/length(objv2);
figure(1);clf;
plot(trace1(:,1));hold on;plot(trace1(:,2),'-');
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
legend('解的变化','种群均值的变化')
xlabel('迭代次数');ylabel('目标值');
figure(2);clf;
plot(trace2(:,1));hold on;plot(trace2(:,2),'-');
plot(trace2(:,1),'.');plot(trace2(:,2),'.');grid;
legend('解的变化','种群均值的变化')
xlabel('迭代次数');ylabel('目标值');
figure(3);clf;
plot(trace3(:,1));hold on;plot(trace3(:,2),'-');
plot(trace3(:,1),'.');plot(trace3(:,2),'.');grid;
legend('解的变化','种群均值的变化')
xlabel('迭代次数');ylabel('目标值');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -