数学建模社区-数学中国

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

作者: 海贼骑士9235    时间: 2016-5-19 20:18
标题: 多目标优化
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:6 b) Y/ V1 B; t# n
global u;
, |0 j( i8 w2 Z) G4 Y; ?%贝塞尔函数求根
/ `. p+ @9 F' R" H2 J$ P%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根, |; p; H1 d2 ~% B, a8 ~, P3 u
maxs=20;%要求的贝塞尔函数的非零根个数
5 X: J! |$ U' m8 i, wincr=4.0;
1 w7 t4 [+ o$ A* c+ Pu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)8 M8 C' v" ]9 R: t2 E
for s=2:maxs
" k3 `. n' ~. P) M4 A" [6 R+ x    u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解- o+ a$ N5 `) l1 C! c
end1 R( V# O& e& l& O" c) d
NIND=40;      %个体数目40
; A* k0 h8 d* N! N( ?MAXGEN=100;   %最大遗传代数100
0 q/ B" r. h2 a2 s6 Z' RNVAR=10;       %变量个数为10,前五个为半径,后五个位直波导长度; U3 A* d; H8 k6 G
PRECI=20;      %变量的二进制位数+ [. K. ]1 ?. ]. N$ T  e
GGAP=0.9;      %代沟3 U9 W7 y0 F% n" e1 b5 G
trace1=[];
) z4 l" {9 @( @4 M' B# @: Mtrace2=[];   %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
# F$ T! o* U* ]$ L%建立区域描述器
3 G+ B2 c, p( mFieldD=[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])];+ a" K# _! W/ ?
Chrom=crtbp(NIND,NVAR*PRECI);        %初始化种群
+ y0 A1 P# z2 ?4 qv=bs2rv(Chrom,FieldD)/1000;               %初始种群十进制转换(单位由mm转换为m)" j2 W* C) e6 f. E2 }
gen=1;                               %代计数器
3 }1 v  F; [+ U) a' i%遗传开始& s* }# c! u& G
while gen<MAXGEN
* k4 k2 d+ h. G* s% d6 x7 o    [NIND,N]=size(Chrom);
' A. v4 t4 u7 h; S1 t, a" G    M=fix(NIND/2);' z9 a1 E2 b. I. [2 O% E& p7 K
    ObjV1=Highpass(v(1:M,);         %分组后高通目标函数值(单位m)
, W1 z9 y; U* v# p    FitnV1=ranking(-ObjV1);           %分配高通适应度值(求最大值)
2 `/ _& _* ?- Z5 T    SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP);      %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择* F3 Z6 c; G& C
    ObjV2=Lowpass(v(M+1:NIND,);     %分组后低通目标函数值(单位m)
$ q' `# ?; X2 P. N: X: ]    FitnV2=ranking(ObjV2);            %分配低通适应度值(求最小值)+ ], F$ \* M2 W! }
    SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP);      %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择0 t/ C" D. b2 H4 f: K) @
    SelCh=[SelCh1;SelCh2];            %将两组选择后种群进行合并
! {; T+ j9 D- F    SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
: `; T7 w: |8 ]) `" j    Chrom=mut(SelCh);                 %变异6 u' t" @* ~/ H1 u- Z: \
    %Chrom=reins(Chrom,SelCh);         %随机均匀选择重插入4 U$ P) X/ Z# x0 u
    v=bs2rv(Chrom,FieldD)/1000;            %将进化后种群十进制转换(单位由mm转换为m)
  C1 ]' b: Q7 h2 `# m$ k    trace1(gen,1)=max(Highpass(v));' t* E1 F9 j( @/ s$ m
    trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));; @" E' t& @: O& H
    trace2(gen,1)=min(Lowpass(v));9 N& f) \. r# n: O+ d
    trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
- U- D( H% n/ [8 S    gen=gen+1;
5 t3 P: r7 C- p, o9 u+ U: M; I  nend0 v7 K' }: w  L) n: s$ m
figure(1);clf;% ^4 ^+ q+ A. O- P! s7 y& E
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');4 u* v5 ?% ?8 \& p. e
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
1 Z, o' Z5 s3 E! U/ T, xlegend('解的变化','种群均值的变化')
% ^3 h! b5 b& W% v0 c  e4 Ixlabel('迭代次数');ylabel('高通目标函数值');8 E. H' W( {+ Y* S5 J# T) `
figure(2);clf;
# b1 r+ C) Z7 i( Q, N# ~% n; m7 [plot(trace2(:,1));hold on;- O! B- s8 i( g, w* ]
plot(trace2(:,2),'-.');2 h  ~* u' b' B& `* ?: w
plot(trace2(:,1),'.');, s$ [% m  E  [
plot(trace2(:,2),'.');grid;
0 s: w# B$ {9 r& glegend('解的变化','种群均值的变化')
4 g) \5 Q6 a2 U) Nxlabel('迭代次数');ylabel('低通目标函数值');
3 r! @& V- v' Q# Z7 o: y3 A$ ]figure(3);clf;
. o" j9 M! V3 X4 q1 D6 fplot(Highpass(v));hold on;
5 k! U1 ?; X, e- o) q" B6 y% qplot(Lowpass(v),'r-.');grid;
' I3 p" h/ n7 ]6 d4 O& H+ y2 H$ W6 i( X. b6 ]" m% ?

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

1.jpg

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

2.jpg

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

3.jpg






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