天天看點

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

一、遺傳算法簡介

1 引言

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

2 遺傳算法理論

2.1 遺傳算法的生物學基礎

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

2.2 遺傳算法的理論基礎

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

2.3 遺傳算法的基本概念

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

2.4 标準的遺傳算法

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

2.5 遺傳算法的特點

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

2.6 遺傳算法的改進方向

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

3 遺傳算法流程

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

4 關鍵參數說明

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

二、部分源代碼

%Single Link Inverted Pendulum Control
clear all;
close all;
global A B C D

%Single Link Inverted Pendulum Parameters
g=9.8;
M=1.0;
m=0.1;
L=0.5;
Fc=0.0005;
Fp=0.000002;

I=1/12*m*L^2;  
l=1/2*L;
t1=m*(M+m)*g*l/[(M+m)*I+M*m*l^2];
t2=-m^2*g*l^2/[(m+M)*I+M*m*l^2];
t3=-m*l/[(M+m)*I+M*m*l^2];
t4=(I+m*l^2)/[(m+M)*I+M*m*l^2];

A=[0,1,0,0;
   t1,0,0,0;
   0,0,0,1;
   t2,0,0,0];
B=[0;t3;0;t4];
C=[1,0,0,0;
   0,0,1,0];
D=[0;0];

e1_1=0;e2_1=0;e3_1=0;e4_1=0;
u_1=0;
xk=[-10/57.3,0,0.20,0];   %Initial state

ts=0.02;
for k=1:1:1000
time(k)=k*ts;
Tspan=[0 ts];

para=u_1;
[t,x]=ode45('chap7_12f',Tspan,xk,[],para);
z=length(x);
xk=x(length(x),:);

r1(k)=0.0;    %Pendulum Angle
r2(k)=0.0;    %Pendulum Angle Rate
r3(k)=0.0;    %Car Position
r4(k)=0.0;    %Car Position Rate

x1(k)=xk(1);
x2(k)=xk(2);
x3(k)=xk(3);
x4(k)=xk(4);

e1(k)=r1(k)-x1(k);
e2(k)=r2(k)-x2(k);
e3(k)=r3(k)-x3(k);
e4(k)=r4(k)-x4(k);

de1(k)=e1(k)-e1_1;
u1(k)=-43.304*e1(k)-6.2366*de1(k);
de2(k)=e2(k)-e2_1;
u2(k)=-6.2366*e2(k)-6.2366*de2(k);
de3(k)=e3(k)-e3_1;
u3(k)=-6.2366*e3(k)-6.2366*de3(k);
de4(k)=e4(k)-e4_1;
u4(k)=-6.2366*e4(k)-6.2366*de4(k);
u(k)=u1(k)+u2(k)+u3(k)+u4(k);


if u(k)>=10
   u(k)=10;
elseif u(k)<=-10
  	u(k)=-10;
end
	e1_1=e1(k);
	e2_1=e2(k);
	e3_1=e3(k);
	e4_1=e4(k);
	u_1=u(k);
end
ee1_1=0;ee2_1=0;ee3_1=0;ee4_1=0;uu_1=0;
xxk=[-10/57.3,0,0.20,0];   %Initial state
for i=1:1:1000
time1(i)=i*ts;
Tspan=[0 ts];

para1=uu_1;
[tt,xx]=ode45('chap7_12f',Tspan,xxk,[],para1);
zz=length(xx);
xxk=xx(length(xx),:);

rr1(i)=0.0;    %Pendulum Angle
rr2(i)=0.0;    %Pendulum Angle Rate
rr3(i)=0.0;    %Car Position
rr4(i)=0.0;    %Car Position Rate

xx1(i)=xxk(1);
xx2(i)=xxk(2);
xx3(i)=xxk(3);
xx4(i)=xxk(4);

ee1(i)=rr1(i)-xx1(i);
ee2(i)=rr2(i)-xx2(i);
ee3(i)=rr3(i)-xx3(i);
ee4(i)=rr4(i)-xx4(i);


dee1(i)=ee1(i)-ee1_1;
uu1(i)=-50*ee1(i)-10*dee1(i);
dee2(i)=ee2(i)-ee2_1;
uu2(i)=-10*ee2(i)-10*dee2(i);
dee3(i)=ee3(i)-ee3_1;
uu3(i)=-10*ee3(i)-10*dee3(i);
dee4(i)=ee4(i)-ee4_1;
uu4(i)=-10*ee4(i)-10*dee4(i);
uu(i)=uu1(i)+uu2(i)+uu3(i)+uu4(i);


if u(i)>=10
   u(i)=10;
elseif u(i)<=-10
  	u(i)=-10;
end
	 
	ee4_1=ee4(i);
	uu_1=uu(i);
end
figure(1);
plot(time,r1,'r',time,x1,'b');      %Pendulum Angle
xlabel('time(s)');ylabel('Angle');
hold on
plot(time1,xx1,'--');      %Pendulum Angle
figure(2);
plot(time,r2,'r',time,x2,'b');      %Pendulum Angle Rate
xlabel('time(s)');ylabel('Angle rate');
hold on
plot(time1,xx2,'--'); 
figure(3);
plot(time,r3,'k',time,x3,'b');      %Car Position
xlabel('time(s)');ylabel('Cart position');
hold on
plot(time1,xx3,'--'); 
figure(4);
plot(time,r4,'r',time,x4,'b');  %Car Position Rate
xlabel('time(s)');ylabel('Cart rate');
hold on
plot(time1,xx4,'--');  
figure(5);
plot(time,u,'b');                   %Force F change
xlabel('time(s)');ylabel('Force');
hold on
plot(time1,uu,'--');   

           

三、運作結果

【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】
【PID優化】遺傳算法PID控制器優化設計【Matlab 1144期】

四、matlab版本及參考文獻

1 matlab版本

2014a

2 參考文獻

[1] 包子陽,餘繼周,楊杉.智能優化算法及其MATLAB執行個體(第2版)[M].電子工業出版社,2016.

[2]張岩,吳水根.MATLAB優化算法源代碼[M].清華大學出版社,2017.

[3]周品.MATLAB 神經網絡設計與應用[M].清華大學出版社,2013.

[4]陳明.MATLAB神經網絡原理與執行個體精解[M].清華大學出版社,2013.

[5]方清城.MATLAB R2016a神經網絡設計與應用28個案例分析[M].清華大學出版社,2018.

繼續閱讀