- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:% ]# J8 v% O0 j+ s' Y2 |
global u;) T0 ?) v$ K4 A7 _. m8 t; S
%贝塞尔函数求根+ P7 N( J# d! H, G" G1 U: B; U7 d
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
$ `. Q" v) u- t5 Rmaxs=20;%要求的贝塞尔函数的非零根个数. C5 n7 M& B& H
incr=4.0;9 y& ~: Q+ Q Z& C/ k
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)8 f: a1 T2 h6 ~9 f6 G0 @
for s=2:maxs
6 r7 K# f; ^- [! ^% r7 ~ u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
0 E2 @# P; Q. r) w; m4 Vend
R$ w9 h; j- V2 v0 ^" T- l+ @NIND=40; %个体数目40
) ?% F* G Q; b4 \MAXGEN=100; %最大遗传代数100
" D0 J2 n9 {$ {6 N2 t! U ZNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度' M. q$ f. X9 i2 Q3 @
PRECI=20; %变量的二进制位数6 Y8 w+ _3 K8 _7 i5 r+ G( Y
GGAP=0.9; %代沟
, z* t3 A1 g; |3 Q# c2 F8 dtrace1=[];" @) h' w! N* J" h7 F2 X' p# j
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪2 u1 ]8 Z1 n1 _0 s1 h0 P
%建立区域描述器
/ S& |' f8 d* |2 J2 `5 O- aFieldD=[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])];2 ] B2 `3 r# [% r$ t0 A2 X
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群* s! E* G) n9 B' s( O: f
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m): f+ h! v1 i+ Q; P6 b
gen=1; %代计数器' n1 g; b8 U* j# e# s. v% Y5 r; @
%遗传开始1 R/ U4 C4 t4 _( U7 `9 Z9 f- A6 C
while gen<MAXGEN
1 a- ~& C3 Y( V: }( D [NIND,N]=size(Chrom);
/ H& W) O8 W0 }! l M=fix(NIND/2);
/ o" | q/ i. W' u) a* R ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
: x8 e( R* l- T FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)% P+ ^; {% r+ d: D4 p
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择, L S5 E3 Y# t+ ^! ]
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
9 o* P" Q2 F' D \4 } FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
2 j; H5 c; S& d SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择8 d. ]% @3 r. w8 k4 g7 `5 ^: x5 N
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并2 N% q' k! |' r9 X W
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组. n/ ^5 N) b1 z0 ]8 b7 Y
Chrom=mut(SelCh); %变异
; Q" T- w9 T; c/ ?" p7 R) X4 b$ q3 D %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入8 j0 b% |4 n6 @' G. y! Q
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
0 c4 Q5 l7 }" ?. w# E) N: C/ S trace1(gen,1)=max(Highpass(v));1 M8 q0 k9 A/ R5 J7 M
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));2 U8 b8 M! d$ t( K) _& Y# ?
trace2(gen,1)=min(Lowpass(v));: J( c6 x' S5 ^- k: ]
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));* X8 |5 m8 a6 B4 {, x; S
gen=gen+1;! q- j" q3 a% }" j
end
" ^2 R7 q* t( l) g5 Yfigure(1);clf;2 d0 T. j; g+ ]! P$ B/ M) W
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
6 V E" m) Q lplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;4 F5 [+ f! p8 O; k0 x5 M7 w( v5 h
legend('解的变化','种群均值的变化')
1 s$ J7 @# S7 Gxlabel('迭代次数');ylabel('高通目标函数值');
, L; b# a" O8 G$ F3 H+ p$ lfigure(2);clf;' X" K% R. _ {. x2 Q4 p4 S
plot(trace2(:,1));hold on;
3 u' D/ S2 t6 [6 vplot(trace2(:,2),'-.');3 ^% G9 k- S @0 j+ \
plot(trace2(:,1),'.');
+ H& y( U+ s+ C" M0 `plot(trace2(:,2),'.');grid;
9 O `; e+ J2 f8 W7 w3 ~legend('解的变化','种群均值的变化')
: p. B( K5 [ u7 e5 L O3 nxlabel('迭代次数');ylabel('低通目标函数值');
+ Q& ~. s$ t& i- o t# wfigure(3);clf;! U/ {: A7 T! h7 h
plot(Highpass(v));hold on;) V e1 i/ i% D% n5 e& l& A
plot(Lowpass(v),'r-.');grid;. S7 G9 {5 x; o' p5 W9 a
" Y2 x" E& D, Q5 k: y
|
-
1.jpg
(63.87 KB, 下载次数: 1041)
-
2.jpg
(67.12 KB, 下载次数: 1001)
-
3.jpg
(47.82 KB, 下载次数: 971)
zan
|