- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
* _7 Z1 w3 H$ F7 a2 t0 M2 Jglobal u;8 a- K9 D! w# C8 k' ?( i( n
%贝塞尔函数求根
3 A5 q3 [- x1 V0 V; P%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
8 p9 m3 J/ `4 j: S- a& ?maxs=20;%要求的贝塞尔函数的非零根个数0 ]- ^* ?. q2 n$ n- }
incr=4.0;
% q. I* J! u( w/ `/ Z# t8 A4 W3 C4 mu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
* V6 g5 z& F' @# h& ^5 ^9 E, C4 Y% zfor s=2:maxs
* |7 W2 _9 y8 L+ H& V" F- w u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解! H" Q7 ]9 i2 s+ G
end
, Q+ c- U5 T9 ~ _8 ]NIND=40; %个体数目404 h! i0 n, A8 V5 g% R; y! A# M
MAXGEN=100; %最大遗传代数1004 ]. m; m1 L) X% h9 A' v9 l
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度0 y g) i1 g; p# U" W7 d
PRECI=20; %变量的二进制位数$ R% c. ~2 D# _% b; {
GGAP=0.9; %代沟 n2 `$ |, r6 n% ~9 p _* V1 d; Z
trace1=[];. N+ N3 Y. e7 o; _0 u" \
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
$ _7 q1 K% P4 ^% d7 S%建立区域描述器. J7 b: s7 M% I( i! l0 Q
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])];2 V! Z9 D8 H# \8 x h4 n
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
4 P+ `) E3 z2 P: R; m1 ~v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
: k- x, G3 X, N2 ~# q( x/ Fgen=1; %代计数器
8 y6 w) R7 g* k* Y%遗传开始
0 r( I% t& e# s5 d5 E8 p" d4 {# Bwhile gen<MAXGEN$ t' L" F1 B" R: K0 Z r, k7 b
[NIND,N]=size(Chrom);
7 y- H6 |$ M; [ M=fix(NIND/2);! `% a, r$ E8 u( q% T
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m): x$ O! p. w0 B- {$ U( ]3 m/ H
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)% B: f G F) T- `7 n
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择' \& g/ N' t6 H" I) R& m. ^* ^
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)) v) T) Z6 b, G( x9 {: @& ~# n% J2 X
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
/ K0 D) ^! X5 Q SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择9 A1 a* h% \! B! f3 ~
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
% b- k/ y) ^9 T0 q1 D1 N$ e4 M4 t SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
& S2 ~7 x/ |$ s0 Q7 k$ j Chrom=mut(SelCh); %变异
' K6 U( V( p! p% Z %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入2 a T" \, s+ l% V2 O) {- o# w) ]
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
9 a2 f" l+ ^0 d trace1(gen,1)=max(Highpass(v)); O; M8 L9 l. D9 C$ F9 Y4 Y0 ~
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));+ N8 T8 p7 L( w3 O
trace2(gen,1)=min(Lowpass(v));
. o$ q' M' g) I! w+ _+ Q trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
2 m4 f1 N- {1 e/ k9 s' s gen=gen+1;
0 _9 ~) `2 A6 Q7 p) ~: J2 kend) t- S* p1 K, F" r
figure(1);clf;
* l% e5 c0 T: M0 u* [% I3 p% Tplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
5 M. X% H' |' `% U! o5 ^$ Fplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;# y: j" U+ P c Y- U9 c
legend('解的变化','种群均值的变化'); D1 T" _+ @9 j* t$ P- [) ]9 S2 o
xlabel('迭代次数');ylabel('高通目标函数值');
% S y; O$ s) q2 Vfigure(2);clf;
8 ^$ W2 m1 y; B& Wplot(trace2(:,1));hold on; x; Z# U# t. {, n
plot(trace2(:,2),'-.');' B- I. d* G5 \! f
plot(trace2(:,1),'.');; s: W. }3 {/ X. i
plot(trace2(:,2),'.');grid;# ]1 G' u- Q1 S% K' e7 O/ X
legend('解的变化','种群均值的变化')
2 \ c! E0 w/ I9 S% ?' {& H/ A- Mxlabel('迭代次数');ylabel('低通目标函数值');3 F0 f1 m0 e' b# I5 c
figure(3);clf;
: r* W$ M) n5 P, g1 r0 Zplot(Highpass(v));hold on;( f, w8 L, [3 B: D& S- x
plot(Lowpass(v),'r-.');grid;+ c+ B9 H, `2 Y: ^4 p/ }" X& h8 U
) G5 d7 c& `. K |
-
1.jpg
(63.87 KB, 下载次数: 968)
-
2.jpg
(67.12 KB, 下载次数: 932)
-
3.jpg
(47.82 KB, 下载次数: 905)
zan
|