数学建模社区-数学中国

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

作者: 海贼骑士9235    时间: 2016-5-19 20:18
标题: 多目标优化
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:0 H1 q7 N0 X/ I/ o; e
global u;: S0 q. \9 Z. s  l; y
%贝塞尔函数求根
' V3 {& H$ a3 ~. C3 D: E8 r  p6 @%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根$ [& c2 x( F* Y9 z4 N" c
maxs=20;%要求的贝塞尔函数的非零根个数
5 a& O( U! Y. j4 `) M% _! U. |5 Cincr=4.0;1 Q1 s; ~6 N5 L8 }8 |" K$ C
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
5 ?( a: \# c; R% U# ~& w/ Dfor s=2:maxs* i, v0 J/ }3 j! h
    u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
/ l; }. u# q) y6 R& _; Send
9 E. H2 f1 z( ?/ ~0 [NIND=40;      %个体数目40
2 z- B& d% I+ `! a. C, f: nMAXGEN=100;   %最大遗传代数100
8 `( i7 {2 o/ f$ B- QNVAR=10;       %变量个数为10,前五个为半径,后五个位直波导长度
1 g8 `( Z) h) s: b% mPRECI=20;      %变量的二进制位数
) N' n! i9 f' MGGAP=0.9;      %代沟
+ `0 D9 R0 A1 n% x  y  Mtrace1=[];
& I( A3 f( a9 I: Q2 c( f& atrace2=[];   %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
6 O1 Y" b0 r7 r%建立区域描述器, p2 D; ]3 }* D5 `9 I
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])];
  ~6 c, r8 V$ @0 w" sChrom=crtbp(NIND,NVAR*PRECI);        %初始化种群
4 l/ ~$ `) g& T$ R" E3 Q, l0 Zv=bs2rv(Chrom,FieldD)/1000;               %初始种群十进制转换(单位由mm转换为m)
) f+ Z6 ?( T6 G/ v- qgen=1;                               %代计数器
, R. A9 K% D8 i%遗传开始
( m+ h, I  b- o8 ^while gen<MAXGEN
4 k+ }6 M3 ~& D  d% [) T    [NIND,N]=size(Chrom);
/ R# |* u; o' e    M=fix(NIND/2);
# I8 B' H1 p$ R0 T/ H7 q    ObjV1=Highpass(v(1:M,);         %分组后高通目标函数值(单位m)
/ t8 i1 R% w8 q" {% K5 A    FitnV1=ranking(-ObjV1);           %分配高通适应度值(求最大值)
! y& O6 Q3 [4 Q: A! B. L8 |. s    SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP);      %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
5 G- i/ |2 a: h% Y- i) m    ObjV2=Lowpass(v(M+1:NIND,);     %分组后低通目标函数值(单位m)
1 y+ n1 e4 N  v9 C) N    FitnV2=ranking(ObjV2);            %分配低通适应度值(求最小值)1 x5 V& `- P, J& p0 y- Z5 ?
    SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP);      %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
4 Z3 T8 g. J( ~. ?    SelCh=[SelCh1;SelCh2];            %将两组选择后种群进行合并; e2 C( C* n7 w4 S! c7 Y% ]) \
    SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组9 Z8 f$ U  u) \0 [. l8 V' {7 g: v
    Chrom=mut(SelCh);                 %变异8 {/ H5 v! e& ]9 Y$ V( \
    %Chrom=reins(Chrom,SelCh);         %随机均匀选择重插入6 y/ N& {* ~3 M, I3 A, l
    v=bs2rv(Chrom,FieldD)/1000;            %将进化后种群十进制转换(单位由mm转换为m)8 e) e+ [; l) ^' X! m' a
    trace1(gen,1)=max(Highpass(v));
  x1 U% H# |: Q( R7 X6 s6 Z& ]$ y    trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
5 ]' l, b9 H2 k    trace2(gen,1)=min(Lowpass(v));2 \4 z6 r- Q, A2 b5 |7 G1 Q
    trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
8 Y9 h# N) I  g+ E    gen=gen+1;
2 y: p6 x, H. ?: g. H. A$ J7 E7 |end( D2 @4 z3 Y+ F' `) p8 w4 d% N4 E
figure(1);clf;. i/ {' S9 n1 P% J) L  a- e3 E
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');& J! T" E5 D. G& I3 g7 ?  r
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
+ x4 s/ B5 e( ?1 K; llegend('解的变化','种群均值的变化')
% r- X& k: E5 v# F5 h8 p4 p1 ixlabel('迭代次数');ylabel('高通目标函数值');
+ b: M; P. t3 R( l# Zfigure(2);clf;: X1 E3 J6 s0 r, d( f- C
plot(trace2(:,1));hold on;
! U/ c, c* y4 Q8 \6 o% Gplot(trace2(:,2),'-.');
: T" ^% r+ `4 f) G) J# G, jplot(trace2(:,1),'.');
( Z" P! C9 Q- U/ _1 ~plot(trace2(:,2),'.');grid;& C1 D- X+ s% w% t- N
legend('解的变化','种群均值的变化')- U: |6 T" _# _- c0 `. c2 c0 G
xlabel('迭代次数');ylabel('低通目标函数值');6 [- s1 b) _; h  ^
figure(3);clf;$ x3 c+ ~- @# Z- R1 O% P, E
plot(Highpass(v));hold on;
1 }3 a) w5 ^& N, a: Z; Hplot(Lowpass(v),'r-.');grid;
/ O" u% l- `) J9 Z8 t8 r1 D+ H$ ^4 y! M' b/ M& b3 q3 F5 g

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

1.jpg

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

2.jpg

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

3.jpg






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