- 在线时间
- 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 p; I; v0 K5 Y5 Tglobal u;
0 r! D; ^! G( _5 l%贝塞尔函数求根
% Q* f" h' b9 c: M%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
3 `. l( F0 x. O! ~0 I% V0 V$ kmaxs=20;%要求的贝塞尔函数的非零根个数9 c" }& `% ^8 R4 T
incr=4.0;
# T& K, s% i! ?: W/ G! U2 gu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)' H; C. t. G4 z& e; @8 e7 E; h
for s=2:maxs) `$ h ?& N. w' v
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解. i6 c4 S$ v" ?% Q# {# e
end
3 O# M( u" y7 L5 n- kNIND=40; %个体数目40/ u: O i, @) K& M( c
MAXGEN=100; %最大遗传代数100/ B- p# Z7 w, }' ?; ~
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度# ]0 f* _# X3 W. }* A- N4 o. N
PRECI=20; %变量的二进制位数) I; g9 B, a( |* r( r* x3 z
GGAP=0.9; %代沟) |) F) M0 R5 j! A! H- S, Z6 T
trace1=[];
% X4 N+ _' W( g6 `# Xtrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
/ B; O, @2 O8 E1 T%建立区域描述器
. ~$ O7 |4 `# G" T1 sFieldD=[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])];
6 ^1 s9 _) p5 ]8 eChrom=crtbp(NIND,NVAR*PRECI); %初始化种群 \9 a: m4 q/ ]" ~3 R
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
3 p4 ]3 y2 F! U4 T9 Wgen=1; %代计数器
+ O8 A6 I- V6 O% H: ?4 C& J0 y%遗传开始
. E% g a& ^& Ywhile gen<MAXGEN
, _. L4 `$ N7 L1 R, S% K3 C. A [NIND,N]=size(Chrom);
) |2 i1 n& x/ B; v M=fix(NIND/2);
* f( q8 P1 t# E. w. e# K- B ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)# F) c6 {9 h- T( M0 H1 L$ ]! g
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)8 U8 f5 b& i1 D, N9 I! A
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
& r7 N* _ o, J6 S k ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
3 J S# G% X4 m# ~ FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)5 o8 l4 k, _. P
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择- }$ ?7 \9 I( B& m6 C
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
: c! O7 t; \. J8 H& M# I0 Y SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组: I1 o& h6 ?" e( _. w) A$ ~
Chrom=mut(SelCh); %变异) H7 b c) z) V x; P* v& u- o
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
1 y" b5 E! M( k j5 A% F7 \ v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
- e: h* F4 O P2 N# P( r trace1(gen,1)=max(Highpass(v));
3 M8 k2 H# k$ K; d; }) X trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));* N9 H6 o/ ]7 s7 k
trace2(gen,1)=min(Lowpass(v));' @2 _. y3 T5 F: \ Z
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
|6 M5 p8 G+ \$ I& B3 ] gen=gen+1;
' \3 ?, `/ v7 Rend
7 k: u, u/ I2 P+ n9 Sfigure(1);clf;; h ]3 N4 x* o8 f8 ?
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
9 u; \; w3 n2 [# v- lplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
: R1 q3 p# }: O* ^( K+ O# Jlegend('解的变化','种群均值的变化')/ a9 T) J% d0 I$ Z2 v
xlabel('迭代次数');ylabel('高通目标函数值');! r2 D* I& {0 Z8 t
figure(2);clf;9 x; q7 ~* v4 ^, l) `
plot(trace2(:,1));hold on;2 ?- U# ^4 ?7 {5 a$ p
plot(trace2(:,2),'-.');- W: m9 z b9 n. K4 [+ F0 ~4 y3 z
plot(trace2(:,1),'.');
! q: l9 [2 V5 y! S/ a& e1 ^: x u; Q$ bplot(trace2(:,2),'.');grid;7 \- D* T/ f- Z& x+ [3 i
legend('解的变化','种群均值的变化')
1 U- z7 a& l# `( i# o9 O1 R2 Q$ y9 E' Jxlabel('迭代次数');ylabel('低通目标函数值');+ q& b# J- I3 r" {
figure(3);clf;
! f* t& _* n# f4 {/ m" dplot(Highpass(v));hold on;
. K% n3 c8 }. b. }8 [plot(Lowpass(v),'r-.');grid;
$ N" x- p. o5 H+ V W3 T& o% G
; O" } Z5 X4 O; Y |
-
1.jpg
(63.87 KB, 下载次数: 1042)
-
2.jpg
(67.12 KB, 下载次数: 1003)
-
3.jpg
(47.82 KB, 下载次数: 972)
zan
|