- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
2 H: ^* ~' J3 A' p2 o- nglobal u;
9 l q2 t# ] w5 F2 O6 Q%贝塞尔函数求根( W& \6 Z5 ]6 S- V; b2 i! i6 x
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
( M( r' ~4 {3 W+ |& K smaxs=20;%要求的贝塞尔函数的非零根个数
# ?8 `1 v, S- S- K: X* k$ l0 M# Qincr=4.0;
8 e( Z9 f5 N3 R9 Mu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
4 z# ?& }' \' s7 j c( s0 q2 qfor s=2:maxs' H. }4 V1 W+ w' W$ d T/ [6 C. I+ D5 q
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解8 {& o( Y7 K' i- |8 f: \; r$ L
end
# v( C7 @: ~' O3 cNIND=40; %个体数目40
5 z2 X1 G! ~! ^3 `( gMAXGEN=100; %最大遗传代数1000 Y6 y6 p5 z6 n8 y! n8 o* X$ Z+ h
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度9 `: I6 ?: [# X' w; y
PRECI=20; %变量的二进制位数
- C! O: ~7 d9 ~: DGGAP=0.9; %代沟/ x) P) Z3 P6 m3 n" {- z
trace1=[];
0 |( e5 ]6 }9 B' v! w# Q* F' f( `trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪8 y4 [6 G! i; F, b- T, i* `* {$ h: y( Y
%建立区域描述器
/ u8 [! f7 q/ PFieldD=[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+ o1 t2 c! {7 i
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群; K" r2 m) }1 c" [
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)" d- f2 ?4 E( P$ A1 T
gen=1; %代计数器9 [$ y6 s1 K! O) @5 O
%遗传开始
' L/ K) H. y& k) d$ A$ F- m, gwhile gen<MAXGEN' f8 T: t5 r. v' } E4 j: }6 j8 M, D
[NIND,N]=size(Chrom);: q' _# ^6 q; w/ t
M=fix(NIND/2);$ ^: F2 Y2 L1 w/ \9 f B, d# g3 O1 F* f
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
' q; j' z# _; ^" \: G% ^ FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
: _, I/ T9 S; t! ~" L SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
1 P5 w( W$ x( z' a0 }; A ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)0 z6 M) E: Y7 O- f& H+ j" j- Y
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
! i2 d: f- J' v; }: q SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
7 L% S6 x6 e/ T+ h7 W SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
# H" u8 {2 {- j5 ^% |/ T0 y$ m; M SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组6 _2 M8 A" S. C( Z- z& r, ]" \
Chrom=mut(SelCh); %变异6 E, ^7 k4 {5 M1 z X
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入0 A2 ~6 v2 h0 G) q! j2 K, R. b
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
9 A6 w: r' w6 Q& Z/ `: ?" K trace1(gen,1)=max(Highpass(v));
- \. v" O s7 w! z trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));( V6 b) l- Q$ o% \; o( v7 y
trace2(gen,1)=min(Lowpass(v));$ J* s' O ?) s# w
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
! Y9 l, e! ~4 Z* H! Y, ? gen=gen+1;# u( k: I! i' N! x
end
- k1 b, d! {7 h, Ffigure(1);clf;
& y* {0 A- ]4 `7 ]) Splot(trace1(:,1));hold on;plot(trace1(:,2),'-.');4 F1 ]+ Z7 a% n! F$ {$ u( v
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;7 x$ t7 R- }. D- \# i% D& N+ [
legend('解的变化','种群均值的变化')
2 b4 A" j! C0 R# ~ v1 u( m8 cxlabel('迭代次数');ylabel('高通目标函数值');+ j7 R: s$ [0 D; K
figure(2);clf;- @ x. _# ~) |* Q! r# [9 u: \4 c; x
plot(trace2(:,1));hold on;
' N* d- I# W6 F6 ^9 M% F7 Aplot(trace2(:,2),'-.');
; r4 k4 x, b5 L$ a. bplot(trace2(:,1),'.');. ?0 t, r2 |9 J$ ~( j
plot(trace2(:,2),'.');grid;( T# \5 K k8 f/ j/ w# u
legend('解的变化','种群均值的变化')
3 o" U9 K9 ]/ Y' t. `. l) [7 ]xlabel('迭代次数');ylabel('低通目标函数值');* L3 ]4 {2 j' }8 Y' A9 U
figure(3);clf;( M$ A) U2 I2 q" Y. C
plot(Highpass(v));hold on;
$ F5 {6 c# W. `3 E7 Splot(Lowpass(v),'r-.');grid;
& V' E% _2 a7 I: q8 Q* r/ R3 z. n8 M. l
|
-
1.jpg
(63.87 KB, 下载次数: 986)
-
2.jpg
(67.12 KB, 下载次数: 948)
-
3.jpg
(47.82 KB, 下载次数: 917)
zan
|