- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:9 Q/ g2 m* D# o- j* y
global u;; C2 B: y+ D! `+ w. A" e+ s9 m' D
%贝塞尔函数求根2 Y1 d5 B I4 _: t+ C7 x }( V
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根9 W0 l4 f% b( y' \2 [
maxs=20;%要求的贝塞尔函数的非零根个数
8 b7 Z+ c! F0 l5 l8 _& {$ I1 @incr=4.0;/ `3 E# T V& c! x$ P; w
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)6 k+ [; Y8 I6 ~# X; a9 J# _6 ?2 P
for s=2:maxs
% d# J! J( W' F/ `) k8 K' o8 Z u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解) @1 ~: E$ o) o4 ^+ `
end9 X Y. x, @& b6 U0 M1 Z% Y" N
NIND=40; %个体数目40( x- m, a L4 L$ l N6 R6 o% M
MAXGEN=100; %最大遗传代数1008 C8 x4 [$ P; q3 Z
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度' K: A' s, @0 Q; f1 w, @
PRECI=20; %变量的二进制位数5 }2 `0 L- Q( @
GGAP=0.9; %代沟
: Q. s% I) |' r8 D" J. M! xtrace1=[];
% {# f& Z3 o7 _! V6 Strace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪" ~6 B( Y- ^' h# s9 l! W2 {/ A
%建立区域描述器- M- P) C4 d$ O! P5 ]( H V! h2 R
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])];
b, f$ h1 \/ ]% M2 q U! RChrom=crtbp(NIND,NVAR*PRECI); %初始化种群
( m* i4 K& |! U. O( @" ^ |$ K0 R) sv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)4 \/ G: }3 L4 J! h& y# E: \. @
gen=1; %代计数器5 U R; `$ l8 \& ^1 S6 Q
%遗传开始
O, |. E+ ^6 J. S' I/ mwhile gen<MAXGEN
. p9 f. D* ?: D [NIND,N]=size(Chrom);
: q7 Y- B4 i% c( }# p) `& K9 p l M=fix(NIND/2);
# V) z6 n, M6 d( ~8 T ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)) O( @- r+ N5 u# I' k
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
/ ~4 ` H: A. `5 q" _+ T$ B SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择& F# J* r- I) z
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)# h/ ^. ^4 M7 c
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
1 u( q7 R1 U7 O/ \7 { SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择5 `6 p7 E2 D5 F1 J! T- |
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并. R8 l! C9 j' i3 b; ]( ]
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组7 z% p/ N4 @ p( X! Y( M( O4 P
Chrom=mut(SelCh); %变异* s% ~7 R8 v$ h6 O, c
%Chrom=reins(Chrom,SelCh); %随机均匀选择重插入5 ^- ?% v4 e O
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
) `7 o9 d, Z2 i$ T2 q trace1(gen,1)=max(Highpass(v));
* I* M: o& b: n9 H/ z, | trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
; y+ ~5 ?9 Z; G- r/ x# _# L trace2(gen,1)=min(Lowpass(v));' \# Q/ [* p7 `( x, W4 a( K- q
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
7 y1 ]: r0 }# | gen=gen+1;
& G1 U* X$ p& i( Y# a" a) Lend
: J w1 g \' m" O2 D1 [figure(1);clf;
) q5 c2 s' V* m, n8 ?, ?) q) n- Xplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');' Y5 ~9 W" r3 x. p
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;! D7 }/ J9 v/ V: v8 w8 T
legend('解的变化','种群均值的变化')
% H! V* k5 }5 }5 y/ q. Oxlabel('迭代次数');ylabel('高通目标函数值');
. t x, D0 K7 z6 V" Kfigure(2);clf;! j% i8 i$ Q, f
plot(trace2(:,1));hold on;
$ o% V, q- x, f! rplot(trace2(:,2),'-.');
: B4 H! G1 T Iplot(trace2(:,1),'.');) _# F& s2 e; o5 _
plot(trace2(:,2),'.');grid;+ G; |# u1 _6 ^# F; u
legend('解的变化','种群均值的变化')
7 b' O N: S+ o3 s4 @xlabel('迭代次数');ylabel('低通目标函数值');
8 V. e# s u1 I# Rfigure(3);clf;
: D2 A( s( T% V* ?0 T, @- U7 R3 C. Splot(Highpass(v));hold on;! b. C. H' ?. J! g7 J) a$ {
plot(Lowpass(v),'r-.');grid;
, q Q* U$ K9 c- B; O7 {) _# O
# @4 e; b: {6 Y- Q |
-
1.jpg
(63.87 KB, 下载次数: 1065)
-
2.jpg
(67.12 KB, 下载次数: 1015)
-
3.jpg
(47.82 KB, 下载次数: 988)
zan
|