- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:" h3 B: o: \2 Z3 K4 Y
global u;0 I5 V: G, K X6 Y
%贝塞尔函数求根: n# X8 I3 W: B0 ^
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根/ r# c7 b, \" B
maxs=20;%要求的贝塞尔函数的非零根个数
2 ^7 S5 [8 ?& m7 D+ Fincr=4.0;
1 g+ X, o0 H/ |% ou(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近); S; z- |7 V! d4 W/ O$ |5 A
for s=2:maxs$ Y2 V0 G# o6 b5 ^* l8 W* O/ U: v" a
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解0 ? y( M& ~" O7 K: Z! x; i8 L
end J" ]; \1 X) s7 ?8 D4 W
NIND=40; %个体数目40
; S, G- e2 Z7 _8 PMAXGEN=100; %最大遗传代数100$ E' V; Q+ A) a9 P1 c7 K
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
. z: X6 }8 k6 {& k6 vPRECI=20; %变量的二进制位数9 F0 X2 `, _& H
GGAP=0.9; %代沟
$ u; I4 u% M8 W jtrace1=[];& F! V3 f+ d+ o- i* u D: i. ~
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪# b0 Q, h( s8 m
%建立区域描述器
- @4 L6 Y2 |* EFieldD=[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])];( w" \6 |6 S" z; n5 u* P' `' r4 y
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
" [ m' x! b: ov=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
: x% G% Q0 G3 j$ g* w7 ?0 \* S( Xgen=1; %代计数器1 A- h/ S" z- m
%遗传开始 p: }) b) Z4 T- [+ e" s( T% W+ N
while gen<MAXGEN. V! o. o, [9 }1 d/ Z, j2 v
[NIND,N]=size(Chrom);; w) K3 a! C8 H
M=fix(NIND/2);
8 Q4 w4 ~% B9 \2 W% p/ n/ ^# y ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)' t9 H5 `+ a8 K; G5 o* x
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
( I+ o) w4 @$ d e9 J SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择* ~0 R# N( N5 B5 H
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
8 \# N1 e7 s/ o9 j FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
0 G8 _5 Y3 p/ ?. t$ ?# T SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择/ |2 I. g2 s% j8 n
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并( R) ^9 y! x* i7 l- \( ?, L
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组- m/ {- o. ]' v, b- ^. z9 t
Chrom=mut(SelCh); %变异
+ k- m& X/ Q0 b- g3 w; b; o %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
V& P/ ^/ f; T) z7 @' q8 a; }' z6 s v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
+ C( C. n, Z7 O) y3 p( Y f trace1(gen,1)=max(Highpass(v));0 S3 ^9 A* c" D P" v8 h5 s: p/ y5 l* X
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));% b a& }. p0 A( @ `
trace2(gen,1)=min(Lowpass(v));
5 j5 L |% n) u trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
/ P* U7 S* L& R K gen=gen+1;
+ e# T4 x$ n. c% @, i5 Qend
+ F! X: V: X P: i: [figure(1);clf;
& p) Z# T" q! yplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');* A" _/ m1 W1 o) S D3 u& ?* K
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;1 @- g7 Y6 b9 [) Z4 e" ?
legend('解的变化','种群均值的变化')4 q: E4 k: }$ w- s1 ]9 E, ?! ]
xlabel('迭代次数');ylabel('高通目标函数值');" V3 a* j9 v- p h5 K3 @
figure(2);clf;. v6 p v" E. X. \: M. ^
plot(trace2(:,1));hold on;
2 T& r d; G! E& |plot(trace2(:,2),'-.');
P. J, T- H2 }# V* p' U( Pplot(trace2(:,1),'.'); w* b/ W' I/ V9 l# s _6 m' d# ~
plot(trace2(:,2),'.');grid;
7 K7 O. I$ ]# x- N7 w8 G0 Y3 rlegend('解的变化','种群均值的变化')2 O, K# E, O% y7 b7 S
xlabel('迭代次数');ylabel('低通目标函数值');' F6 D! ]/ o! X& R" v
figure(3);clf;5 [5 W. k) E- `+ X0 L$ l0 N' K
plot(Highpass(v));hold on;8 _ Z, G f! t6 R6 O2 Y
plot(Lowpass(v),'r-.');grid;
- m) ~' T- ]. B2 H
! Q4 N" m3 X- n, C |
-
1.jpg
(63.87 KB, 下载次数: 1068)
-
2.jpg
(67.12 KB, 下载次数: 1017)
-
3.jpg
(47.82 KB, 下载次数: 990)
zan
|