- 在线时间
- 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体力
在多目标优化时,优化结果没有同时让目标满足要求,下面是我的主代码和所得结果,请大神帮忙解答:. O2 I& J1 z1 y& G; i8 N, B
global u;( H3 R! x( }0 U8 q6 q' M& b' l
%贝塞尔函数求根
4 S+ M% k; B# ~5 `6 J% N%设定模式数为20,对于TE模式需要求得一阶贝塞尔函数的前20个非零根
$ l& q3 _) y, o4 M* C. Z* Dmaxs=20;%要求的贝塞尔函数的非零根个数
0 V, O4 f0 j' I( z( }- Xincr=4.0;
+ q$ H B h& _/ b) z1 X! R4 du(1,1)=fzero(@(x)besselj(1,x),3.9);%一阶贝塞尔函数的第一个解(在3.9附近)2 D9 h8 G4 p% @: w8 w/ J
for s=2:maxs5 y& |( y5 ]! i" V; |* G5 E- k0 P8 E
u(1,s)=fzero(@(x)besselj(1,x),u(1,s-1)+incr);%在第一个解加4附近求零阶贝塞尔函数的第二个及以上的解4 j7 S* U! x& ?7 g4 p
end. f' |) R9 u, T; |7 Q) a
NIND=40; %个体数目408 W7 C! B: h" f* h+ r9 n4 t1 q4 S/ G
MAXGEN=100; %最大遗传代数100
8 a; f/ B* {' M% ?NVAR=10; %变量个数为10,前五个为半径,后五个位直波导长度1 B0 X/ Y$ M+ j2 x4 }7 W* ]& A- M
PRECI=20; %变量的二进制位数* Q7 r; }9 P# f7 k( N
GGAP=0.9; %代沟$ H9 J" P* H& O
trace1=[];
/ s( \- O( x8 T! ]; S7 ltrace2=[]; %性能跟踪器,1、2分别为第一目标函数、第二目标函数的跟踪( T$ @! z' ~- t+ b* }
%建立区域描述器 m2 z# v% R9 @
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])];& j, V0 A0 o$ B
Chrom=crtbp(NIND,NVAR*PRECI); %初始化种群0 C; I X! A8 m L7 h
v=bs2rv(Chrom,FieldD)/1000; %初始种群十进制转换(单位由mm转换为m)0 I- i: g1 m; n& R5 R9 a8 i& E* V
gen=1; %代计数器1 x, ~& L {9 ^ D3 |) {# X! ^2 f7 t
%遗传开始
. O/ X' O( _0 z! M+ |while gen<MAXGEN0 M! `: t5 c9 v7 U3 U
[NIND,N]=size(Chrom);
" D" m, H, h) b |$ ?" O M=fix(NIND/2);- E: B4 a0 j' r
ObjV1=Highpass(v(1:M, ); %分组后高通目标函数值(单位m)/ b* p& Q e A) e1 y5 e/ H
FitnV1=ranking(-ObjV1); %分配高通适应度值(求最大值)
) {9 s, n# a3 P% Z! F SelCh1=select('sus', Chrom(1:M, ,FitnV1,GGAP); %调用随机遍历抽样函数sus对第一组种群基于适应度值进行选择1 B- G9 [* D0 h7 o2 ]5 b p
ObjV2=Lowpass(v(M+1:NIND, ); %分组后低通目标函数值(单位m)
; ~" _$ s, H$ ?: J" F FitnV2=ranking(ObjV2); %分配低通适应度值(求最小值)
I P% x& r5 b SelCh2=select('sus', Chrom((M+1):NIND, ,FitnV2,GGAP); %调用随机遍历抽样函数sus对第二组种群基于适应度值进行选择
2 F/ }* ^& N2 O) w* s/ S7 E SelCh=[SelCh1;SelCh2]; %将两组选择后种群进行合并% ^- i3 o8 p0 T6 q* [
SelCh=recombin('xovsp',SelCh,0.7);%以0.7的交叉概率进行单点交叉重组+ x- ]" I, g( G6 @
Chrom=mut(SelCh); %变异
0 P! W& ^* p4 _# \ %Chrom=reins(Chrom,SelCh); %随机均匀选择重插入
2 T! H% C3 x6 a v=bs2rv(Chrom,FieldD)/1000; %将进化后种群十进制转换(单位由mm转换为m) W' M- u! @& ~( Z/ ~4 a# `
trace1(gen,1)=max(Highpass(v));
4 V1 _0 i5 B% q: k trace1(gen,2)=sum(Highpass(v))/length(Highpass(v));
4 T/ g3 }' f- h+ ]; \+ V trace2(gen,1)=min(Lowpass(v));
) R7 B2 Y1 \; }7 b trace2(gen,2)=sum(Lowpass(v))/length(Lowpass(v));
3 i$ r( H4 \: z gen=gen+1;: v. Q+ a j& A) W+ r) S. t* m
end
8 }" m* Z) m9 X8 Q" ^2 Efigure(1);clf;
a: `: ~+ J+ d1 l8 e7 j- Tplot(trace1(:,1));hold on;plot(trace1(:,2),'-.');4 R u8 Z3 s m% y# x# M+ p
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid;. k! [' }* q3 W
legend('解的变化','种群均值的变化')
$ b; f9 M3 x9 k: { j! i: x. _ [xlabel('迭代次数');ylabel('高通目标函数值');
+ p1 n9 p& D, \7 U: Rfigure(2);clf;
/ l; ^3 e' `$ `8 j: Vplot(trace2(:,1));hold on;
8 a1 z0 P) K# s: e& _# Z5 n) W; Yplot(trace2(:,2),'-.');0 ~ A _; s( m& Z4 F# W
plot(trace2(:,1),'.');
) C ` C" i5 @: y# Eplot(trace2(:,2),'.');grid;/ X4 }. y* Z! u& D' ~1 R
legend('解的变化','种群均值的变化'): {9 }% }+ T/ N9 U
xlabel('迭代次数');ylabel('低通目标函数值');5 X- `9 s2 \$ m% Q0 {
figure(3);clf;
4 y! Y7 X7 r' ?2 m, Qplot(Highpass(v));hold on;% Y" f/ R+ A: M% f1 i
plot(Lowpass(v),'r-.');grid;
6 {0 w) K/ @2 v; n- f2 i
" M8 `, r9 ^$ o) _; Y7 j7 O |
-
1.jpg
(63.87 KB, 下载次数: 1050)
-
2.jpg
(67.12 KB, 下载次数: 1009)
-
3.jpg
(47.82 KB, 下载次数: 981)
zan
|