数学建模社区-数学中国

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

作者: 海贼骑士9235    时间: 2016-5-19 20:18
标题: 多目标优化
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:# }/ L* F4 U, S
global u;3 N3 @- T2 h2 C) g8 r& {3 b
%贝塞尔函数求根
9 ?. O# k4 B8 J; ~6 p%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根; E+ C7 Y, J4 X! S( [8 `; s7 L( ~
maxs=20;%要求的贝塞尔函数的非零根个数
9 R8 K9 q5 ~. v# F6 N& @incr=4.0;' f. d! a$ ]$ x" Z9 _  v4 z7 o
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
3 x( g% J+ u$ O; L& ofor s=2:maxs* n2 L  @0 v3 a# J9 G
    u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解* N* ]# D5 X( k# J% f2 D. H' f
end
6 j* u- m( P1 q  y8 YNIND=40;      %个体数目40
8 t5 W/ m# @- g1 e6 m7 [MAXGEN=100;   %最大遗传代数100
6 K6 R6 j1 o/ c: q( t; a% qNVAR=10;       %变量个数为10,前五个为半径,后五个位直波导长度
9 J- [( i9 y* N4 o# d6 U( C, CPRECI=20;      %变量的二进制位数+ a! i1 j( y7 y3 A0 ]2 ^" C+ K" |, Q
GGAP=0.9;      %代沟# L" y: [( g1 @' ^
trace1=[];3 i, F' x! e0 z
trace2=[];   %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
: ]$ K: z8 ]4 O2 H%建立区域描述器
9 v$ v: t; H8 b1 e) TFieldD=[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 J5 o% v) C, p+ e; E: O4 j5 AChrom=crtbp(NIND,NVAR*PRECI);        %初始化种群  l4 l3 |6 m& e0 `9 T3 h
v=bs2rv(Chrom,FieldD)/1000;               %初始种群十进制转换(单位由mm转换为m). t& l$ `: V! p; y
gen=1;                               %代计数器
3 L/ _3 X  ]3 a* ~# |3 d%遗传开始  @0 \. o' P2 Q/ q/ M. E  E7 [
while gen<MAXGEN
' n" C% l/ A' a. ~$ m+ l    [NIND,N]=size(Chrom);
6 a2 h6 u7 K* _8 w. v! Q    M=fix(NIND/2);$ A  `  Q& Z) |' O# j; ^: e
    ObjV1=Highpass(v(1:M,);         %分组后高通目标函数值(单位m)9 h& u  V% [7 K$ `# `5 }
    FitnV1=ranking(-ObjV1);           %分配高通适应度值(求最大值): ~% n' {& Z3 n9 p
    SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP);      %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择& o/ _: ?2 N, ~! }1 a
    ObjV2=Lowpass(v(M+1:NIND,);     %分组后低通目标函数值(单位m)4 T6 g; d. C/ C0 y( h( h8 j( c
    FitnV2=ranking(ObjV2);            %分配低通适应度值(求最小值)& h9 S0 l, Y2 Y6 t! @
    SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP);      %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择& s( G1 Y. `9 a6 b- }( h
    SelCh=[SelCh1;SelCh2];            %将两组选择后种群进行合并4 d9 G) N, d7 T0 s0 ?3 W
    SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
0 _8 p2 r! i6 N, v    Chrom=mut(SelCh);                 %变异8 G  R# G' A( I2 X3 `6 b
    %Chrom=reins(Chrom,SelCh);         %随机均匀选择重插入
" F7 ?! c; s. b) w; Y    v=bs2rv(Chrom,FieldD)/1000;            %将进化后种群十进制转换(单位由mm转换为m)
4 T6 b- q1 e) Q: @  t% b    trace1(gen,1)=max(Highpass(v));
$ j+ O" B' h* F3 l% f    trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));+ S% [$ x8 Y) y* F" C
    trace2(gen,1)=min(Lowpass(v));
9 V$ A+ p% V" e    trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
* E8 P" N$ [, ^2 t' w    gen=gen+1;& M0 Z/ R4 y  p9 F: h1 [! @# k
end
3 Y0 |$ v3 M* Xfigure(1);clf;
2 B6 k! o: H9 E, j. f3 {% iplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
2 |* J' B0 l1 T5 g+ Vplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
9 y( X% c8 [3 w9 U7 g( _! q% rlegend('解的变化','种群均值的变化')
8 k* H% p" m" `' c; [1 oxlabel('迭代次数');ylabel('高通目标函数值');
" l" Z$ O/ x6 E5 e1 f' zfigure(2);clf;
" \# R: P2 p6 v3 Mplot(trace2(:,1));hold on;
' K' s) T  c$ R" @plot(trace2(:,2),'-.');
  w7 f7 i- [0 n# p* I5 i" lplot(trace2(:,1),'.');0 Q9 N. f0 M4 C8 v7 t# T8 C, n
plot(trace2(:,2),'.');grid;
2 ]9 |6 }+ P# G& Slegend('解的变化','种群均值的变化')
9 Z! a% u2 x( M1 Uxlabel('迭代次数');ylabel('低通目标函数值');6 z: s2 F3 S/ d
figure(3);clf;
, J( c( H/ {/ v" D" m. Z2 yplot(Highpass(v));hold on;; [6 A; U% P* D7 A
plot(Lowpass(v),'r-.');grid;0 N* b% _1 W* L4 R% o* D; C* d/ y$ R
& J) T" I2 u4 L' E9 e2 V

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

1.jpg

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

2.jpg

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

3.jpg






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