数学建模社区-数学中国

标题: 多目标优化 [打印本页]

作者: 海贼骑士9235    时间: 2016-5-19 20:18
标题: 多目标优化
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
3 p% s9 s' v* |) `; A+ N. W" u8 nglobal u;
0 O7 C" H- h. F6 p. R. g%贝塞尔函数求根# p: J' G9 U7 y' h+ q
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
+ [/ u  F9 T# }+ b/ {; [1 |9 Gmaxs=20;%要求的贝塞尔函数的非零根个数
' M1 @2 r; }5 e  m: P; }; Q# |! o* |incr=4.0;  @8 T8 m: t5 U* o( K7 P
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)9 }; t" X$ X$ h: x( u, y
for s=2:maxs
, c7 W2 i/ f+ H    u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解* X( r) d2 _+ z8 N2 ?7 u# P
end
0 |8 b- z: T2 O% B4 O( R, ?NIND=40;      %个体数目40
1 n0 i* }4 U$ iMAXGEN=100;   %最大遗传代数100; n5 I2 ]3 B9 @% w# d2 Y5 {) S% f
NVAR=10;       %变量个数为10,前五个为半径,后五个位直波导长度+ u- @9 e1 T3 r9 F) I  Y! B/ |
PRECI=20;      %变量的二进制位数
6 L; I* Y9 h2 t% V6 }GGAP=0.9;      %代沟
& j8 p! G  ]  Ptrace1=[];
( D. A  ^% w3 n2 a* W' i/ x% Vtrace2=[];   %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪6 L% Q- w7 i% K3 c) |
%建立区域描述器$ \  k) n! u" [1 y) g0 t( L
FieldD=[rep([PRECI],[1,NVAR]);[20,20,20,20,20,10,10,10,10,10;50,50,50,50,50,100,100,100,100,100];rep([1;0;1;1],[1,NVAR])];
2 O. Z. q+ u+ m' F0 @) [Chrom=crtbp(NIND,NVAR*PRECI);        %初始化种群( l" S4 a: c/ y& w
v=bs2rv(Chrom,FieldD)/1000;               %初始种群十进制转换(单位由mm转换为m)$ p  \. ?3 m/ w
gen=1;                               %代计数器
* \2 c( y" c7 @' ?. ^7 i9 r' d5 f6 L& J%遗传开始; H' [! m% L# A2 {6 K5 x& c0 Z8 P7 e
while gen<MAXGEN6 e1 _" ?; A  D* @
    [NIND,N]=size(Chrom);) B5 M' z" Z5 j% z% W5 V' e
    M=fix(NIND/2);
1 B. [* Y. G9 q# _$ G    ObjV1=Highpass(v(1:M,);         %分组后高通目标函数值(单位m)' m4 C% ^5 q9 T( t; `; N2 @
    FitnV1=ranking(-ObjV1);           %分配高通适应度值(求最大值)/ S1 k. o. Z! B. r  I$ U
    SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP);      %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择! `& i  ~+ t& r8 E( D
    ObjV2=Lowpass(v(M+1:NIND,);     %分组后低通目标函数值(单位m): ]& J0 p0 O+ T8 T% j6 b$ Z8 ]8 w
    FitnV2=ranking(ObjV2);            %分配低通适应度值(求最小值): S) l" k: c/ t1 D" F( o9 k- Z
    SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP);      %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择7 A1 I2 d. U' `8 [9 F
    SelCh=[SelCh1;SelCh2];            %将两组选择后种群进行合并( r" x$ W) K( ^! U
    SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组, U2 D( t5 ?8 u! r
    Chrom=mut(SelCh);                 %变异# M% n+ c3 v0 w  y
    %Chrom=reins(Chrom,SelCh);         %随机均匀选择重插入
5 F) e( j) t: {# |, x: q& u/ `" Y9 j    v=bs2rv(Chrom,FieldD)/1000;            %将进化后种群十进制转换(单位由mm转换为m)2 Z. S8 f, q3 }9 t' Q  L2 d
    trace1(gen,1)=max(Highpass(v));
" v. r) D" |- X# X3 ^# O    trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
4 y' Q8 O7 k( U' H7 h" w0 o' t6 q    trace2(gen,1)=min(Lowpass(v));
( ^5 i+ P' g; L" M+ R- \    trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
0 e) n5 b1 ~& B0 V0 Q" ]& `    gen=gen+1;/ Y! j: {( p* J: f4 r! Y
end
  J, t! r& B0 G* Y6 P- l5 Bfigure(1);clf;
) K' W% h! T* C* k' O( }1 J' Y9 Hplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');& _5 W- s5 u( g+ q1 Q
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;9 U1 c! l2 O7 y6 y% w
legend('解的变化','种群均值的变化'): |7 f$ X/ C# Q# `$ I* d
xlabel('迭代次数');ylabel('高通目标函数值');3 I) g3 ^( E" j( q0 O- i2 ^$ w- w& B
figure(2);clf;
! q' G5 ^- s; U( ]: u1 Y/ `. dplot(trace2(:,1));hold on;
5 R1 B: p/ \9 S- z, I6 Uplot(trace2(:,2),'-.');
* a9 [0 M* h6 r% gplot(trace2(:,1),'.');4 B# ~& B& y! h% @4 Q
plot(trace2(:,2),'.');grid;# q; t5 Q9 f4 G# N% C
legend('解的变化','种群均值的变化')* E! `2 c4 A2 i% X5 v7 t+ ]
xlabel('迭代次数');ylabel('低通目标函数值');
1 y- @  q2 U# \2 F+ a) Afigure(3);clf;1 Y+ w( X6 m7 m2 M, Z
plot(Highpass(v));hold on;
2 G7 g# T. a( m9 D6 y7 e: D' Xplot(Lowpass(v),'r-.');grid;; n( g7 W7 I! g7 c
1 f& R5 @. x2 {: J

1.jpg (63.87 KB, 下载次数: 1051)

1.jpg

2.jpg (67.12 KB, 下载次数: 1009)

2.jpg

3.jpg (47.82 KB, 下载次数: 982)

3.jpg






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5