- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:/ i& \2 y. r" @
global u;2 R9 n5 ^$ t1 S7 T: {0 ^' q" f
%贝塞尔函数求根; u' |1 S% p+ h) m6 S) c7 O
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根4 M- E9 m0 ~9 u1 A, e' a3 J P: D
maxs=20;%要求的贝塞尔函数的非零根个数
/ b% ?2 s/ H6 \ o" e9 m( cincr=4.0;
' p5 h1 M, c1 w( \5 Z# ]$ Vu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)- q* y' r$ m6 T) [* T. m# y4 S: l
for s=2:maxs
; N- F4 |) r$ g u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
' r; k* Z" w/ c# _end/ V1 _3 N+ ^* ?' v- ^; O! Y; e" f
NIND=40; %个体数目406 }2 C- L& d; t: J1 h! S
MAXGEN=100; %最大遗传代数100
2 h6 Y# h; H: VNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
! V2 P; } {2 G, qPRECI=20; %变量的二进制位数
% y8 _2 ]+ g/ A9 f! p1 |8 {GGAP=0.9; %代沟
/ [/ h, j! ]/ p. F. Vtrace1=[];5 b5 u }; H$ [' ` k* Y1 ]6 {2 |! A; X
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪& t: ?0 X9 q* s; r: [
%建立区域描述器
% [/ w+ n' p+ f' {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])];) l. D2 W7 F/ \) R
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
4 V! u( A4 L9 `* k; W: u9 j/ ~v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)2 P5 y& E$ w1 q- k w4 Q6 s. ~
gen=1; %代计数器" K% n- V' S) c6 I) w
%遗传开始
- u. G8 p8 N- f* ^. Y, X, Jwhile gen<MAXGEN
* X, N( ^0 i& b/ h; l% x( {. `& X [NIND,N]=size(Chrom);& p4 t/ I+ M3 I# Y% v
M=fix(NIND/2);
' h, j" w& P% @% Y+ ^( k ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)6 M! y( R2 |" x8 a
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
, ]' ~( @3 r7 g! K c SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择3 \) Y6 c4 R! v& _7 V
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)& k# T& o. n* l3 j
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)0 I2 w8 b/ Q! Z1 [& G; O
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
. x$ x( A% r( O9 `2 @; O SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并) S" t' x0 ?7 J P) U
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组& x; O. U* H" n
Chrom=mut(SelCh); %变异2 a/ i9 T9 o" i% h' S: P
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
3 W0 A; E) P0 F; h0 A v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
# w2 ^) E1 M# a; { trace1(gen,1)=max(Highpass(v));: ?6 G; v5 C2 C' F- ~
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));% Q7 t) K: ?" O- ?
trace2(gen,1)=min(Lowpass(v));
: f7 I0 Z) G3 i9 U! c0 R trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));$ g% {5 U8 m3 e. ^3 }- ?) a
gen=gen+1;& s" Z" k( m1 ]' X) \
end
$ r. j# o! W: d, a& Z& Xfigure(1);clf;
9 Z5 O8 }7 o9 |. a b7 _plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
( l/ ]0 y( r3 U6 N/ G* m- aplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
% d9 [! _0 [6 B" Q3 b2 \legend('解的变化','种群均值的变化')
/ `( J! o/ S; x) }$ D1 b+ gxlabel('迭代次数');ylabel('高通目标函数值');
* B& [- p- i* n( Z1 J2 `figure(2);clf;" f" A+ m- E0 T1 `5 h
plot(trace2(:,1));hold on;! b. n7 g4 S8 ?# K
plot(trace2(:,2),'-.');
2 |/ o/ q" i9 I$ [7 o) ?, @plot(trace2(:,1),'.');- u9 t+ g) e: e6 ?
plot(trace2(:,2),'.');grid;! `5 m4 O" L8 [1 m9 d1 j
legend('解的变化','种群均值的变化')
# Y- Q" c" [( K5 d) B/ Bxlabel('迭代次数');ylabel('低通目标函数值');
R Z* h% F4 M. sfigure(3);clf; S, Y2 \3 v0 b: ]- a
plot(Highpass(v));hold on;
+ g+ H: H+ n) a6 }* mplot(Lowpass(v),'r-.');grid;
2 ]% B; r4 p% a8 h) l
' ^9 S% T/ [+ F# x" F# p' Q! `4 Z! X |
-
1.jpg
(63.87 KB, 下载次数: 986)
-
2.jpg
(67.12 KB, 下载次数: 948)
-
3.jpg
(47.82 KB, 下载次数: 917)
zan
|