- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:+ X: K& k- R4 J: Z, I: s$ z
global u;2 Y0 \ I+ w' _; l7 `2 G6 h5 H
%贝塞尔函数求根: n2 O- W6 p5 r9 z$ V/ ?
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
; v/ p& n5 R2 a, v1 n( g/ @/ _8 nmaxs=20;%要求的贝塞尔函数的非零根个数 e' ?4 S/ b& I# `4 }2 |4 a
incr=4.0;
6 t4 b% u3 Z9 R r+ ku(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近). m h- ~" W0 @. G8 d3 S+ X
for s=2:maxs" m+ Y3 w E& Y- O& o3 r
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解5 n: u9 W- `, D V* _/ h& L- U
end* V& M! ?7 d9 g' O( _$ k6 d
NIND=40; %个体数目40 H' \& P }% i
MAXGEN=100; %最大遗传代数100
/ {/ Y0 L2 J: a m. V8 X3 MNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
4 k( Z# t# r1 z9 J$ tPRECI=20; %变量的二进制位数
. N5 m" O; W/ MGGAP=0.9; %代沟
3 J0 ~0 a& d( S4 P2 a& Ztrace1=[];+ w. }7 c2 ^% b m( T
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
$ K$ N. ?+ ^& c+ U' T! }4 m( C%建立区域描述器
, w. L2 |) T5 C4 f+ Y% U 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])];
e1 k* e2 ?8 B' z' BChrom=crtbp(NIND,NVAR*PRECI); %初始化种群0 v; f" v+ X) Q9 E4 I6 B2 c
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)% |: }$ l, n. r# t! F' i
gen=1; %代计数器# m; l( y+ K. m0 D \# I' a
%遗传开始
& K [% l. s+ Lwhile gen<MAXGEN5 n; _$ b$ t a0 O: C
[NIND,N]=size(Chrom);: a6 a% ]' |0 _ Z$ z: [9 S' z
M=fix(NIND/2);: E2 C# T j, K" }
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)2 u8 {' r- u0 i
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
; k2 K" C" u# U& K7 {0 c) s3 ] SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
& W. @ [! P7 f; o3 J4 W# h ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)5 r4 B5 J1 H7 z& d; I5 }
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)5 i7 T+ b$ ?* v5 \7 H: b
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
9 `# L$ f" ^! M N, n SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
4 B2 ]6 R- w: r( K* F; C: J+ y SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
: `$ w# G- ], K; }% O0 H- L c Chrom=mut(SelCh); %变异3 R0 e! a C: a& o
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
, |$ ]- n9 Z8 Y# J v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m), E7 R$ ^. w$ G% X
trace1(gen,1)=max(Highpass(v));* C1 @% h/ D2 h _9 k
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
: t ` D/ I o9 x5 o: R0 N trace2(gen,1)=min(Lowpass(v));" s( y# n. }* I& ~% l9 z" n) @
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
( k6 ~, h, |6 d9 a8 H6 D$ E gen=gen+1;
2 s, T- O* @# ~3 Y# K- K0 r2 p8 Gend; f0 a9 H3 x' B: I! q1 O5 _" `1 K
figure(1);clf;4 T2 @5 u) P. |
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');5 r7 J* m" a* B5 N: v, x
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
" F3 ~0 `/ k" K$ {, ilegend('解的变化','种群均值的变化'): T7 m0 }3 N3 b! y) c- Y
xlabel('迭代次数');ylabel('高通目标函数值');, \7 a+ m. E9 @! v
figure(2);clf;9 I* C3 X+ j. E. Y
plot(trace2(:,1));hold on;% L! L$ |" t; i. D
plot(trace2(:,2),'-.');: b# z' c' ?% y1 c* c* |' X! F
plot(trace2(:,1),'.');9 ~6 x( Y) l Y f7 a
plot(trace2(:,2),'.');grid;
: p' D7 A$ ~3 a2 F0 f9 ulegend('解的变化','种群均值的变化')
4 `" V5 P+ K ~5 W3 F! fxlabel('迭代次数');ylabel('低通目标函数值');
: a. k0 o" }- r/ Xfigure(3);clf;
3 c% B' r1 ^ F3 f; t) @plot(Highpass(v));hold on;7 o9 S8 f. R6 E$ b% E1 n
plot(Lowpass(v),'r-.');grid;
7 l) a; e$ R( t2 G2 r) Y
# \. ]7 K; ~6 w' h$ w1 O3 B |
-
1.jpg
(63.87 KB, 下载次数: 1030)
-
2.jpg
(67.12 KB, 下载次数: 995)
-
3.jpg
(47.82 KB, 下载次数: 964)
zan
|