- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答: D+ O5 R! j" S! J* b, D6 T
global u;
: V0 _. }0 D: [3 p: I%贝塞尔函数求根
) ?- T/ j/ O2 a%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根6 Q, l( c( m6 d" G* t5 ?; Y
maxs=20;%要求的贝塞尔函数的非零根个数
1 A/ {; u5 i# _, z. A. y: B2 yincr=4.0;
- G1 w" A2 T" u; Y3 {: e, ru(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)# K9 p. E! m, M; l
for s=2:maxs
4 k- w! U8 ~' I! m u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解# B! f& F1 T+ B2 @
end
' `* s, n3 P5 N- t& R$ p: VNIND=40; %个体数目407 f+ v6 V ?- i0 t* [. c
MAXGEN=100; %最大遗传代数100
9 i) t& \% \9 `; sNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度+ K# y8 c2 j5 n3 N1 w9 `4 i" f
PRECI=20; %变量的二进制位数
7 {1 b4 a& l7 S! iGGAP=0.9; %代沟
& u5 ?2 K5 ?7 y: a0 m3 Vtrace1=[];- c" @+ C3 \& o, [% m. a( q/ E
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
# \' Y) l4 r1 G0 i" Z& C%建立区域描述器" B& k* {( [; m5 `% R
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])];
. n# Z- d) \+ _4 {3 M3 ~Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
# a/ `, u' i) l- ~3 Gv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m): Q, ~& ]8 S' \" S
gen=1; %代计数器
, n# ?; ~5 y# J% {; a2 m# |%遗传开始% Y& ~& u. P! e! `9 |8 k( T+ [
while gen<MAXGEN* `# S& L' a3 m! Q5 g ?
[NIND,N]=size(Chrom);. h$ U' ~* e) L& _
M=fix(NIND/2);% O6 f$ y: \/ s# O/ ^$ p
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
' `! S, ]) J& T7 p: l FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
$ O/ I1 ~+ v3 D2 ~ SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择' v$ n" [/ J# u6 C1 b- L7 ^# P
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
: f8 w! ^) t! y; ^7 W FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)7 E- `5 N' p; C7 ^; S/ \1 u D
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择! h# U; b5 d+ v& `8 f4 N0 S
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
" [) r3 J) M* Q0 Z/ I& N SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
: |5 J* @, K- M0 L Z# |& @ Chrom=mut(SelCh); %变异; U% ~+ R" N5 }# Y5 V
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
" z* Z% v5 ^& S, H, G, D v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)1 p! s6 f/ {, D1 b1 @$ h* u$ S
trace1(gen,1)=max(Highpass(v));* B: t& Q4 R7 w' ^" Z& l
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
* ]* O4 f2 n1 m, S; f% ] trace2(gen,1)=min(Lowpass(v));" U3 n& L/ f, i7 Q' [/ ?
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
% C" ~' r4 ?8 f0 k+ `5 T4 [ gen=gen+1;1 z3 t3 Z2 }8 _+ K
end
: ]; W8 ^; V% a7 h8 M9 b9 \( ffigure(1);clf; u3 a) F+ f; t; m: B$ X
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
+ o% a/ [8 v7 N3 Z& j } pplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
2 k' f# t$ h8 \$ Q; Plegend('解的变化','种群均值的变化')
, Z# @7 Z r) Jxlabel('迭代次数');ylabel('高通目标函数值');
5 o) {* d7 N& R6 u, z$ I% W: }figure(2);clf;5 `: f1 @5 o5 c4 {
plot(trace2(:,1));hold on;
7 f c) U9 e5 f0 ]$ N$ t# J( r+ n+ lplot(trace2(:,2),'-.');# C" c0 z: _' L. m* x
plot(trace2(:,1),'.');
! L* O4 R4 d _2 C. yplot(trace2(:,2),'.');grid;
' ~* r; k* c. l$ U+ blegend('解的变化','种群均值的变化')) H7 Y+ _9 ]* Z5 u& T
xlabel('迭代次数');ylabel('低通目标函数值');
2 K( |% @; @; J2 I _- G: d$ s# E6 Mfigure(3);clf;
7 V- b( W. F* I1 [) ]plot(Highpass(v));hold on;
" U& O* g7 X0 }. G; t& splot(Lowpass(v),'r-.');grid;0 T } Q- b; l+ U$ p# z4 k
" N4 d+ s' H" b. Q; s5 l1 ~, s |
-
1.jpg
(63.87 KB, 下载次数: 958)
-
2.jpg
(67.12 KB, 下载次数: 924)
-
3.jpg
(47.82 KB, 下载次数: 894)
zan
|