houz5559
2008-10-04, 20:57
一个很简单的多目标优化问题,因为没有学过MATLAB,自己看书参照编写的MATLAB代码,运算不了,哪位费心帮忙看下,能不能帮我把运算结果做出来,这对我来说很重要,谢谢了。
Min f1=12.84X1+86.72X2
Min f2=13.34X1+124.10X2
s.t. 2≤X1≤12 3≤X2≤15
Function f1=f(x)
f1=x(:,1).*12.84+x(:,2).*86.72;
Function f2=f(x)
F2=x(:,1).*13.34+x(:,2).*124.10;
NIND=100
MAXGEN=50
NVAR=2
PRECI=20
GGAP=0.9
tracel=[ ]; trace2=[ ]; trace3=[ ];
FieldD=[rep([PRECI],[1,NVAR]);[2,3;12,15];rep([1;0;1;1],[1,NVAR])]
Chrom=crtbp(NIND,NVAR*PRECI);
V=bs2rv(Chrom,FieldD)
gen=2
while gen<MAXGEN,
[NIND,N]=size(Chrom);
M=fix(NIND/2);
ObjV1=f1(v(1:M,:));
FitnV1=ranking(ObjV1);
SelCh1=select(′sus′,Chrom(1:M,:), FitnV1,GGAP);
ObjV2=f2(v(M+1:NIND,:));
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);
trace1(gen,1)=min(f1(v));
trace1(gen,2)=sum(f1(v))/length(f1(v));
trace2(gen,1)=min(f2(v));
trace2(gen,2)=sum(f2(v))/length(f2(v));
trace3(gen,1)=min(f1(v)+f2(v));
trace1(gen,2)=sum(f1(v))/length(f1(v))+sum(f2(v))/length(f2(v));
gen=gen+1;
end
figure(1);clf;
plot(tracel(:,1));hold on;plot(tracel(:,2),′-.′);
plot(tracel(:,1),′.′); plot(tracel(:,2),′.′);grid;
legend
xlabel
figure(2);clf;
plot(trace2(:,1));hold on;
plot(trace2(:,2),′-.′);
plot(trace2(:,1),′.′);
plot(trace2(:,2),′.′);grid;
legend
xlabel
figure(3);clf;
plot(trace3(:,1));hold on;
plot(trace3(:,2),′-.′);
plot(trace3(:,1),′.′);
plot(trace3(:,2),′.′);grid;
legend
xlabel
figure(4);clf;plot(f1(v));hold on;
polt(f2(v),′r-.′);grid;
Min f1=12.84X1+86.72X2
Min f2=13.34X1+124.10X2
s.t. 2≤X1≤12 3≤X2≤15
Function f1=f(x)
f1=x(:,1).*12.84+x(:,2).*86.72;
Function f2=f(x)
F2=x(:,1).*13.34+x(:,2).*124.10;
NIND=100
MAXGEN=50
NVAR=2
PRECI=20
GGAP=0.9
tracel=[ ]; trace2=[ ]; trace3=[ ];
FieldD=[rep([PRECI],[1,NVAR]);[2,3;12,15];rep([1;0;1;1],[1,NVAR])]
Chrom=crtbp(NIND,NVAR*PRECI);
V=bs2rv(Chrom,FieldD)
gen=2
while gen<MAXGEN,
[NIND,N]=size(Chrom);
M=fix(NIND/2);
ObjV1=f1(v(1:M,:));
FitnV1=ranking(ObjV1);
SelCh1=select(′sus′,Chrom(1:M,:), FitnV1,GGAP);
ObjV2=f2(v(M+1:NIND,:));
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);
trace1(gen,1)=min(f1(v));
trace1(gen,2)=sum(f1(v))/length(f1(v));
trace2(gen,1)=min(f2(v));
trace2(gen,2)=sum(f2(v))/length(f2(v));
trace3(gen,1)=min(f1(v)+f2(v));
trace1(gen,2)=sum(f1(v))/length(f1(v))+sum(f2(v))/length(f2(v));
gen=gen+1;
end
figure(1);clf;
plot(tracel(:,1));hold on;plot(tracel(:,2),′-.′);
plot(tracel(:,1),′.′); plot(tracel(:,2),′.′);grid;
legend
xlabel
figure(2);clf;
plot(trace2(:,1));hold on;
plot(trace2(:,2),′-.′);
plot(trace2(:,1),′.′);
plot(trace2(:,2),′.′);grid;
legend
xlabel
figure(3);clf;
plot(trace3(:,1));hold on;
plot(trace3(:,2),′-.′);
plot(trace3(:,1),′.′);
plot(trace3(:,2),′.′);grid;
legend
xlabel
figure(4);clf;plot(f1(v));hold on;
polt(f2(v),′r-.′);grid;