- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
: ]$ V* F8 h3 X. f" ?$ \, w7 \global u;. `! H& J8 u8 c
%贝塞尔函数求根
+ J5 x( z9 m0 f; ^5 T%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根4 P2 \) B' V5 s9 T
maxs=20;%要求的贝塞尔函数的非零根个数0 z5 K" B6 c" o2 o2 d6 S
incr=4.0;4 E! I6 h# q6 t3 w3 P$ q
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
# I& W+ z \' ^# f+ I: R) e) hfor s=2:maxs+ p2 m/ w: F: h# f
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解0 N1 L* a8 w! R9 x7 s
end8 r1 I5 K2 i9 P( ^
NIND=40; %个体数目40
9 {7 y4 e# T( ^8 k* c5 gMAXGEN=100; %最大遗传代数100* N; T) N) E: n; b) m0 X
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
: w7 d' R% ?( y y0 GPRECI=20; %变量的二进制位数
; o* D0 M' k6 f1 c& XGGAP=0.9; %代沟
% ~* u/ U; i& A" Y0 _trace1=[];& G/ y* ]$ r: R# \* O$ {7 ?3 x
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪( O# ?% o# S9 J0 E$ u& a6 m
%建立区域描述器
+ G9 f# e& E, I! f- p0 zFieldD=[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])];* O5 Y# E% e$ ?
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群 z B8 J+ i. l4 ^9 K
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
) A h) q( F; Y; T* ^7 J: Rgen=1; %代计数器
& Q5 f R5 I/ f& a%遗传开始7 g2 _+ B. O B$ W. K" a. h
while gen<MAXGEN/ B6 \# y2 Z0 V, i
[NIND,N]=size(Chrom);4 y) q) Q a# } L4 k1 g4 f
M=fix(NIND/2);
8 ?9 D& Y1 d8 H: @0 s5 L ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)( a, ?' Z/ [6 a1 }. L: F7 k
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
. J- A( r% N& X `) h5 U SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择! B1 ~5 ?3 r" f& \) e1 |9 `
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
& D2 @: p C/ A+ b6 {6 i& u FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
2 V, ]% ~# \! @1 V' Q, k) x SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择2 E* w* M! a9 R# g4 H: Q8 K
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
* U1 ?9 h' a3 r+ O+ t, m SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
7 W7 e2 n/ k1 R# n4 ?( N8 o5 c8 q Chrom=mut(SelCh); %变异: v, g" a* I$ k. r/ y8 z
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入! G3 M6 T& n7 P
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m); j0 W! a6 G, c6 x. m: r
trace1(gen,1)=max(Highpass(v));
8 d9 G$ `9 V# t( P- j trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
7 d- t" u; E& L/ u# e, }: `: F trace2(gen,1)=min(Lowpass(v));
" P; S8 }( P1 Q% i4 B" F" B; y trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
6 p8 Y- e. V& v, i) V/ T gen=gen+1;
/ m2 y0 f& H: H& Z0 I$ U: x9 |2 Zend
* a: w0 a, H# v5 n( jfigure(1);clf;! R4 ^4 B4 K1 K& g
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');( [! {9 w; r$ z+ \3 h5 |, B
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
! K" i: x( s( A; O, q, \legend('解的变化','种群均值的变化')( n' k( I# q: \( Q7 L' O5 |
xlabel('迭代次数');ylabel('高通目标函数值');; T9 }0 k3 E N4 Z* J, U
figure(2);clf;) s6 z/ x3 J/ M7 @
plot(trace2(:,1));hold on;
( e- d5 [- j& I: bplot(trace2(:,2),'-.');/ u( w& f+ |) ]6 R5 G" ?
plot(trace2(:,1),'.');
" g0 v" s7 w' J, n2 rplot(trace2(:,2),'.');grid;
/ v# [) Q: Z$ Z' B1 j8 ?" I [legend('解的变化','种群均值的变化')& C7 p5 \8 @! }% w' \/ f- I
xlabel('迭代次数');ylabel('低通目标函数值');* }+ S# V5 j: f+ d* s
figure(3);clf;
0 y- i/ N9 f8 ?9 {- zplot(Highpass(v));hold on;
( V4 Y% ^! v9 j' }- z E5 \5 Rplot(Lowpass(v),'r-.');grid;
1 U' k3 w% A% x
+ ^7 ^3 Q3 Y9 P3 E" `# y |
-
1.jpg
(63.87 KB, 下载次数: 1030)
-
2.jpg
(67.12 KB, 下载次数: 995)
-
3.jpg
(47.82 KB, 下载次数: 964)
zan
|