- 在线时间
- 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: x* \/ F$ _$ _. H8 W
global u;3 w4 u* `2 f/ u2 |( H* Z4 l- f
%贝塞尔函数求根' z. F8 C# {8 p" n* u) l
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
' |$ U' W/ V/ {8 a& W- Imaxs=20;%要求的贝塞尔函数的非零根个数
/ T* N8 f1 j* i% zincr=4.0;
" S5 Y& }# ~- X4 Cu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)" {5 ~+ D2 S/ O) V E( L
for s=2:maxs
" b ] |- J8 P, {! T u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解3 a4 l! l1 D6 Z& B
end1 x4 ]0 l* m& z* r7 K7 B$ H
NIND=40; %个体数目40
1 Q9 s# Q0 L( F( U1 p9 nMAXGEN=100; %最大遗传代数100
, X) D) M/ t% u7 ^2 ]NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
( d+ N' q/ c. f# C4 i2 t) d rPRECI=20; %变量的二进制位数
4 w! o4 i, O! X' cGGAP=0.9; %代沟
8 M# c& \7 _7 s2 W# z0 ~% ktrace1=[];
% z4 k0 k$ U# g9 D, [trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪# r) q( y. [! G0 P, I5 X, T2 f4 B
%建立区域描述器
& b" C) B1 K- @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])];
" J5 b1 [* O1 ^ m' c: { m: iChrom=crtbp(NIND,NVAR*PRECI); %初始化种群8 X8 ^1 J' ?+ v; \8 f7 g! y$ r+ O5 Z
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
I. [+ X, r& lgen=1; %代计数器
, h, D# F6 m9 r9 U7 J%遗传开始
0 d h) S3 P, n2 s/ R, Ewhile gen<MAXGEN
3 j: p. m' w) w* Y' X [NIND,N]=size(Chrom);6 R- ]* @7 g5 Z5 P0 P9 x
M=fix(NIND/2);- M- C& o h. h5 S: m" _# z
ObjV1=Highpass(v(1:M,); %分组后高通目标函数值(单位m)/ T/ q/ u) N) y2 P8 Q; ^5 ^$ l
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
Z! Q0 C6 ]: ?- M SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择: I" k8 P* D" X- L6 g/ Y, ?4 ^: e T: S
ObjV2=Lowpass(v(M+1:NIND,); %分组后低通目标函数值(单位m)& l% P0 m$ C% R( H! }4 ^) e0 F
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
, @; y, p$ ~7 [7 ]- B* I SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
' R; f( _. Q, r, w% P; K SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
8 k7 C$ e1 o# |4 f( s2 G SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
) s' Q7 Y1 K" {7 | L+ X Chrom=mut(SelCh); %变异
1 J, b ]" R+ g. p. i %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
0 ~9 H6 C5 _, Z v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
7 W) y1 z# I; O. _+ @: C/ L trace1(gen,1)=max(Highpass(v));
6 ?& r% z) G k4 D5 ? trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
- a8 U* f: n9 w trace2(gen,1)=min(Lowpass(v));4 ]4 g# w6 {- a- a) q5 t' ?
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));; E% ?& m5 R( N3 x& `
gen=gen+1;6 q5 X) K/ N, c( |9 c% k& D% w! d/ j
end
/ h# P0 e1 @( yfigure(1);clf;
( @+ K5 ~5 I% T* mplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');$ h5 X9 E$ w* R! D% ^$ a
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;- x! O9 M: }* j
legend('解的变化','种群均值的变化')
6 E9 W/ K2 s4 w. C! Nxlabel('迭代次数');ylabel('高通目标函数值');
9 N* F- A; m! Dfigure(2);clf;
( S, [9 G0 w0 ?* e- kplot(trace2(:,1));hold on;
1 m7 n& E* \6 P Aplot(trace2(:,2),'-.');
4 o! {3 N5 N5 fplot(trace2(:,1),'.');& Z) Y2 o7 E, }1 H% _* I2 \
plot(trace2(:,2),'.');grid;
3 [) I, [( s8 p/ v0 A' \- [legend('解的变化','种群均值的变化'), h: I( Z$ a( y
xlabel('迭代次数');ylabel('低通目标函数值');8 z4 x( D. d; j3 x l2 G) l& ?' ^+ R
figure(3);clf;) B% c; e" g; p2 X' q8 A
plot(Highpass(v));hold on;
2 I( n2 ^4 M0 J' M! Q+ Oplot(Lowpass(v),'r-.');grid;9 \, o$ g. B, u, l% F% F6 G' _
8 J; W4 E' s5 G/ q: s
|
zan
|