- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
+ F( x& p5 A9 p- p: J5 A/ x. V3 _global u;" U7 k1 i* H9 { _& {+ d& o& y' W" ~
%贝塞尔函数求根
* E, B5 L: V; t( K9 d%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
' E: G6 }: G8 S$ J/ V9 Y5 @maxs=20;%要求的贝塞尔函数的非零根个数
8 }) A* V# I" H( @' A; _incr=4.0;5 S# } E/ n* v( Y
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
: ]# Q" ^" _; g" e8 qfor s=2:maxs' r: f2 w1 i) i8 \6 _8 ?2 D1 p
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
$ ~/ V+ `/ ^$ t* Yend7 ?1 {3 j$ G/ }9 U& f
NIND=40; %个体数目40
' Z8 I' ]8 C) [0 e6 h7 AMAXGEN=100; %最大遗传代数100* A4 Y9 W. ^ O( s! k7 ^
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度9 @0 [9 q) P7 w
PRECI=20; %变量的二进制位数
7 z/ A/ f% y; J8 Q+ E! fGGAP=0.9; %代沟
4 c/ ~ y6 t# Y3 q2 k$ Rtrace1=[];
- t# n4 A) d4 n0 D/ Z" gtrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪# j8 x& u9 }: L C) t& }9 F
%建立区域描述器
) {6 f% G& E* y9 \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])];" ^" m# V5 X) n, c
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群- |0 V+ J& U9 }% N
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
) l/ b' [+ W# I5 r. ]gen=1; %代计数器
Z; L4 c9 ^, {( P3 G%遗传开始; `# v0 D3 f! e% N/ t4 Q3 G8 X
while gen<MAXGEN
; a0 Z j- X' \ x! m [NIND,N]=size(Chrom);
. w" {( Z) x. h- s! O" x$ e5 E M=fix(NIND/2);
6 z, P0 k6 _7 }/ o ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m) @& x7 \& Z4 B7 |2 w& u
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)) u( y- y K( r' `& K7 N* n7 z
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择. I# G* N" S$ L! u! e4 H F8 B
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
4 S1 K6 z, Q3 ?! y3 E0 }: W FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
6 N: }: o, b R SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
- ~8 X" N! H4 j5 \- O1 x2 n, i SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并/ H. w, Z" s9 n% |0 Q9 n& }+ f
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
9 J- }- r6 s! d! w Chrom=mut(SelCh); %变异
- ~2 c- @5 w, \. [ h+ [' e- G %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
0 Z& U8 P' J( c* b7 i2 h; g- ` v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m). f0 o/ Z& \9 c Q* o( A: B
trace1(gen,1)=max(Highpass(v));
3 s' e: e3 N/ l. \. [" U trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));1 a% F* V5 V0 Q) Y' R
trace2(gen,1)=min(Lowpass(v));
$ i' W3 _6 o& D, Z i; R trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));) \( z) C$ a: I. i: p% C0 Y
gen=gen+1;
/ |" X" }( ^2 o% Send
, A: J e) |* I# @( H6 P* zfigure(1);clf;
' H1 I; a2 H0 |0 W8 n3 x( ?plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');! D9 I. w5 x6 y. l+ m
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
% N% P3 h1 k! l* V6 A( P& ?0 `+ w# y0 q, blegend('解的变化','种群均值的变化')3 h, M3 `- M1 b1 x
xlabel('迭代次数');ylabel('高通目标函数值');0 G# q* W+ J% G9 N
figure(2);clf;
' D0 P* K) p- P2 Wplot(trace2(:,1));hold on;, l; a; f5 w3 o7 D
plot(trace2(:,2),'-.');
- K: Y- A, ?/ D5 yplot(trace2(:,1),'.');/ y% }) ~8 M# M; u
plot(trace2(:,2),'.');grid;0 _# s, C* ?. Z6 n6 f1 X
legend('解的变化','种群均值的变化')
" p% l. }$ L4 J# C* ]" L; Y6 Nxlabel('迭代次数');ylabel('低通目标函数值');
( l- D8 H; p; |) efigure(3);clf;( _7 d3 m$ C& R
plot(Highpass(v));hold on;" u+ f9 Y, n; b7 k
plot(Lowpass(v),'r-.');grid;
" K5 ]3 Q7 [' ^+ S \# v
/ |. y8 t: s6 g3 N: } |
-
1.jpg
(63.87 KB, 下载次数: 968)
-
2.jpg
(67.12 KB, 下载次数: 932)
-
3.jpg
(47.82 KB, 下载次数: 905)
zan
|