- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:9 r; B% L! r8 h/ S, ]) s) n+ I
global u;
5 x1 E% j. _5 }- O6 X, s0 z9 d! h%贝塞尔函数求根# @* V- R m% [
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根* k! ], D4 M V+ ?( ?6 J; D7 h
maxs=20;%要求的贝塞尔函数的非零根个数& I/ w( t4 J5 }% m* K% P- x2 A8 u2 D
incr=4.0;& i: A( d6 c8 b) `
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)% p( z) M N' g, A# |( `
for s=2:maxs/ y5 B; d9 k* }; j1 R% k
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
7 y5 d; C5 ?+ @. Mend
- \1 V' m/ ] _1 FNIND=40; %个体数目403 A& c+ ]5 r5 v* K: O# J
MAXGEN=100; %最大遗传代数100$ o1 m) s% Z( o2 A* S- }1 K9 y
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度$ j* w& i* @, b
PRECI=20; %变量的二进制位数! i; x9 U& P0 X
GGAP=0.9; %代沟 _; r* e5 V# s" k
trace1=[];
* H. P2 }4 s) H2 D1 g0 Atrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
: J; f M4 n% {0 n6 d# ]%建立区域描述器
3 h8 o' P5 d& l- LFieldD=[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])];
$ y0 o& ?- ]7 g1 f$ fChrom=crtbp(NIND,NVAR*PRECI); %初始化种群7 `7 V0 f! G& p6 ^) q2 S
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m) [( o! g- J7 h( D
gen=1; %代计数器, w2 l/ s$ i: d) @
%遗传开始: K% [' g' x4 k, t) D1 C2 P, D
while gen<MAXGEN. A1 ~" |' ?* }' o
[NIND,N]=size(Chrom);7 q+ R: } G: {. C! H- U1 k
M=fix(NIND/2);
( s9 j4 j3 ~& X1 l" q) O; N ObjV1=Highpass(v(1:M,); %分组后高通目标函数值(单位m)2 [/ ^. C( ~! v4 ^8 a
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
$ a+ J% d2 e: `: U9 x SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择, z3 M% h0 B Z
ObjV2=Lowpass(v(M+1:NIND,); %分组后低通目标函数值(单位m)
' C; j: E/ W" U. o FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)' w1 r) [! s R* U
SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择/ h( L3 _# ?/ T2 s
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
5 P7 Q! M" A4 F/ e# x* h SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
1 v: Y+ o. v( r2 e3 K Chrom=mut(SelCh); %变异
" f D( f3 Y" }' p %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
; Z# k, i6 O$ { c v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
! {) W. C3 ~3 j1 ?, ~4 B trace1(gen,1)=max(Highpass(v));8 h, S: S' N* j" a: j
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));$ R+ o6 G" n# C/ x& |' A. c7 `
trace2(gen,1)=min(Lowpass(v));
% W; R; L @3 K* R7 ?* i' e" @ trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));8 Z( b* z4 H7 `3 E5 U! l* `
gen=gen+1;& x* c7 N( g' s1 A' P
end7 b$ t1 n' o8 w+ E2 p1 q- g
figure(1);clf;; r4 d; u. q0 @
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');4 V& ^: h! t* {2 e* ?8 p/ f9 x0 X
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;1 k. ^( A: d) C; ^- M* p% M* C
legend('解的变化','种群均值的变化')
* ?4 ~1 a6 N: d4 M' P- h4 uxlabel('迭代次数');ylabel('高通目标函数值');
8 @# ]5 @& D2 M9 u1 mfigure(2);clf; d3 L4 w3 _+ m# A% b
plot(trace2(:,1));hold on;
E+ l0 C) |2 ~9 e! ?) c4 @# uplot(trace2(:,2),'-.');
3 E6 o) c6 A4 ^plot(trace2(:,1),'.');, R( q2 C" y6 a j( U$ P/ y
plot(trace2(:,2),'.');grid;
. j9 i: |6 J6 y# L) p% K: Elegend('解的变化','种群均值的变化')
( Y" u2 K# \- o$ c h& z, ~0 |xlabel('迭代次数');ylabel('低通目标函数值');
' p z! C5 n) s9 Xfigure(3);clf;
( I, X( V4 H9 Kplot(Highpass(v));hold on;: ^3 _" k& V- A+ [0 d& J0 B
plot(Lowpass(v),'r-.');grid;4 S3 T! P; g/ `# K y0 E
! B( W {5 w0 ^8 w" h" m |
-
1.jpg
(63.87 KB, 下载次数: 662)
-
2.jpg
(67.12 KB, 下载次数: 649)
-
3.jpg
(47.82 KB, 下载次数: 620)
zan
|