- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:
2 o3 e( b+ D8 @( O0 r0 s7 @global u;
( ^ \7 V/ w4 P& q+ Z+ t% L0 |%贝塞尔函数求根. Q+ }: u* F0 X2 A
%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
3 H% a. K6 V4 b; X$ P9 Omaxs=20;%要求的贝塞尔函数的非零根个数/ e( @2 L5 N4 U: F2 H5 _1 [/ ?
incr=4.0;
; \/ Y9 E+ E) d/ E& Su(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)) A' q( k: O7 x: k& v
for s=2:maxs
# j' W6 W+ H$ b% R( N6 r u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解/ H% n; v5 L0 P0 i: G
end
$ {# n) H" i' i: ]9 X, uNIND=40; %个体数目40. `2 M: P9 q( `7 p! [/ M
MAXGEN=100; %最大遗传代数100
& z" k" e* W9 u* QNVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度3 O, M: z% b- k
PRECI=20; %变量的二进制位数, ~& ~0 k8 `; |6 S3 G$ J. Q
GGAP=0.9; %代沟
: `2 C1 w# e, o9 {6 Ctrace1=[];
3 ]. w9 U. S$ D% Z% m" Z4 n; ]trace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪) `- F) t1 E, [ q, s1 F' e3 g( n5 D2 V
%建立区域描述器% {$ C) b4 ~: S9 ]
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])];
! z4 E) K; l& |& u$ B" K2 ^0 RChrom=crtbp(NIND,NVAR*PRECI); %初始化种群
# J& q1 S" d" T6 V3 h# r" N: [8 |v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)- c3 q: {8 Q9 v( b3 I
gen=1; %代计数器8 o# R1 r, U$ P2 Q
%遗传开始
/ B/ h9 l. T8 J% o( }while gen<MAXGEN
8 g& S% \( Z: [1 [2 x7 \+ Q5 L9 b [NIND,N]=size(Chrom);
2 k) G* k7 j! f- U: c! a M=fix(NIND/2);" u% I7 o/ G6 a; o! S7 i
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)
9 f& D, j% W) t FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
* Q( @; k' ?1 F! E' z( F1 l4 J. G SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择/ q! {* P, i$ S1 q
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)0 I/ X6 F3 q: w( _
FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值); s( y8 t1 f1 g+ Z3 u6 }1 G
SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择( h( S5 {0 L" g, ~' n
SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并1 {/ c. G, b1 w& c
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组( w8 @" _: `& v2 y
Chrom=mut(SelCh); %变异
. ]0 i1 ^. U, b- ?7 X8 s$ x& _ %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
# w3 V; B5 e' W8 }8 U; l7 I, [5 `9 ? v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m)1 e6 F; v8 F0 A# p$ ?2 V# v( }
trace1(gen,1)=max(Highpass(v));
+ p# w0 N: ~! X i trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));; W' w" j8 w5 E
trace2(gen,1)=min(Lowpass(v));
3 U. S; |) Q% J5 h trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
: G; S/ m/ e" J: H3 B gen=gen+1;& w2 Y$ e, F/ I" @$ A( H6 t. q1 r
end
% A1 G# D: `2 c! zfigure(1);clf;
* S+ |. ]4 i9 ]: U4 H" Kplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
8 H k+ m1 Y" z" [( j2 U- U& L* ]( ^plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;
3 b; K; N% I+ } r8 h! Z) Tlegend('解的变化','种群均值的变化')! H; q) \, v, B4 s# I0 q
xlabel('迭代次数');ylabel('高通目标函数值');
! {7 l$ l* _1 X6 K) C. h ]+ G; qfigure(2);clf;* q' b( d) Z$ b: t6 ^1 E; d8 L0 I
plot(trace2(:,1));hold on;5 ^% T/ K K b4 Y7 u' b- m0 w, g
plot(trace2(:,2),'-.');
4 e4 S$ z' O: ]$ a- cplot(trace2(:,1),'.');8 y6 M9 K0 P2 A5 ]
plot(trace2(:,2),'.');grid;% [3 o: n8 N% X1 m; V! O
legend('解的变化','种群均值的变化') D, n% K$ e4 J1 y x# _$ c
xlabel('迭代次数');ylabel('低通目标函数值');0 Y) b8 i/ ^! M$ j) }0 K& W1 y
figure(3);clf;
( f2 L2 Z) `) m2 X, |! E2 Uplot(Highpass(v));hold on;
) U$ C% v" |' l1 G. @1 `1 \plot(Lowpass(v),'r-.');grid;$ T$ ]; S1 b: q L0 A- S! ^6 f
. g" i; b% ?, E- l% @- s. g
|
-
1.jpg
(63.87 KB, 下载次数: 1061)
-
2.jpg
(67.12 KB, 下载次数: 1012)
-
3.jpg
(47.82 KB, 下载次数: 984)
zan
|