- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
% h# L$ ]" q* M* Oglobal u;# b. h Y8 n# \
%贝塞尔函数求根
l, L% s4 k C) g7 U%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
" O9 u0 x) b3 ]. q: B% ^/ p( J: {9 \maxs=20;%要求的贝塞尔函数的非零根个数
$ n. R% U( M. r8 [incr=4.0;
1 a) O; i! J7 Z" p6 G% B2 [u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
& D7 g: D2 _, T4 @) c) Q$ @for s=2:maxs h& h8 `# B7 a$ j U& V
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解, N6 t4 l" {! C; s
end/ c5 } A: _3 v, }, w5 |
NIND=40; %个体数目40
3 [- S4 @. Y) G+ RMAXGEN=100; %最大遗传代数100* G% n: F. Y6 }4 m
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
# U- I! G/ o6 o7 c: ^' NPRECI=20; %变量的二进制位数5 |$ z6 Q9 V) d% D: @
GGAP=0.9; %代沟
2 v) e+ h4 { A! b. X' i k& E% ntrace1=[];
& `! L8 X3 K$ M+ F# [9 qtrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪/ V/ k& C% |. Z) n7 h& t( m3 a
%建立区域描述器
. a% p4 D( Q; C# c% Y- r0 ?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])];; r( s) M$ w1 d# ^$ d, z' E* |
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
' Q3 T! ? \+ b9 i% \( u7 Ev=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m). S3 i( R+ s) `3 F
gen=1; %代计数器( X- d+ X( ?4 L6 W8 e" n
%遗传开始
3 l- p% u O7 E0 v) Awhile gen<MAXGEN/ q# S- {4 B: G' v6 ~) }
[NIND,N]=size(Chrom);
8 Y# c( S, Z- t! f) S1 y5 B; }, t M=fix(NIND/2);8 T+ _! T! z O; D, v v
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
5 D# l1 Y2 u/ a2 a FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
* c- a6 g- c. m7 x8 l SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择# ^6 Q' J9 ~" O
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
$ s! `8 ?, e2 F/ f! r; O1 h FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
; [1 L: c7 o Z+ M6 D SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
: Y4 d9 r# f# W# e; O" o0 w& r SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并9 Z3 Z# Z' T- k6 ]; J/ t. l
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组- ^, a) n, I. a; B8 u* M5 h1 P1 \
Chrom=mut(SelCh); %变异3 m0 [. x- o9 l
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
6 X3 b0 R7 v0 Y& f1 M v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
s- V5 u/ }5 p' W, t3 U# Z+ l trace1(gen,1)=max(Highpass(v));
V' J2 T1 V8 _- S5 z trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));) [: M. g5 R' c3 W
trace2(gen,1)=min(Lowpass(v));# |1 b/ t' ]" Z) o: |- w* \
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
* `: P" H {5 g9 F' @: V& {4 c gen=gen+1;
j; t: X" ~( W1 m- F" Dend
2 u' q5 H4 H: r+ ?/ \, f, mfigure(1);clf;
3 C6 x* p1 a9 D1 h+ p, Aplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');' O/ W; S" S& x- ^. n
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;+ a! r7 n" B4 q9 ?: k( K3 P1 `7 ]* N
legend('解的变化','种群均值的变化')
/ G. z4 w% v3 y1 g7 D) ]: ^xlabel('迭代次数');ylabel('高通目标函数值');
9 c! R* Q- K! @5 Y0 X/ bfigure(2);clf;% w4 ~1 W/ R& n7 c) b! w$ _
plot(trace2(:,1));hold on;! ~8 N3 A' X8 O
plot(trace2(:,2),'-.');; ]5 y! g+ |8 I2 L9 k) x7 y- L
plot(trace2(:,1),'.');' A$ b* V1 g0 y; b
plot(trace2(:,2),'.');grid;6 L' l2 D' h2 I5 t1 l
legend('解的变化','种群均值的变化')
5 A& ?8 k% g( ^2 u% a9 Dxlabel('迭代次数');ylabel('低通目标函数值');
H% z l. d( O5 B+ k5 ofigure(3);clf;
, X9 R# r* I ]+ x( u {plot(Highpass(v));hold on;9 S. F* k' {. l7 t9 [- a
plot(Lowpass(v),'r-.');grid;& N$ v8 C) N: G5 r+ p( P+ \
/ ?2 v8 [: ?) v) g& L |
-
1.jpg
(63.87 KB, 下载次数: 1023)
-
2.jpg
(67.12 KB, 下载次数: 987)
-
3.jpg
(47.82 KB, 下载次数: 955)
zan
|