- 在线时间
- 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 @. h$ A# d: D/ l1 M, ^1 Jglobal u;6 i" p1 J2 v- }5 Y5 t9 W4 J4 J3 ]
%贝塞尔函数求根0 z( h# X, i% c- j' ~+ X0 }
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根1 y8 e: D1 S8 g( c6 Z
maxs=20;%要求的贝塞尔函数的非零根个数
" p s0 j5 k. H; E, {# k9 i, Fincr=4.0;
R( j; q0 t. V; q9 Cu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近): p5 q: G0 d! P+ u5 o
for s=2:maxs2 R( [1 [0 u2 e0 C6 N$ @% S
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
9 b7 Z# a9 G1 n- r) ~/ D1 Fend$ F; P3 S6 y+ a; W; V
NIND=40; %个体数目40
0 d- {0 T0 k# G2 \% U: L4 q6 RMAXGEN=100; %最大遗传代数100
. w( x4 l) R0 LNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度. z. I0 k, {- S* _
PRECI=20; %变量的二进制位数
( v+ j- h; l* g/ S7 KGGAP=0.9; %代沟- J# U; P( ~% l* O2 A7 `( e
trace1=[];
/ H- V5 }# D3 B) S- U6 M* jtrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪% b/ T3 ^( S9 h5 F: e. R+ j
%建立区域描述器. o% X- e9 A7 g0 ?
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 {' Q* e/ R( N3 _' m7 mChrom=crtbp(NIND,NVAR*PRECI); %初始化种群
0 s1 g7 \5 i9 a, O) O+ \; S9 ^! Mv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
( x9 ~. z# t. {. Wgen=1; %代计数器
; h s$ R9 E; m3 t" {' \- ^%遗传开始
1 k+ d* y; Y+ `" ^while gen<MAXGEN# p" X8 [+ G2 B2 |' A/ @9 v
[NIND,N]=size(Chrom);
- |7 d+ d6 T, n M=fix(NIND/2);2 L9 W' b9 C' ^
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
) I+ C* U) ^, b: g& g& t; B FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
+ n" J; e5 k/ {( u/ j SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
3 W l3 t6 e2 y3 E ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)+ a3 I& X" S& a. _6 d, v+ Z
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值), j3 ]" Y% g) g7 [5 W# `% p, Z3 y
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择$ V7 `+ V" I# H! Q
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并$ B- ] I% ~" S3 f' {3 ]& ^
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组
/ k- p8 b4 y1 E0 q Chrom=mut(SelCh); %变异! S1 b( F5 G& F2 D$ K
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
) C. x' `$ A, O- y$ Y8 H% \ v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
% |1 G2 y0 Q3 C( d trace1(gen,1)=max(Highpass(v));
4 W# G( J& m- I2 `5 X; ~ trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
# B6 Q5 Q5 V* Z) ~ f% D% s trace2(gen,1)=min(Lowpass(v));( }% a' A. O* A: d; p* z
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));) p0 J, B) k! u/ ?
gen=gen+1;
5 S: U; n' \& i6 ^6 }, Pend6 {6 b6 V6 w; F) j8 N$ L
figure(1);clf;% j' P S( M& E0 q- ~* a6 i4 ?
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');% n& K- y3 l% v) ^
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;! {5 O: e9 \& R
legend('解的变化','种群均值的变化')
- `# p+ Y2 g5 \9 ^xlabel('迭代次数');ylabel('高通目标函数值');
8 ~3 \% x1 U4 P" c9 Lfigure(2);clf;
3 b4 f5 k: U) w2 _6 R3 o9 l: Rplot(trace2(:,1));hold on;
( [4 s) A. Q* a! Zplot(trace2(:,2),'-.');* @6 N, ?7 z' i) |( ^2 {
plot(trace2(:,1),'.');
: H& [; d2 Q* s2 M$ @3 splot(trace2(:,2),'.');grid;
$ O4 `- X7 d# t. L0 h( l' E6 _legend('解的变化','种群均值的变化'); b6 p& Q; b$ P3 F( f( z: [/ t5 [
xlabel('迭代次数');ylabel('低通目标函数值');
- @; ]( c" O( V5 @0 Tfigure(3);clf;
& g6 C/ j y+ v' w4 W% U* Tplot(Highpass(v));hold on;
/ ^- `' \$ V0 U0 h$ Y, wplot(Lowpass(v),'r-.');grid;
* t, Z+ c2 a/ d8 X& W. _ o
$ H/ i% G: I' p) Z6 ? |
-
1.jpg
(63.87 KB, 下载次数: 1008)
-
2.jpg
(67.12 KB, 下载次数: 968)
-
3.jpg
(47.82 KB, 下载次数: 935)
zan
|