数学建模社区-数学中国

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

作者: 海贼骑士9235    时间: 2016-5-19 20:18
标题: 多目标优化
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
9 q7 h* k5 [8 Q( o2 c3 s5 A  Mglobal u;
! r+ v. [; C/ I! r; e; _8 |%贝塞尔函数求根
& [3 ^7 k) P; j% ~%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
. G8 Y% W" r. |0 Xmaxs=20;%要求的贝塞尔函数的非零根个数5 Y, f& S7 L& F/ r: Z) Y. b4 i+ A
incr=4.0;
8 t& J, B# k5 E5 J& pu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)+ I0 F5 e2 D6 j( i7 [
for s=2:maxs$ l* Z$ l  R! g/ U1 d4 B
    u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
% l  X/ B) b% h# P2 C  J) T8 p6 O; s% `end4 y5 l2 x- l: Y5 c
NIND=40;      %个体数目40
, o! E; o% E. |1 yMAXGEN=100;   %最大遗传代数100. h# Z6 P- M  z2 K3 R5 i8 \
NVAR=10;       %变量个数为10,前五个为半径,后五个位直波导长度7 j/ d. }6 O' A3 q
PRECI=20;      %变量的二进制位数- U: b# Z" e5 ]$ ?4 ?! @% M
GGAP=0.9;      %代沟
% S6 B' y. r; a+ S- H" ~% q/ r7 Jtrace1=[];
% V  z- {2 }1 O% Ntrace2=[];   %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
+ d; s2 w' @! @0 R" a; S' F%建立区域描述器
, {  d( C9 P$ 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])];
. \8 i* W; G( ^# YChrom=crtbp(NIND,NVAR*PRECI);        %初始化种群
) X8 x, E5 O" r+ z) r0 t6 ^( c& M% Tv=bs2rv(Chrom,FieldD)/1000;               %初始种群十进制转换(单位由mm转换为m)1 v, q* M5 o8 I0 p7 b
gen=1;                               %代计数器
$ D8 G8 K# G4 R( L( d" F, P%遗传开始/ J( p0 _! a5 F  i0 U
while gen<MAXGEN; V+ E! \, a7 ^" |4 g8 `
    [NIND,N]=size(Chrom);
2 S! B* |8 H# x: D9 ?    M=fix(NIND/2);3 S+ w8 s# M' J$ `# \! f
    ObjV1=Highpass(v(1:M,);         %分组后高通目标函数值(单位m)
, p# V  W7 W( O; @; l    FitnV1=ranking(-ObjV1);           %分配高通适应度值(求最大值)
* v, d- _8 p% w    SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP);      %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
. n; w  T4 q$ I; P$ r9 I& X4 f; u7 I. w    ObjV2=Lowpass(v(M+1:NIND,);     %分组后低通目标函数值(单位m)
0 V1 u& u* G6 z3 @+ j    FitnV2=ranking(ObjV2);            %分配低通适应度值(求最小值)
* X9 D' P7 O' Q% l! @    SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP);      %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
" s# y2 q+ Z4 F2 a& c. g! m    SelCh=[SelCh1;SelCh2];            %将两组选择后种群进行合并. h# c! U/ s/ [% _, f
    SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
/ [( M3 ]  e' ?    Chrom=mut(SelCh);                 %变异
! V0 c( n2 U; N7 d* s# N& ~    %Chrom=reins(Chrom,SelCh);         %随机均匀选择重插入- `. D/ N! G* W" J' |
    v=bs2rv(Chrom,FieldD)/1000;            %将进化后种群十进制转换(单位由mm转换为m)
" S  v7 N" Y5 c/ {9 L/ D/ A' [- z    trace1(gen,1)=max(Highpass(v));9 h3 X2 n7 Y) s5 W
    trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
8 s8 \! F: @( m7 m. R    trace2(gen,1)=min(Lowpass(v));; H: y& @+ o" ]% n/ i" z0 h
    trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
+ B9 U# U- g! I% n7 u    gen=gen+1;1 f3 m7 j7 u9 ]
end( Z: x5 P0 v% `
figure(1);clf;! b- m2 x9 C) C9 o' U
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');% h. h" ^+ n' E' ^% X
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;: |. I! }' ~: N# u8 ?
legend('解的变化','种群均值的变化')
6 N6 Z! h3 H- I9 s$ t6 i- W7 Pxlabel('迭代次数');ylabel('高通目标函数值');
0 s: s- f2 S9 n+ |1 v  lfigure(2);clf;
( A6 [' b6 w, E0 _plot(trace2(:,1));hold on;" P% y/ w$ g! }2 X
plot(trace2(:,2),'-.');  {8 O: U4 ~5 Z( H6 |
plot(trace2(:,1),'.');" r5 ^( B, k% C$ a
plot(trace2(:,2),'.');grid;: Q) y+ ?, v$ [% g2 q- L
legend('解的变化','种群均值的变化')& I0 ?5 A3 A8 G
xlabel('迭代次数');ylabel('低通目标函数值');, Z! _$ f6 }4 [: }* v7 F, A1 u9 m
figure(3);clf;
$ A. `% f) Y  {, lplot(Highpass(v));hold on;
% s% _6 U* P; `( {2 H4 |  J2 lplot(Lowpass(v),'r-.');grid;8 a% Z0 z9 t' n' i' z/ N9 K& X

$ [" `, k4 f# M8 F

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

1.jpg

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

2.jpg

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

3.jpg






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