- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:6 T4 s& V1 |; {4 \6 {9 [$ G3 }5 k
global u;6 }- F8 h1 T. [. p. z' Q
%贝塞尔函数求根
& {. ^, W9 B' U1 q: T2 U, U: ^, S%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根3 K6 z- C5 J* ?$ I7 e/ S
maxs=20;%要求的贝塞尔函数的非零根个数8 d9 f m2 A2 l) o1 Q6 |0 X3 {( f( s
incr=4.0;
6 p: m0 B- Z }' {" ^8 k% x1 Ou(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
! A# j) N* ]( P# lfor s=2:maxs2 U- o' F$ b# U+ A! K @2 T
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
1 d" j! q; X6 W& ~0 tend
0 n2 Y, l* ~$ a% x1 WNIND=40; %个体数目40' s7 E& D. b1 F' N0 p4 C) h, U
MAXGEN=100; %最大遗传代数100
; e; V1 z1 G3 [' _: Q4 V% y9 yNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
# w( D( T8 q' TPRECI=20; %变量的二进制位数$ E9 l- X8 G( @! x7 K- B+ Q
GGAP=0.9; %代沟
+ `5 h( I& x7 g5 W p, q) y, a& u8 Utrace1=[];- Z4 B8 _! }, I8 d1 P4 G @
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪4 i" v; n, K+ ~$ ?. X' J
%建立区域描述器7 r& h& C1 L( U
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])];. \- m- a8 E. F8 r7 M* a: D
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
0 M# w$ I j8 G( @0 Cv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
' S( s% q4 e8 F" t' S, B' o1 C' Ggen=1; %代计数器8 [- D( e1 f/ \& S/ k
%遗传开始 \1 O7 X6 E; D2 \4 ?5 _
while gen<MAXGEN
, V( ?% V% N6 @( Q. p1 ?4 J [NIND,N]=size(Chrom);
- Q- [+ E/ T1 M0 |! j M=fix(NIND/2);( V+ A+ a2 V5 k. `2 j5 ]
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
% {1 e# D3 S! M+ K: r, s9 ~ FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
8 n7 o' S6 ]& [6 G2 g0 T) K8 } SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
4 g" U( M# v/ n/ F ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
( }, `4 u$ l# C) r4 X0 y FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)0 s/ L' u& z6 T" {9 |8 @$ H' [) ?
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
1 ?3 Y7 H) L* f SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并4 ~2 F! I" N$ B1 J6 N2 o6 O5 _$ q
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
8 N+ a8 T! C0 A+ `- m! } Chrom=mut(SelCh); %变异9 s8 Z" }" g( b! Q, B7 \
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
' H( S) e; ~- |; f7 } v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
( {9 _4 }( y4 L8 k, x, ` trace1(gen,1)=max(Highpass(v));$ d$ x+ o+ f' G
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
; _& |0 _( U# S/ k trace2(gen,1)=min(Lowpass(v));# j6 M; ~& y" W' E: S. L
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
& r- N4 T5 ]& K: J9 m gen=gen+1; O, Z* S6 s! I ~3 |! y
end- O- s9 g" c, g( R/ @) l8 j. ~6 }
figure(1);clf;: K" u" B8 E" Z: [' H6 O* W
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
: H( B, b, u) \% i9 uplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
" W# {* j" U# F8 M. vlegend('解的变化','种群均值的变化')
' i/ g2 T6 c; r3 J/ [2 B: x/ Xxlabel('迭代次数');ylabel('高通目标函数值');
0 h' _% z0 q& g1 U0 K; K g2 ]figure(2);clf;
; n: Z# Y" \9 _9 g/ d) ?5 G$ Tplot(trace2(:,1));hold on;
& @- l5 s6 C; l k# uplot(trace2(:,2),'-.');
! L; n! s2 V+ U% E9 v6 C/ }6 dplot(trace2(:,1),'.');
- H% n: p, { x1 Mplot(trace2(:,2),'.');grid;9 r: j" V: m) z* h3 R: B- {
legend('解的变化','种群均值的变化')
) o, w) s, V. K# H* rxlabel('迭代次数');ylabel('低通目标函数值');$ S X% t6 e H+ A# R0 Z
figure(3);clf;/ v6 I+ y$ Y# R6 T/ ~7 C* o, ]
plot(Highpass(v));hold on;
$ G2 c' Y( b \2 ]plot(Lowpass(v),'r-.');grid;
" \: b; e# q( p* j; E6 a
|( c, ]2 c! N" D1 d2 d |
-
1.jpg
(63.87 KB, 下载次数: 1061)
-
2.jpg
(67.12 KB, 下载次数: 1012)
-
3.jpg
(47.82 KB, 下载次数: 984)
zan
|