- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
- z& I, k* u1 w: y" A: m2 P! Uglobal u;
8 \! K. O. ?6 u: S B%贝塞尔函数求根
: t4 a1 w0 \- Y%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根3 P4 `# s! }* q9 C9 j
maxs=20;%要求的贝塞尔函数的非零根个数
2 ] O! k& f+ {1 Cincr=4.0;7 D7 d& k7 m5 k% y) c' T
u(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)* f1 x0 s- p8 c
for s=2:maxs
6 }5 Y U, N, d2 { u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解
+ u8 O) L5 Y- J+ i3 Fend; e/ p9 B7 V. R# d/ k/ @
NIND=40; %个体数目40
W- y O( `3 p4 ^5 }( b7 p9 NMAXGEN=100; %最大遗传代数100
( l- v7 B1 }, RNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度
3 c9 S# F$ Z, n$ j/ O3 z4 S% r) FPRECI=20; %变量的二进制位数
. @; j: n9 a; J1 \$ AGGAP=0.9; %代沟+ r1 L6 a6 K- x- L! i/ w) x+ Z1 \
trace1=[];/ d3 Z7 B4 v9 d- q4 ?" c/ w2 }% P
trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪5 ~8 [. [, ~# ]- d0 y# D
%建立区域描述器2 b* ~7 v1 ^! w4 Z3 D& ~
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])];
/ t. N. I3 Z+ F3 Z2 Y8 LChrom=crtbp(NIND,NVAR*PRECI); %初始化种群
0 ^, _0 q% b. ^( a: a# hv=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)# Y) j: S' F9 f" W4 p+ a; X* ?% E
gen=1; %代计数器9 l4 r% D- V& J$ ~& t
%遗传开始
+ [7 B, d7 _% d+ X1 c2 bwhile gen<MAXGEN+ E7 U5 h, L; A% G: y
[NIND,N]=size(Chrom);- D! g; P: E- d( _; g$ G
M=fix(NIND/2);
0 l' `$ ^# l8 ^7 q" ^ ObjV1=Highpass(v(1:M,); %分组后高通目标函数值(单位m)% P% N% f1 B3 [( `- w: x
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)7 w1 r0 U. _/ f9 | j% a
SelCh1=select('sus', Chrom(1:M,,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择
6 c( ~ U; y; ]9 u ObjV2=Lowpass(v(M+1:NIND,); %分组后低通目标函数值(单位m)
7 G/ A: t( k5 x4 N FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值), ]) w l* f$ Q1 U* a
SelCh2=select('sus', Chrom((M+1):NIND,,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择6 [/ @, J1 O8 N7 I2 {
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并( u- c. r5 X( q" B' B4 w: W, ^
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组4 x7 X8 @7 ]% N- R( d+ P
Chrom=mut(SelCh); %变异
. L/ o7 R7 b5 l1 h( y& J4 O %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
: Y5 X9 {% ~ @2 p: p v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)
4 j! \, C: c# l6 w% I! x trace1(gen,1)=max(Highpass(v));
7 I. U6 D8 y& `% C5 s1 Z trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
9 u6 D) `& I' L5 \: p1 q trace2(gen,1)=min(Lowpass(v));5 W9 p! d- V- R6 A3 Z, ~
trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
; k& b9 P( T5 c q. X& C gen=gen+1;
% d& p5 P) c: L X5 d5 Zend
/ H6 q' R4 J+ k, |: `4 Hfigure(1);clf;3 L* r; ^- _: Q2 K' R9 C& T
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');3 j5 p0 z! ^# b" n5 H
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;& X& A7 E g. g/ j/ m
legend('解的变化','种群均值的变化')# N5 f! c# @* F! P; O+ V, r
xlabel('迭代次数');ylabel('高通目标函数值');/ E6 r4 C0 n5 s* T/ ]* P, ^& }
figure(2);clf;
, e1 M2 D/ B1 M7 vplot(trace2(:,1));hold on;# F" B/ W- T Y$ N) }
plot(trace2(:,2),'-.');
% q* K% m/ }' {! I: R" o; k/ Qplot(trace2(:,1),'.');
) t! E6 V) T/ f+ T Dplot(trace2(:,2),'.');grid;5 _4 p- [2 L) _4 q" Y( r$ z
legend('解的变化','种群均值的变化')' h A0 z/ c* l+ n* N
xlabel('迭代次数');ylabel('低通目标函数值');
% X$ x# v: M% Bfigure(3);clf;
# R# ]% ^% H/ I2 l- Pplot(Highpass(v));hold on;5 z6 {, D+ ?6 a$ u
plot(Lowpass(v),'r-.');grid;. x- a9 L( x4 X# P& [5 x1 s
) B! R( w/ U* y |
-
1.jpg
(63.87 KB, 下载次数: 684)
-
2.jpg
(67.12 KB, 下载次数: 664)
-
3.jpg
(47.82 KB, 下载次数: 640)
zan
|