- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
/ \; S. }. x. d1 \global u;4 K! q- v' S, E
%贝塞尔函数求根
% `4 f) Z# |: y) C%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
/ J! Y% x/ \" @0 j4 Xmaxs=20;%要求的贝塞尔函数的非零根个数
D# T% a, d9 G# oincr=4.0;. l6 @2 D( d! a) f
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
% _6 ], |; K/ P5 w5 ?for s=2:maxs0 M6 f* z* x, z: m8 P
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解6 \7 s& K K5 @6 E1 p, }- R% F3 c. S
end
' M6 N; z' S& e3 q' n( [, l/ N2 QNIND=40; %个体数目40% K8 }+ X2 _, Q! _! z
MAXGEN=100; %最大遗传代数100+ w# ^; d/ q6 G- j
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度$ E. P" i7 [9 Q: X6 L& \
PRECI=20; %变量的二进制位数4 Q1 ?/ c1 Q' T/ `: F& \/ T; C* k
GGAP=0.9; %代沟
8 s5 h+ I7 k9 [0 i- F3 J, m" btrace1=[];
4 H+ G }- l! j, F, [trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
5 t7 r, e4 O8 X' Z9 w& p& P4 ~! c%建立区域描述器
7 C% Y% P8 Y7 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 B% o; Q, ~7 P
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
; V6 ^5 [' e4 G- u ?* \v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
: T% A% V- r- P6 K# U# d# Qgen=1; %代计数器
1 ` O7 I; j8 w%遗传开始# s3 Z( Y7 f- w
while gen<MAXGEN
! Y( F8 B& U3 T; q6 w# i$ t [NIND,N]=size(Chrom);5 i, r' d) B5 y
M=fix(NIND/2);
) c- u6 @! \9 E. [! L+ A ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)( ^ B' a5 q% G9 i3 h
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
H6 V3 F$ {. Y SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择. h7 S& K8 \; f# o; R' i! c
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m). X6 U2 Z- Y: E0 T, U/ K9 x: A
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
$ {8 c/ J8 x" Q( b8 g SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
7 z8 U" U) E* }, }0 ]( j- E SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
* E- W) V- k+ a$ _ b% `# E' I$ l SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组( {5 [6 o. f* b
Chrom=mut(SelCh); %变异4 s0 u T1 h' w/ c! L
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
1 {7 i2 H: N7 V! m2 e v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)+ [3 h# ?2 [( S/ q6 z2 p3 G
trace1(gen,1)=max(Highpass(v));
" b9 j8 }) [8 }: x7 V trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));" j3 Y+ \' p; ]
trace2(gen,1)=min(Lowpass(v));
- m0 G2 Q- S, m0 A trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
) l9 A; a5 J6 X3 g0 e" _ gen=gen+1;
3 l0 [. n3 c9 L# u' n3 @5 u- `end, d: C: H& i! W& d5 ~" T
figure(1);clf;& z; w8 d( c9 ^3 ^6 a1 t( \) ^' }
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');# _6 h+ v1 v( ^# G& t& s
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;2 Z* I) ]7 W( u' q* C
legend('解的变化','种群均值的变化')
( n$ D( }2 e" z: G# X1 Zxlabel('迭代次数');ylabel('高通目标函数值');
8 b5 P {% M! B0 hfigure(2);clf;( x7 \* \' r- c; X5 c) P C7 E
plot(trace2(:,1));hold on;
2 P$ }! N3 V6 {plot(trace2(:,2),'-.');
% w. Y4 j; k# y' O3 R: B+ w' ?& gplot(trace2(:,1),'.');1 u! Z; y8 S/ Q3 ?4 @6 B
plot(trace2(:,2),'.');grid;
3 f$ x" c L: ~5 F+ V8 v3 flegend('解的变化','种群均值的变化') p6 W/ d7 E2 m: N( J) b/ s* c
xlabel('迭代次数');ylabel('低通目标函数值');" c( A/ b- f6 T$ p7 f! o
figure(3);clf;
+ ^' l; I/ {: C% Bplot(Highpass(v));hold on;# m1 l; V) Q, D# l" j; Y
plot(Lowpass(v),'r-.');grid;+ D) n d) j, L% W- B& G: a$ e
4 A+ Z3 A( t! T4 A |
-
1.jpg
(63.87 KB, 下载次数: 1023)
-
2.jpg
(67.12 KB, 下载次数: 987)
-
3.jpg
(47.82 KB, 下载次数: 955)
zan
|