- 在线时间
- 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 V" r) Z7 o' ]9 `! c- \+ _global u;
& S& c4 W$ Q9 p1 Z( z; N5 \+ x%贝塞尔函数求根
* K; p1 N* o. r1 n9 f' _: b%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根( `( N, ?& X0 h p9 C: s+ r
maxs=20;%要求的贝塞尔函数的非零根个数# {- n9 ?% w5 g; h8 Y9 s* L
incr=4.0;
) \3 G. [( P5 ^5 o2 Su(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近). B5 Z, Y% h8 ~' {
for s=2:maxs; n) Z+ R4 Z; D c3 N2 w. C
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
2 F( q% H0 a1 [( S- x8 ~end/ g& g% A- H" e' L8 R
NIND=40; %个体数目40
$ L8 B$ u5 \$ b) n. aMAXGEN=100; %最大遗传代数100. T/ ^$ Y" I; X# x, _! E6 @8 H
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
+ |5 o7 d( d( [$ H: @. l& fPRECI=20; %变量的二进制位数2 M% `6 K' H4 U# C" u5 l8 u
GGAP=0.9; %代沟
3 o$ k, m) g" t1 otrace1=[];
' Z3 Z6 a t# ~' Y( htrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪* {: H, ~$ S2 X7 s5 o
%建立区域描述器/ |/ u0 f+ F6 j9 _$ v
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])];) a/ y$ L% W* H9 {: ~/ u% w' b- t y3 Y' _
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
, m$ K8 m* Y5 u0 {2 D( X2 C9 A2 Fv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)1 v( W( V) b5 U% J" u1 u
gen=1; %代计数器
/ f8 B/ y6 v! y/ K%遗传开始
# N# A5 Q$ V! J3 y/ R- Twhile gen<MAXGEN/ h% {( t0 }- k4 v- x5 N0 `
[NIND,N]=size(Chrom);
( [& ^6 a8 c: ^# Z M=fix(NIND/2);
( i2 {6 K# t2 ^* @# Z* \$ Q6 i ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
8 u/ v: {- a! {$ S8 i# ?7 w6 Z FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
! D" R* r& L3 ]9 Q, ]* O SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
* N1 S: d5 C% l ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)! g F0 V: n+ L5 r
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)6 [, x& B r9 L1 e) A, `# b% ]" Q: l
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
# l" D; i/ Z( |/ x6 z SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并 j$ s4 v3 i& ]0 Q) ]; w3 J; F
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
( P0 ?1 f7 E5 |. c6 |3 n. ^ Chrom=mut(SelCh); %变异, j6 b/ { T9 s6 t! t/ ^5 T4 `
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入7 {% P/ ~; L0 }7 [) S2 }# K- a
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
- g2 i7 t( y) e) v+ r% c3 w trace1(gen,1)=max(Highpass(v));1 b* ^8 {" M' v n7 c6 i6 c/ o
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));( D7 v. L' w/ }+ r; C* d
trace2(gen,1)=min(Lowpass(v));
4 v1 j! L$ L- U& r1 S" ^ trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
" H% T& f }" z7 Z7 T: n" C8 i gen=gen+1;
+ u* t, S( R9 F# M7 l1 y# Oend
6 @, K, o* E# i1 O) E9 mfigure(1);clf;' Q9 N* c4 X6 U; x" u4 _4 L: k! A
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
! v9 } W% Z! ]% Pplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;/ V- f! f' m# l
legend('解的变化','种群均值的变化')
; a, r# ?+ N- wxlabel('迭代次数');ylabel('高通目标函数值');
8 j, r% w- ~* m0 K" ofigure(2);clf;8 @9 e+ [3 G2 r6 X6 w: s
plot(trace2(:,1));hold on;
& T; G; m& X. ]) Xplot(trace2(:,2),'-.');
5 [& }6 t( t) Y2 \plot(trace2(:,1),'.');
% Q% o& O @: o& F- h6 M1 G+ pplot(trace2(:,2),'.');grid;
$ \1 s, J5 f& O: J* llegend('解的变化','种群均值的变化')
4 O# Y4 |7 b$ D! \6 nxlabel('迭代次数');ylabel('低通目标函数值');
0 L Q% l( U& gfigure(3);clf;
6 Q w) b3 h% x2 _plot(Highpass(v));hold on;% F. U4 T' C; ?( Z: m
plot(Lowpass(v),'r-.');grid;# Q: Q3 Q' z9 Z' S0 z
$ A6 o l/ N# v3 A7 }) Y |
-
1.jpg
(63.87 KB, 下载次数: 968)
-
2.jpg
(67.12 KB, 下载次数: 932)
-
3.jpg
(47.82 KB, 下载次数: 906)
zan
|