- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:0 J+ _/ {% J2 V ^
global u;! ^0 h J' A$ l7 [4 A2 h0 J
%贝塞尔函数求根* D, g0 N$ X, n& z& p
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根9 V0 R0 D9 I' W+ J( G; }
maxs=20;%要求的贝塞尔函数的非零根个数6 Z& J! Z4 b' s; G. \+ a2 L, o
incr=4.0;! B2 ]6 s6 g, j! x5 B
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
+ i) S: w( G! @- s4 U, rfor s=2:maxs
5 `3 f B5 F: i8 @ u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
, k* y0 y! o- a1 `& R- cend
+ I/ W3 p W9 H {& q7 oNIND=40; %个体数目40: ^6 W0 B* P) \- Q ?
MAXGEN=100; %最大遗传代数100
5 m- k: ]! \+ _2 ^ \: `! K! ONVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度4 p, |3 `0 X: y2 ~% [
PRECI=20; %变量的二进制位数
8 N* r9 V8 v! Y) F0 VGGAP=0.9; %代沟
& i- M$ M6 J& |8 e& Dtrace1=[];
! O! N$ z D4 f) Itrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
+ A; c `1 `8 y$ s& n' D1 [%建立区域描述器9 m& O$ {: ~: n4 e3 @; Z# w
FieldD=[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])];0 m7 @ g) q( N Q* V
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群% g- {# ^. _0 Z) H9 n; O1 L
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
" n6 C, D1 H8 D1 |: @gen=1; %代计数器
1 ]7 G$ x+ B, p- D1 N! ~! ^%遗传开始
# e2 `9 r/ m5 A* j- k1 j9 iwhile gen<MAXGEN
5 h4 z/ A p7 ~: c. g [NIND,N]=size(Chrom);
* [ I6 Q7 a# ~3 L8 v M=fix(NIND/2);
+ j9 J5 G/ l- J% g' g7 j ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)2 z N1 P' n- P- J1 b* q/ Z6 ~
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值): t$ [( r- O2 N+ v5 ^! s
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择$ q) L4 v+ o( ?, t/ v" S7 @
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
: @# J' L0 y2 O1 Y FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)! ]" d$ i3 ^( [; P: d. _
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
8 T& `1 A, E% U' S+ t SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
+ Y( D& z. } Z& G C SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
3 z3 z: z! X: T/ @ L Chrom=mut(SelCh); %变异
e- |' l" f( `6 ] u" K- E" U1 T %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
9 K; h8 A9 N' J; ~9 T5 K v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
" W6 H, V8 [) T& K% p trace1(gen,1)=max(Highpass(v));
9 m. Q3 @/ v) s2 G7 T% t4 ?' S trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));6 k$ ~* ^, O4 H
trace2(gen,1)=min(Lowpass(v));
- `6 ?. u5 Y; G- T trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
0 N. D1 I2 y9 X ~. Z gen=gen+1;! y* X: s3 s, O) t# g8 D
end! s" @9 }/ [6 Y" |, |
figure(1);clf;% M& U7 E3 Q: I- q+ |
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');& |) u2 ^! [0 ]# A6 F; _. }0 ?2 n
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;* B% V. G" ]1 c
legend('解的变化','种群均值的变化')
5 \7 K) a' z/ [: t3 lxlabel('迭代次数');ylabel('高通目标函数值');% _# p& [' k n. \
figure(2);clf;
! Z# W2 E' P# J, o& U" xplot(trace2(:,1));hold on;
% I& F+ ?- `1 hplot(trace2(:,2),'-.');8 c+ B/ s+ H: B# U a" ?9 _2 G) h
plot(trace2(:,1),'.');
( K8 L# D; E0 Pplot(trace2(:,2),'.');grid;
2 M! ~4 J4 q( Slegend('解的变化','种群均值的变化')
9 U1 f* i' Y; u0 E4 l$ l7 s4 wxlabel('迭代次数');ylabel('低通目标函数值');
) ?) @: S7 `* k3 ~: M* U1 Afigure(3);clf;
& ]% H3 m5 d8 i: n8 O6 J- o' A0 }plot(Highpass(v));hold on;
0 l" d6 `2 B% c' Bplot(Lowpass(v),'r-.');grid;6 ^; H V: t1 g! i/ I/ \8 O
% n) w! {0 ~9 R/ T) ]
|
-
1.jpg
(63.87 KB, 下载次数: 1042)
-
2.jpg
(67.12 KB, 下载次数: 1002)
-
3.jpg
(47.82 KB, 下载次数: 972)
zan
|