- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:( a) i+ Q [7 b+ j/ b
global u;
; W+ y; S2 j. {# n0 w%贝塞尔函数求根
7 O. L+ Z, i) a0 b( b%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根! _. V7 _4 w0 F) x
maxs=20;%要求的贝塞尔函数的非零根个数
& d; X( ?3 ?" e# Jincr=4.0;
' c- @9 [& H _' M, `. ku(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
' z- W& O9 B; d0 H5 J( l; c" pfor s=2:maxs1 O+ _, J1 l$ _4 ~' q4 v1 s8 u
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
3 P; }. _/ u& V/ t/ j" aend
/ o0 h+ F8 C& aNIND=40; %个体数目40
6 I" P. j% W- Z; a5 QMAXGEN=100; %最大遗传代数1002 }# L# Z$ Q5 L. s; B
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度/ r2 B( o7 n' k, M) a) Z
PRECI=20; %变量的二进制位数; Q" q- O/ @' C. z2 u3 c5 B+ v0 a
GGAP=0.9; %代沟
# r; q: C' V8 x( D# Ntrace1=[];
9 H2 r* E* a( ptrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪# G# f$ k5 r9 w( _# v& |
%建立区域描述器# X" Z( |3 G ~
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])];
% J) O# ~8 i2 @" t) GChrom=crtbp(NIND,NVAR*PRECI); %初始化种群
. s; n2 X3 l$ e, P( wv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)! _: ]; Z2 ^4 n& m# ~ L
gen=1; %代计数器
5 N1 q( r F, T F%遗传开始
2 w% {8 ?' G& v) w( l v; Hwhile gen<MAXGEN0 N7 w" i6 ]! U: @' d; F1 y; W
[NIND,N]=size(Chrom);+ R0 ~0 j J( F& [% k. i; f
M=fix(NIND/2);
7 U$ g0 d) n8 E ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)% [3 X l- g+ B2 l. K
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)8 V- b* s& u3 n1 f( }8 \& i
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
5 D, D% {9 Q: k N. I/ Q ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m); [+ s T* l% F t9 ]1 N- S
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值). s5 C7 }$ ?8 _5 ^4 Q2 G0 E0 b
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
- M! B% I% g4 F8 I SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并) n7 R. U* _3 G" f' X# y
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组7 E; | V5 P( k
Chrom=mut(SelCh); %变异
' ] Z9 u: a" O8 U3 a6 x9 _# | %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入; c! G ]9 }; w7 z% q x, n5 \
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
/ u. K# w* ~' \$ W! ~ trace1(gen,1)=max(Highpass(v));
2 S0 _9 W0 J5 z9 w3 H trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
4 v7 _! X v8 Z( B1 H0 w- S trace2(gen,1)=min(Lowpass(v));" Q# w) Z0 a: Q$ B' l& {$ O2 U
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));9 u" Z9 E3 \/ M! V, q% G9 R" D8 Z
gen=gen+1;9 h0 ^; r' V( D1 j) \7 d4 e7 {. y8 I
end
: L; x1 | p1 I7 X( pfigure(1);clf;
, L, n* ?2 {, M3 |: `/ G2 p; Xplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');+ X# a( d+ b& T7 @1 `
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
, F! [ x8 o8 t! H5 o, Vlegend('解的变化','种群均值的变化')( a& W. P$ B7 g! d, S
xlabel('迭代次数');ylabel('高通目标函数值');
, [8 D8 R+ }& K$ Afigure(2);clf;' ^; n2 N' D; z! p; r
plot(trace2(:,1));hold on;3 |; r, Y( a+ G+ J& d6 x& w, J
plot(trace2(:,2),'-.');5 \' ~) [% C: D
plot(trace2(:,1),'.');$ u7 L# q3 c4 W v- z2 y
plot(trace2(:,2),'.');grid;) y" o8 e5 i; G
legend('解的变化','种群均值的变化')
8 P$ ]/ Q- k1 h2 Lxlabel('迭代次数');ylabel('低通目标函数值');; z% d/ L m2 C+ `" F9 S/ I
figure(3);clf;
: V3 J1 y- E2 c- ^9 w) eplot(Highpass(v));hold on;
2 F. v: \! S* J, `. Jplot(Lowpass(v),'r-.');grid;+ ^3 g3 q7 x* G" @* T) \: l" B8 F6 [" A+ k
4 F! H& r: M y0 W/ R( c4 n |
-
1.jpg
(63.87 KB, 下载次数: 1042)
-
2.jpg
(67.12 KB, 下载次数: 1003)
-
3.jpg
(47.82 KB, 下载次数: 972)
zan
|