- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
2 m. i7 x- h2 \3 p6 r$ O1 oglobal u;
& T5 l) H% R( K& |%贝塞尔函数求根
7 V* Q% f( L0 b%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根% F" i5 o U9 g) p
maxs=20;%要求的贝塞尔函数的非零根个数
5 O( I0 S6 W: y2 F5 g$ k; E" N: Zincr=4.0;
# f# E' I% I4 n5 Nu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)! j0 E! k9 |& K+ e$ T
for s=2:maxs
' o9 F5 U* v( H u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解7 T; Z/ p3 ]! }& f* m9 ]
end
9 o, V/ W) ?. c" W5 B& zNIND=40; %个体数目40
6 [) e; u4 i; V( MMAXGEN=100; %最大遗传代数100
/ L" H1 f( o" y- }+ w' DNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
4 D6 g8 J- l r4 E2 KPRECI=20; %变量的二进制位数; }2 G9 S: Q" d, H) N9 I
GGAP=0.9; %代沟
: t2 Z* y& C8 {0 }trace1=[];
4 H4 t5 D# [$ a" I- ?# Ctrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪1 j! p) w( h1 W5 z# }& E
%建立区域描述器
E" F/ g* |% }/ z: Z% OFieldD=[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])];
' H' {' P3 \! [Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群9 b, E8 V, K% r" x# V- K# d8 I9 ? ]
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)4 u% D! S8 {$ T- X* H) Z7 `
gen=1; %代计数器
0 o2 Z2 T% B2 M+ B%遗传开始
" g- [& V3 \; @5 kwhile gen<MAXGEN/ E7 I1 k7 `( N: L( N
[NIND,N]=size(Chrom);) B7 ~. k* \$ g; \" K F4 U% m
M=fix(NIND/2);( f: _5 M& k/ V
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
* `: D1 b+ q9 o4 ?- D- m FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)7 G& G0 C7 f7 u9 F9 s7 }* t0 g
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
r* p+ i% @8 {1 b0 ~8 p z. ] ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m): U) k. D4 m% I
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
: P X7 z. O* e/ p- E- O: I/ G SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择$ {- n7 _8 j! ^, p
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并& w' h2 T# {' b) G
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组: W) p, W+ R. e y( e" }% L" O5 g
Chrom=mut(SelCh); %变异
+ e7 `" f5 V2 C* J6 ? %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
' c, u t2 f) U y" c' D v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
+ u3 V2 q4 C- K3 n( q4 ~ trace1(gen,1)=max(Highpass(v));
) u+ D) @/ W5 ^5 f trace1(gen,2)=sum(Highpass(v))/length(Highpass(v)); J( C5 b4 ^+ k" ?4 g, {
trace2(gen,1)=min(Lowpass(v));
- E) _/ H. ?, E, X* L% a3 F; L trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));2 k/ X& ]! s% M
gen=gen+1;
" o0 R; n+ O* b' K0 mend
+ O3 `. \9 @$ f; ?0 F: dfigure(1);clf;
. }. ]8 m2 q; O0 Gplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
; k, M. |' ~+ gplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;/ b' l* v% p" S* M$ Y# X
legend('解的变化','种群均值的变化')
* n) o6 z+ G7 k* |" Fxlabel('迭代次数');ylabel('高通目标函数值');. @8 P; f* e, S- V* V0 R" F
figure(2);clf;
% `4 m& S* H# V! m# X @plot(trace2(:,1));hold on;
& }0 A: h7 A1 V5 P& Z5 dplot(trace2(:,2),'-.');8 T E$ H% w' r& s1 z
plot(trace2(:,1),'.');
1 t) V- }/ f% x" _; u( oplot(trace2(:,2),'.');grid;$ `+ Y g6 }7 Q% J
legend('解的变化','种群均值的变化')
2 ~* t$ c6 ]2 bxlabel('迭代次数');ylabel('低通目标函数值');/ Y9 g& |' ?8 y7 ]* ~8 W! l7 r2 j5 u
figure(3);clf;
" g5 P1 C. |8 X2 i6 C8 `plot(Highpass(v));hold on;/ _$ V q3 P2 r f" @
plot(Lowpass(v),'r-.');grid;
8 @$ \2 m7 D6 C4 @; l. [& `- {& J' L; q: {; }: Q
|
-
1.jpg
(63.87 KB, 下载次数: 1032)
-
2.jpg
(67.12 KB, 下载次数: 998)
-
3.jpg
(47.82 KB, 下载次数: 966)
zan
|