- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
$ l" Z4 }5 s, Q0 P8 U9 p9 ]3 a/ zglobal u;
* a0 ~( ~ e- S%贝塞尔函数求根
* L$ c7 T9 B( h7 t%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根 @6 |9 u4 ?! S, [# i
maxs=20;%要求的贝塞尔函数的非零根个数+ z, z+ @- w0 U2 [
incr=4.0;
4 I6 X% h7 x Gu(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近), B1 U t3 j, E0 Z; e: k2 C2 ^
for s=2:maxs0 s4 w3 p2 W2 r4 D# n% n
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
8 w! @! A7 x5 I8 o' l7 yend* h4 p5 i/ V u
NIND=40; %个体数目40
9 S) z9 n+ X: rMAXGEN=100; %最大遗传代数1002 q" |( `* h1 I2 y2 l
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度" M% S" v& s0 M$ J4 H+ z7 G' X! N
PRECI=20; %变量的二进制位数
" `3 ?# \% x" O) r# QGGAP=0.9; %代沟7 ]( D# |' Z. ]0 t, a' u
trace1=[];
' |4 Y; w0 v3 K: I. F6 ftrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
- e0 B) f" K# b! q) r x%建立区域描述器
, U9 V2 G# N( hFieldD=[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 J7 @# K" a* m" ?& K4 OChrom=crtbp(NIND,NVAR*PRECI); %初始化种群
) q& W2 [( n2 a5 ?5 h( X6 hv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)
* Z( _2 e0 {; R- f) N8 Y% V, }& [5 Zgen=1; %代计数器$ J" H" N9 {; k C
%遗传开始1 k- A! q1 J7 M2 a/ F1 d; E
while gen<MAXGEN- n: \* V. k- e# q) q
[NIND,N]=size(Chrom);
6 S7 n, R$ a& P M=fix(NIND/2);3 k6 {6 d$ Z: i; e/ j
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
6 @" o+ N' @3 U; o FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)( x' F. ^5 z4 Z6 I% i9 T" Q) S, k
SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
" k+ a; n# f5 c ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
% _( j3 m% @- E( B, b6 X4 f% K FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)) ^5 U+ ~1 W* U' Y4 M
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择; x2 ` I* p$ `3 I m
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并& l$ W% Z/ A; t6 Z0 o+ @# [, u' y
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组: `" c, J' g/ H. K. {2 v }2 b& E
Chrom=mut(SelCh); %变异0 B( |/ P* y0 b
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入& y8 P5 r. H' o1 B( L% l
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)' q( ~' Y' I; o. l @
trace1(gen,1)=max(Highpass(v));
* S, ? ^# N. M) B- s6 V5 }: f trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));% i4 G; u& I% B( Y+ L
trace2(gen,1)=min(Lowpass(v));
0 ^( g3 M+ m% F) p trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
0 D# X. z9 A- q gen=gen+1;; K! a" T" W+ G. C8 b. ^% H9 @
end
- p# [! A2 U: v8 n, Z* Rfigure(1);clf;
; C2 S I# h& B" bplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');# P# [& N, b# S; m
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
# j3 o5 t' J) x0 l: ulegend('解的变化','种群均值的变化')
, e+ z" Y/ a2 n, n3 d4 R6 r3 Zxlabel('迭代次数');ylabel('高通目标函数值');1 E# V0 k4 V: ?9 d% V
figure(2);clf;$ D6 v# M6 ?/ [+ E; y% O7 i
plot(trace2(:,1));hold on;( Y% x' r4 ?, v' o
plot(trace2(:,2),'-.');
% z: h" k& g$ ?* W# D0 qplot(trace2(:,1),'.');
4 G N, J; T9 Bplot(trace2(:,2),'.');grid;5 _! R" Q! T! w V% {3 V
legend('解的变化','种群均值的变化')
. s" l! ~5 I6 q( ixlabel('迭代次数');ylabel('低通目标函数值');5 s) s8 q: g/ A! Q, G( `0 H
figure(3);clf;$ C* u1 ] i. ^! b# c _8 ^
plot(Highpass(v));hold on;# _; X+ k. y5 i0 s* ^5 K$ b; S4 w9 n
plot(Lowpass(v),'r-.');grid;
, G0 F. \' W/ \9 j0 V1 L( S7 \ L& B! F5 D+ y9 \: Z8 O
|
-
1.jpg
(63.87 KB, 下载次数: 1062)
-
2.jpg
(67.12 KB, 下载次数: 1012)
-
3.jpg
(47.82 KB, 下载次数: 984)
zan
|