- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:' R9 p, J- [( t. F
global u;; {6 X7 a" `( A7 q. @5 ]
%贝塞尔函数求根
; z: H9 ?7 V8 ]. c3 W%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根2 T) S$ c8 ?# S3 N' H
maxs=20;%要求的贝塞尔函数的非零根个数
7 v+ K9 f6 n2 [. O) eincr=4.0;: g4 S) q" N+ k8 ?
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近). T" s2 I+ N2 K: y' i8 ~. Y
for s=2:maxs4 Y0 l3 P4 o) m7 J) |
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
/ H: o3 ?$ W( A) j" |7 c: ?- jend1 j4 M, [9 m& G
NIND=40; %个体数目40
, `2 ~- ^7 X m0 a0 UMAXGEN=100; %最大遗传代数100% b$ a0 g. d% Q! L: W1 _$ k f
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
6 ]4 @: P" K6 n2 rPRECI=20; %变量的二进制位数% V7 s# {/ M+ @ p8 e& @7 m f
GGAP=0.9; %代沟
4 p" Y$ V; C6 G* K3 @trace1=[];
4 j2 ~* E$ f0 [- T9 o p5 Mtrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
# o p$ e+ _& `6 \, ]1 M%建立区域描述器; ^+ R6 n& n! P) ~& L. 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])];
5 H2 |2 d( f2 F/ i5 tChrom=crtbp(NIND,NVAR*PRECI); %初始化种群: W0 J) K! b& T1 Z$ |3 W0 e
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)8 E+ H5 j& \' f
gen=1; %代计数器
~7 b/ P. k: J2 n%遗传开始
T' Y$ H% ~$ F+ i" j; |8 ], f! hwhile gen<MAXGEN0 x) m+ x% ^$ z4 v) `+ E. G
[NIND,N]=size(Chrom);
7 H' U G+ f* y( [* \4 R! N M=fix(NIND/2);* X+ B" G4 O& D1 @/ a/ f
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)- i2 F- m: d1 \# I+ @5 m7 C' q
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
, G6 Q: p# t& |, r. b2 V SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
u4 ]# Z& r1 g: }1 H* b0 b4 z ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
& z4 l. V# g( P Y/ r# j FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
1 Y- |# h) K6 a% {' m SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择/ m; G2 N( X5 Z: }+ N
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
7 f: r' Y$ k0 Q& L/ K+ |& E SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
" M, B9 A" v( l3 w' e9 O4 v Chrom=mut(SelCh); %变异6 c5 c3 k8 @8 a! l2 H
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
2 u; v7 n, K1 |7 {2 F+ _ v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)6 K) Y/ y" E) g: e' E1 M N% X
trace1(gen,1)=max(Highpass(v));
# ^. g/ P- `% ?& i; @/ a: P u, b trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));- p) I9 |/ G' m$ S3 O
trace2(gen,1)=min(Lowpass(v));
: X" `+ b/ f& k% v trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));* B5 `% p [+ ?2 }; d" Q: {9 t
gen=gen+1;
% h$ {( j* S" C" O# B) Z6 mend
5 J, z) S$ {$ i" i$ ufigure(1);clf;
" c3 L! d. r; P2 @' p( Wplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');* V% f. h C. a) A( i$ _
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
9 m% j7 z6 L$ q' ~$ Klegend('解的变化','种群均值的变化')
9 N. T) y# T1 l& J( g1 r- x; |; x" Rxlabel('迭代次数');ylabel('高通目标函数值');
: h3 n% `; t- j+ tfigure(2);clf; r" s3 d5 ?$ c0 Z: {& z9 b
plot(trace2(:,1));hold on;- H3 W; X( j! g% t) ^/ ^
plot(trace2(:,2),'-.');+ ~. {7 ~" K$ q* ^/ v [0 G, W; D
plot(trace2(:,1),'.');8 `! a; o" E0 I! }8 r! s$ b7 u
plot(trace2(:,2),'.');grid;5 x! Z% i* m& K" {( q
legend('解的变化','种群均值的变化')5 r2 a6 O2 ]+ |) D6 V% ^
xlabel('迭代次数');ylabel('低通目标函数值');
1 z$ M4 |) r" i/ \7 `figure(3);clf;
6 X6 X) `7 M6 Q- H1 yplot(Highpass(v));hold on;
1 f% q! b& o. }, wplot(Lowpass(v),'r-.');grid;
3 M/ D2 X5 t6 l r, e' D& G( p" {! o9 M$ N
|
-
1.jpg
(63.87 KB, 下载次数: 1044)
-
2.jpg
(67.12 KB, 下载次数: 1005)
-
3.jpg
(47.82 KB, 下载次数: 974)
zan
|