EDA365电子论坛网
标题:
文件:Untitled.m 行:8 列:40 不是所需的 MATLAB 表达式?
[打印本页]
作者:
qpggup
时间:
2019-8-16 14:35
标题:
文件:Untitled.m 行:8 列:40 不是所需的 MATLAB 表达式?
clc
3 p& n D9 B2 `/ ^7 d
clear all
! }2 c" J7 Y7 I' f, r: Z
close all
0 {5 e; r# n- L' U0 Y
%% 画出函数图
1 ?3 `4 Y( ~4 |8 Z4 b
figure(1);
2 G& S+ h0 w- z1 a1 c+ e+ P5 u
lbx=-2;ubx=2;
: d5 m2 q5 f8 @4 D
lby=-2;uby=2;
$ g/ e% H; u& w: ^
ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',[1bx,ubx,1by,uby],50);
4 u3 T' F0 l% C* K
hold on;
: e7 B, q8 X7 F( q4 S9 \
%% 定义遗传算法参数
4 c$ b6 X3 A* Z( U# o
NIND=40;
( l& w$ p( a" m% ?9 t
MAXGEN=20;
: o1 d) S' P' v5 I. X
PRECI=20;
7 t+ r9 d+ g1 q+ N5 a
GGAP=0.95;
9 v& h O9 |* G9 J, W3 m
px=0.7;
/ [3 P8 c4 c- ]+ l- ]5 g* s4 @
pm=0.01;
0 s3 W4 x- }& }8 ^
trace=zeros(3,MAXGEN);
8 `$ ?9 s9 ` _1 s3 Y9 w
FieldD=[PRECI PRECI;lbx 1by;ubx uby;1 1;0 0;1 1;1 1];
: B3 G6 ^$ n0 q+ ^, b& H
Chrom=crtbp(NIND,PRECI*2);
: L% |: U) L2 ]7 I. A
%% 优化
1 a" O+ [% Q) l
gen=0;
' ~; Z' ~1 [) o* X. _# d! G, j
X=bs2rv(Chrom,FieldD);
2 \ i- [+ r: I
X=XY(:,1);Y=XY(:,2);
; @: g6 B K- j
ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y);
$ b9 D9 j `; j( ^7 @1 W/ X
while gen<MAXGEN
+ P1 `' S9 b- M8 x
FitnV=ranking(-ObjV);
0 M8 R+ f$ @; g3 o! z9 v" ]
SelCh=select('sus',Chrom,FitnV,GGAP);
0 c: ~ m! \4 b
SelCh=recombin('xovsp',SelCh,px);
- f- s2 E2 D1 g$ ]& u1 F& |
SelCh=mut(SelCh,pm);
# N1 `- ^3 t( F, z" y1 ~: H# w1 o
X=bs2rv(SelCh,FieldD);
- Z2 \, H0 R( z- U8 _0 R
X=XY(:,1);Y=XY(:,2);
8 X, n8 g5 F" P& g9 S3 O6 F/ j
ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y);
$ z: m; m0 N- i1 Z
[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);
. ~) ~8 F; {9 Y
X=bs2rv(Chrom,FieldD);
$ k& Y6 x6 s7 x6 e% u
gen=gen+1;
$ o$ G+ A% ]* E0 F" F
%获取每代的最优解及其序号,Y为最优解,I为个体的序号
5 c6 p: y7 B' R# ]9 Z* h0 f" t
[Y,I]=min(ObjV);
|) y- |" ?+ u" a T8 K7 L
trace(1,2,gen)=XY(I,
;
1 u" L- P9 g% B/ e+ r! Z
trace(3,gen)=Y;
7 E$ G7 B, ]1 Q. f$ M
end
" y! x9 O' }2 T6 W
plot3(trace(1,
,trace(2,
,trace(3,:),'bo');
1 J9 V' K4 a1 J$ M. ?
grid on;
3 e3 z4 a* ]9 [" i& e7 E! i: b6 r
plot3(XY(:,1),XY(:,2),ObjV,'bo');
0 }' p5 c6 Q1 Q$ q& L/ a0 ^
hold off
) W1 L& Z2 ?" q* t, c7 B3 P E2 B' n
%% 画进化图
" P& N8 }! u7 y( K& ~$ q) [! Q$ I
figure(2);
6 l5 b; V2 o4 c: A2 ~" x. @) r$ B
plot(1:MAXGEN,trace(3,:));
* m: ]: L! H8 H5 e& ^8 B; |
grid on
7 b9 G1 g) A4 J! f
xlabel('遗传代数')
' k7 f4 p1 ?( E4 O
ylabel('解的变化')
5 K5 W& b8 q g* M- Q/ O
title('进化过程')
! ?3 x$ z3 S( F4 \& q; }9 U
bestZ=trace(3,end);
4 |; I' p/ b; ^% m) g F
bestY=trace(2,end);
4 t* Z) s) k* z( Y
bestX=trace(1,end);
7 E% y- V$ C! n; D( U
fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\nZ=',num2str(bestZ),'\n'])
* V' M" B1 W' J# P" t
作者:
relchhiclty
时间:
2019-8-16 17:44
1bx和1by里面的数字1改成小写字母l(L的小写),这样才跟6和7行的相同啊
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2