- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:) H" Z, T% P7 }" X/ \9 j
global u;
6 {4 S; q% D! s%贝塞尔函数求根8 T. J- M# P& }' L
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
, N$ v+ M6 ^/ dmaxs=20;%要求的贝塞尔函数的非零根个数( A" W" k3 D% m$ ? J9 a- {3 Z8 V2 |4 l
incr=4.0;
! U$ H& ]" @" q1 C: D& ]- T8 Ru(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)
3 z+ |" k/ X2 V% lfor s=2:maxs
1 m) W) T; V* l% \6 f! c7 w4 g u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
. n; Z2 q z ]/ F1 tend
+ ~+ D5 e6 o3 i6 PNIND=40; %个体数目40
$ @, x, }3 R# [8 E& L+ kMAXGEN=100; %最大遗传代数100& g! e6 O/ `( b
NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度' }% x3 X2 A# E' o2 T+ s0 V% r: m
PRECI=20; %变量的二进制位数' e- U, S; B) L, U; S: Q
GGAP=0.9; %代沟
; O7 \: I' {" Btrace1=[];
) F y2 X. a* z3 m, a4 Ttrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪
, f9 B# z+ D4 v6 F%建立区域描述器9 `3 d3 O7 a1 S( K( w
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])];
! I/ X2 T9 ^: ^# C" L; jChrom=crtbp(NIND,NVAR*PRECI); %初始化种群" t$ d3 i% L0 B/ Q$ i7 a0 K
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m); U. f) H! f+ q' o5 c
gen=1; %代计数器
/ y U4 _. i2 ?0 R) A) {! w; V$ h, ~%遗传开始$ n: b8 B# P4 e" y8 m) [
while gen<MAXGEN
! S7 ?$ J; P1 f% ]' v6 X* w$ i [NIND,N]=size(Chrom);
3 H" v% u7 d8 ]- c7 U6 I! S2 v M=fix(NIND/2);
* R7 y% ]) T* A. R ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
8 r/ R& [) g" A" n$ H FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
r7 T% c7 @8 g0 I$ m* q8 x" s5 p* X SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择# r) d2 Q; e X. k y4 ^
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m): x5 X7 @# |9 {: G
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)+ g2 `8 w7 J4 O5 ~2 l7 Y/ u
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择/ E" ~' e% u" Q1 k
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并
0 h8 Q4 @% Y# c" T" s# o4 o SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组# ^4 b' ^$ A2 M) N. _( I1 d9 s+ a: F
Chrom=mut(SelCh); %变异
7 E( N7 J9 Q- V %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入$ {, x" F3 R$ O& ?4 T' K W
v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)2 ?# G6 R1 A* N
trace1(gen,1)=max(Highpass(v));
9 C3 V- V2 B/ k$ G trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
% Y. J2 ~0 W/ D: S/ h$ X$ X$ O) s trace2(gen,1)=min(Lowpass(v));
. @' e) x1 g/ d# C& t: g" D trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
: ^# ]/ C% A9 M9 H8 o gen=gen+1;- A* E2 a/ W- X! L+ X2 p) W
end
0 {8 F) D9 U6 I1 [9 k2 Mfigure(1);clf;
# n! K m' U# d# C0 ^$ X' {plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
/ M/ n! P% |. E0 Nplot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
* U2 }/ Y/ \0 f5 z' ]2 {5 J& {8 ~legend('解的变化','种群均值的变化')
3 f P" ^* c8 lxlabel('迭代次数');ylabel('高通目标函数值');# [3 U% ^1 o& w9 m
figure(2);clf;+ B% H, R/ H4 E
plot(trace2(:,1));hold on;& k5 V9 M; m A
plot(trace2(:,2),'-.');
2 U+ `2 L6 L9 D/ `) Y: }% _plot(trace2(:,1),'.');* D) g- J7 F0 O+ }
plot(trace2(:,2),'.');grid;
W' ? R( ~: O" W2 klegend('解的变化','种群均值的变化')0 o0 J& Z+ }) @) u8 |& ]( ^9 w8 [
xlabel('迭代次数');ylabel('低通目标函数值');
1 E/ W P8 I* R: `2 ~' e) v$ \figure(3);clf;5 d6 X% J! z3 h/ L
plot(Highpass(v));hold on;
+ G! T, ]& ` ]5 c9 L- d# Cplot(Lowpass(v),'r-.');grid;' J; a0 n! ~& ?
7 @4 [& G3 u( e, t |
-
1.jpg
(63.87 KB, 下载次数: 986)
-
2.jpg
(67.12 KB, 下载次数: 948)
-
3.jpg
(47.82 KB, 下载次数: 917)
zan
|