- 在线时间
- 1 小时
- 最后登录
- 2016-5-19
- 注册时间
- 2016-4-28
- 听众数
- 9
- 收听数
- 0
- 能力
- 0 分
- 体力
- 39 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 12
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1
- 主题
- 1
- 精华
- 0
- 分享
- 0
- 好友
- 1
升级   7.37% 该用户从未签到 - 自我介绍
- 勇往直前
 |
4体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
8 ]: l* j0 W: i' kglobal u;- t3 s& M, L M
%贝塞尔函数求根% Z6 e1 y& @; ~
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
4 o! m: m2 U/ C1 G! s ?maxs=20;%要求的贝塞尔函数的非零根个数2 a# ?+ V! M' i; L
incr=4.0;* J9 E1 o$ P4 o9 Z7 R
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近); o+ {/ s) j! O2 L
for s=2:maxs
" V( N6 ]3 E3 W) S u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解" x% g$ ]8 }* O$ c
end. |% P4 \' {! f8 e/ P" K
NIND=40; %个体数目40
) S. Z! m$ [, a. E0 W0 {/ h- L3 lMAXGEN=100; %最大遗传代数100% G. L1 k9 I/ |+ E; L3 O/ e
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
; v4 P% t, F% B% @1 w. m% APRECI=20; %变量的二进制位数
! r" ]$ c+ h4 v7 E; bGGAP=0.9; %代沟
1 T, U" C( r& e1 U; ]trace1=[];7 q: Y5 i+ B' z
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
" @6 I5 [; h2 j+ a%建立区域描述器
& Y# T' J4 u# v. ^$ R% LFieldD=[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])];. e c5 F" R/ D7 k, T
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群- C0 i1 N6 v% c3 @4 R. ~
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
8 J) S0 X, O+ ^gen=1; %代计数器
+ L! S; ^+ f& |1 D%遗传开始
+ |2 i b, A1 qwhile gen<MAXGEN
- D/ A2 P% i1 P, U; T } [NIND,N]=size(Chrom);
; e- s. Q; n7 B) a8 R M=fix(NIND/2);( P2 r% T2 L5 q: s @
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
9 a; `# l( }4 }7 P FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
b4 }$ ^ B3 k" A& b9 B& } SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
6 i$ ]& r; Q M& ~# f& S* C% W ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)9 ^# @" u* Y9 \0 l S5 h3 ?
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)+ a0 G Q" [, o
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择; i+ Y* x, s8 k, |& Y9 E) M: k9 M
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并' [# Z6 ^# G4 A4 }
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
0 z6 ^+ S" }1 C( b% r& ]& w Chrom=mut(SelCh); %变异
, X+ O+ L7 |7 l E8 } %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
" r w. a& i( D" l6 B- ~ X v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)& }) e4 m9 N; l+ _
trace1(gen,1)=max(Highpass(v));
0 J) A! z5 a( J9 W% B; F- C; ? trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
& W# c1 I6 m2 }, \ trace2(gen,1)=min(Lowpass(v));
6 b6 E$ Z! P) h) i7 X. H+ O trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
& M2 V9 A$ I i( `7 O gen=gen+1;4 d& a' x* \" k- j% k
end$ I3 ^! _& [; l3 X" G0 O
figure(1);clf;# t8 |2 R- x# S) n) X
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');( n# Q6 L2 I6 |' M8 o; I; u
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;( t6 y' [. R- f
legend('解的变化','种群均值的变化')
J* t4 C: n: W; J9 `5 x7 f; fxlabel('迭代次数');ylabel('高通目标函数值');
8 Q6 n5 k2 @' X. S! O6 ofigure(2);clf;
/ g# A' j# Q9 w o( C! ^+ M vplot(trace2(:,1));hold on;8 Y G! H1 I2 o1 R
plot(trace2(:,2),'-.');
5 n" o8 Z+ I; N- d9 Kplot(trace2(:,1),'.');
' y- D& y% I) |! v# R; |* e, Rplot(trace2(:,2),'.');grid;
& p. x2 v- p* U# k( u! S; zlegend('解的变化','种群均值的变化')
7 y* V/ N0 J" r0 U$ zxlabel('迭代次数');ylabel('低通目标函数值');. @# D8 C$ u4 u& V+ x# Z, ~
figure(3);clf;/ h$ J1 n: t0 Q$ ]: y" C1 P' Z
plot(Highpass(v));hold on;
' d" ~( A# I0 x5 Dplot(Lowpass(v),'r-.');grid;
1 a5 V9 g' ]6 |; ~6 C+ I+ V, y9 W3 K) I
|
-
1.jpg
(63.87 KB, 下载次数: 1069)
-
2.jpg
(67.12 KB, 下载次数: 1022)
-
3.jpg
(47.82 KB, 下载次数: 995)
zan
|