Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-08-02
年龄: 49
帖子: 4
声望力: 0 ![]() |
![]()
一个很简单的多目标优化问题,因为没有学过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, ![]() ObjV2=f2(v(M+1:NIND, ![]() FitnV2=ranking(ObjV2); SelCh2=select(′sus′,Chrom(M+1:NIND, ![]() 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; |
![]() |
![]() |