- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:1 ?& \( B+ R' c- o
global u;! s3 l: w c" b: I
%贝塞尔函数求根
. J5 h: t+ A/ Y+ t%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
1 a z/ B' j2 r* {% _maxs=20;%要求的贝塞尔函数的非零根个数
3 u, x( H' W% y; Yincr=4.0;
( d& D0 N+ [6 G5 j" O8 iu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
5 N4 q) v# V7 j4 zfor s=2:maxs
& U# ~/ m* l" _; \ u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解9 {9 g6 |. P3 E6 }+ u
end
W' n4 l) Q7 T ANIND=40; %个体数目40
. H; \( B! |$ I3 {MAXGEN=100; %最大遗传代数100 u5 C. w, b+ z, v
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
5 S8 Z) o; w: z, {( j- JPRECI=20; %变量的二进制位数
9 X# A/ R! k6 ?GGAP=0.9; %代沟
4 Q, d& u2 T& H) ttrace1=[];( S5 y+ o% M$ s* P4 Q6 F3 L
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
+ C7 @( O8 x) L$ \' Z+ M%建立区域描述器
+ S& D) @% S. K8 `' o( l4 }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])];' n" C5 w1 {/ U
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群
; [$ O& a9 E* av=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
@ j% Q( ~: C6 Xgen=1; %代计数器& i! i6 a0 d: e( s- v
%遗传开始* I/ h3 J/ a: i: d) W
while gen<MAXGEN; [/ e2 O; s5 a' z# }
[NIND,N]=size(Chrom);
! Y1 i+ y. E+ Q6 S$ ^ M=fix(NIND/2);& V3 }0 i0 @( R. A" M. t9 N. K. r
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
% ]& i8 T4 R8 H9 O FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)6 I5 v3 P/ R5 F2 k
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
6 S( ~/ p9 O$ |, w- p, y( c# D, h ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
* {" q- \' \( i0 h/ D m FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)+ y8 K' `* W* b, u& L
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
0 i0 M! M, K! m SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并 [4 ?" j2 e" a4 t( W
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组9 R% {: H7 ?' k7 |' U; T1 Y4 f) }
Chrom=mut(SelCh); %变异 C9 D* a- E/ d' P5 O) F% p
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
i) U- t E- X+ L Q! L v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
) P* L& c! _1 w trace1(gen,1)=max(Highpass(v));$ g& ^( J/ W/ N5 f1 m
trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));( v9 y' ]! U i0 @. \
trace2(gen,1)=min(Lowpass(v));
3 e/ I5 Q4 ]6 [3 v4 n trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
, W# y' G( A& K gen=gen+1;3 m7 n3 ~! T( g# m1 h( \
end
4 N4 Q3 D z% b+ i' Ffigure(1);clf;
6 S% c8 g" q4 l1 f) `- t5 g3 rplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
/ {4 m: F+ [- V! W) b9 Tplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
4 T+ @. R9 `+ ~8 v6 V0 rlegend('解的变化','种群均值的变化')0 o4 V! Z+ T/ }- B( @+ b z
xlabel('迭代次数');ylabel('高通目标函数值');
0 A' j8 D& o1 q0 F6 D9 hfigure(2);clf;6 t; m9 M. U& B
plot(trace2(:,1));hold on;3 f' n2 Q, z5 d- f( @; v$ T
plot(trace2(:,2),'-.');
" c' X: ~) l- rplot(trace2(:,1),'.');
7 q) I# i; D7 J- i( m: s+ u( ]plot(trace2(:,2),'.');grid;
( q8 ~7 \6 H+ T" o- W% y! ~% t6 elegend('解的变化','种群均值的变化')5 i0 e/ b% C( |% ]0 V4 I& U7 H5 ^
xlabel('迭代次数');ylabel('低通目标函数值');& ]- e8 N: i; s
figure(3);clf;* k4 ~3 u' a* N) T+ B% `0 n3 {
plot(Highpass(v));hold on;$ O% [; N3 ?# z4 |1 k5 I/ e2 ?' r' I
plot(Lowpass(v),'r-.');grid;; r! H& z# S# J; ^& h! i1 C7 z
5 G/ @8 Y" E4 z" Y0 |
|
-
1.jpg
(63.87 KB, 下载次数: 1042)
-
2.jpg
(67.12 KB, 下载次数: 1003)
-
3.jpg
(47.82 KB, 下载次数: 972)
zan
|