- 在线时间
- 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% y& J8 v2 u# hglobal u;9 t P4 W, N$ H; w8 o6 M
%贝塞尔函数求根
5 O5 h2 v+ d7 y%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根" R/ F/ D* a1 j2 N
maxs=20;%要求的贝塞尔函数的非零根个数. l- i, s; Z1 r, c( G+ r
incr=4.0;, V W* c% @: S
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
2 i) E1 ?9 P, zfor s=2:maxs
2 {. Z$ j |$ d; M- d; |5 v u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
: ^& s1 u3 q; M Oend
+ g1 x2 z; s& p. GNIND=40; %个体数目40
$ @/ F% k" j$ g$ x7 oMAXGEN=100; %最大遗传代数100
- q, L( L- B$ b& DNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
: U* Z! X7 Z0 iPRECI=20; %变量的二进制位数3 G$ ^1 [+ K% o/ h& M% p% Q! @
GGAP=0.9; %代沟
* g0 i* {+ K E5 C7 |; Ttrace1=[];
8 ?' l3 o# `( K/ a$ d( Vtrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪& }3 I+ z* `" T4 @6 R
%建立区域描述器0 U5 O; `8 l! H% z O/ O
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])];) G ~8 a+ w1 K5 ], v. B
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群8 c; r% e) i' m
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)0 |* }7 y6 g+ f
gen=1; %代计数器
: ]6 k- ^4 [$ m9 v. n2 f9 i. P%遗传开始- I3 _/ ?: `: X T+ K
while gen<MAXGEN4 I7 O& }; n' x, ~
[NIND,N]=size(Chrom);* `1 S* Q( T) Y M0 s. D
M=fix(NIND/2);2 ?& {% }+ `+ Q) i
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
6 t) Y [% N7 |: y, @ FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)$ ]. E f; V5 _8 g. A5 T
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择2 v% h! i# |+ {2 T( d+ l0 e4 n% e8 i
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
: u" Q- I# \" g( q9 f FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)% o' E0 t5 y( a {4 I# S
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择" y. o+ ^, x8 r P+ ~( L. C
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
: b: Z7 `6 k9 i& O SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组$ {' K. a3 |7 I+ T9 ]
Chrom=mut(SelCh); %变异
/ p- m4 {( ~: H! s %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
$ s4 }. [; ^* N7 c v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)0 m6 [0 I& f5 ]5 R8 e- n$ X% R
trace1(gen,1)=max(Highpass(v));
# \+ d1 [+ L! m) b2 l. k; C trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
% a: C) G' m+ X trace2(gen,1)=min(Lowpass(v));- n: c1 T' L8 V# x
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));) m: k" e1 I2 a; B
gen=gen+1;
X, ?# ]- N0 S0 U! n; ?1 q7 ~( Qend
# o6 a/ {/ @; v' I) _7 |; m5 jfigure(1);clf;
! W' \/ h) ^# |; \+ {plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
+ u! ?& L" f3 G2 n' Hplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;( p" l% K, X. K" Q8 R4 c8 _
legend('解的变化','种群均值的变化')) s: j, \& c: n B+ h6 `
xlabel('迭代次数');ylabel('高通目标函数值');
9 j3 g6 h9 N: Y6 tfigure(2);clf;# l: n) j$ r6 l5 P
plot(trace2(:,1));hold on;4 ~: b, C3 e6 X6 e) Z* u/ N
plot(trace2(:,2),'-.');
P* y% \1 B3 Q3 A' \, y6 N0 `plot(trace2(:,1),'.');4 b$ \6 `& X* V0 f$ A: ^
plot(trace2(:,2),'.');grid;
8 M! i8 Q/ {: ]( ?7 a6 zlegend('解的变化','种群均值的变化')
3 o, n! Z; \8 {7 o6 z, |xlabel('迭代次数');ylabel('低通目标函数值');
) [( B$ ?- v" afigure(3);clf;
$ S& f* C V7 z" s2 Q. A. a5 _plot(Highpass(v));hold on;3 I% c9 v+ ~& [! Y
plot(Lowpass(v),'r-.');grid;
# n9 Y9 q: I; r e& Q& ?( V- @ W9 l0 x& u8 O
|
-
1.jpg
(63.87 KB, 下载次数: 970)
-
2.jpg
(67.12 KB, 下载次数: 933)
-
3.jpg
(47.82 KB, 下载次数: 907)
zan
|