- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
( M4 A6 R/ F/ ]; Uglobal u;
u& V/ `% X W0 {%贝塞尔函数求根& {, l _: [# `% O! K* L3 n* u2 r
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根4 s' A! \; q- s
maxs=20;%要求的贝塞尔函数的非零根个数7 ~; i, \; ^5 E% H
incr=4.0;% ~# D% W; X" T( o1 u' ~
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
1 z J o. x6 ~ O0 |$ @for s=2:maxs+ q3 ?& c9 u3 ~. B, c% Q5 q
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
: N/ M( I7 H; A4 }; Y, g2 mend
9 E* F# |" c& K3 `NIND=40; %个体数目40
# u' S; C0 i3 j! k$ ]MAXGEN=100; %最大遗传代数100+ J% f3 X' G% B
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度4 A" o: y0 J! @) F# d$ ?
PRECI=20; %变量的二进制位数
, N- }$ ?/ J6 A6 s. e, M9 l* YGGAP=0.9; %代沟
) j, x" ~" j. d2 |trace1=[];
- o5 g9 b" Q1 ?- B. u1 qtrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪) Q- g5 m' M' [, K
%建立区域描述器, K1 z( E, L3 F! i9 }+ h
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])];
9 C6 }7 {% S9 G2 N9 z9 E3 p" LChrom=crtbp(NIND,NVAR*PRECI); %初始化种群
1 C2 t, f; b4 Z# h- cv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m). \, Q& w; o7 X2 m' q* a% W8 c
gen=1; %代计数器
3 S/ I* Q5 b( f$ y; k. H# D+ s+ S%遗传开始& X. v2 @' z/ J4 K
while gen<MAXGEN
$ Y' j' l5 y2 z |( L [NIND,N]=size(Chrom);
/ o8 K6 L( J; ^ M=fix(NIND/2);8 {' ~7 v2 w3 n" ~' d3 G
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)* [9 U* h3 \* n% M! S
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
/ P" s1 b- P/ |! @' k' a3 q7 W SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择& E+ j1 o0 t+ w( |
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
# K; K, Q! `1 N FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
& ~$ Y3 {: S7 w0 w* g SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择4 z1 R: `" W8 E# v4 D
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
6 u6 t7 t/ x [7 ?8 k) P6 P! w SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
9 G" T& A$ V! G# y F Chrom=mut(SelCh); %变异/ m8 z. X9 T) ?. O; c5 P. F
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入( s z: @! V- r: R) z1 ]
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
6 I7 P& _2 d8 @" r: t trace1(gen,1)=max(Highpass(v));
: B: p" R1 Y5 O2 B Q9 N trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));: ^" x! J: n/ Q, T6 z4 s
trace2(gen,1)=min(Lowpass(v));7 @2 V1 k/ W6 S1 o
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
8 ]9 }, i# ^0 Y gen=gen+1;/ E* h' J/ v) K7 P4 N
end' O" S) I' W+ ~" o5 ~& k
figure(1);clf;4 _4 X7 m# p: Z
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');3 u7 s7 R$ T! r/ \6 Q
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
! t) J0 H; T2 l# Y, V" clegend('解的变化','种群均值的变化')
; Z) l9 t! U+ z* kxlabel('迭代次数');ylabel('高通目标函数值');
7 T6 P* N" ?8 b& Gfigure(2);clf;. ^! n) Q$ K( v) g
plot(trace2(:,1));hold on;* ?/ [8 |# }& ^ e: [" d4 O& }
plot(trace2(:,2),'-.');
. A) u; ?; o) J" F4 O0 d5 v; Iplot(trace2(:,1),'.');
* a2 b" i+ d' F1 Z$ z! }& Q! nplot(trace2(:,2),'.');grid;
. O& m# |/ s/ ]! E/ e$ zlegend('解的变化','种群均值的变化')0 g: X5 \/ h5 T% b. ?3 `
xlabel('迭代次数');ylabel('低通目标函数值');
6 r, w& P6 `. U7 I1 jfigure(3);clf;* H4 ~5 L6 |6 P% A$ j& W* V1 d2 S7 q
plot(Highpass(v));hold on;
4 \6 \9 R' K+ @$ J r7 K, nplot(Lowpass(v),'r-.');grid;1 o0 {0 K# z' X0 b" ?% M
" `- Q& r9 {( s3 T: ^9 W# `% A
|
-
1.jpg
(63.87 KB, 下载次数: 1023)
-
2.jpg
(67.12 KB, 下载次数: 987)
-
3.jpg
(47.82 KB, 下载次数: 955)
zan
|