智能控制理论

智能控制实验报告

(2008~2009 学年 春季 学期)

课程名称: 任课教师:杜尚丰 班 级:自动061 学 号:0608140612 姓 名:孙倩

实验题目1: SISO PID神经网络控制

姓名: 孙倩 班级: 自动化061 学号: 0608140612

一、仿真模型描述

单变量P I D神经网络的结构形式如下:

单变量神经网络的结构图

本实验用PID 神经网络实现单输入单输出解耦系统的模型仿真,用到的仿真模型为:

y(k+1)=0.8sin(y(k))+1.2u(k), k

系统输入: r(k)=1(k)

二、仿真参数说明

系统的输入向量是:r(k)=1;

输出向量是:y(k+1);

系统的控制向量为:u(k);

准则函数为:

E 1(k ) =

12

[r 1(k ) -y 1(k )]

2

权系地训练(取η1=η2=0.8)方式:

W(k+1)=W(k)- η

可得:

w i (k+1)=w i (k)+ ηe(k+1)oi (k)+β[w i (k)-w i (k-1)]

1

w j (k+1)=1w j (k)+ ηe(k+1)f[xj (k)][2w j (k)]y(k)+ β[1w j (k)-1w j (k-1)]

2

2

2

2

+β[W(k)=W(k-1)]

三、仿真结果分析

以下四幅图分别是系统输入r ,系统输出y ,系统控制量u ,以及系统误差error.

2

系统输出y 1

系统输入r 1

1.5

1.5

10.50

1

0.5

00.2

0.40.6时间(秒)

0.8

00.2

0.40.6时间(秒)

0.8

0.80.6

0.40.20

系统误差e r r o r 1

系统控制量u 1

1

0.5

00.2

0.40.6时间(秒)

0.8

-0.5

00.2

0.40.6时间(秒)

0.8

1、从图中我们可以看得到:当对象特性变化(k≥40) 时,由于PID 神经网络控制 器权系值地不断调整,使控制量u(k)变化,从而系统地输出经过很短的时间跟踪输入。

2、通过PID 控制算法,在系统控制量的作用下我们最终实现了跟踪控制,动态响应性能非常好,达到了输出量y 稳态误差为零的效果。

四、仿真程序:

%PID神经网络单输入单输出解耦模型仿真 %输入为1

%输入层单独成神经网,输出成一个神经网 clear all; close all; s=1;

if s==1 %初始化 y1_1=0.0;

u1_1=0.0;u1_2=0.0;

error1_1=0.0;error1_2=0.0;

wo_111=0.1*rand(1);wo_111_1=wo_111; wo_112=0.1*rand(1);wo_112_1=wo_112; wo_113=0.1*rand(1);wo_113_1=wo_113; wo_121=0.1*rand(1);wo_121_1=wo_121; wo_122=0.1*rand(1);wo_122_1=wo_122; wo_123=0.1*rand(1);wo_123_1=wo_123; wi_111=0.1*rand(1);wi_111_1=wi_111; wi_112=0.1*rand(1);wi_112_1=wi_112; wi_121=0.1*rand(1);wi_121_1=wi_121; wi_122=0.1*rand(1);wi_122_1=wi_122; wi_131=0.1*rand(1);wi_131_1=wi_131; wi_132=0.1*rand(1);wi_132_1=wi_132; x11=0.0;x12=0.0;x13=0.0; q11=0.0;q12=0.0;q13=0.0;

x11_1=x11;x12_1=x12;x13_1=x13; q11_1=q11;q12_1=q12;q13_1=q13; end

ts=0.001; for k=1:1:800 time(k)=k*ts;

if s==1 r1(k)=1; if 1

y1(k)=0.8*sin(y1_1)+1.2*u1_1; else

y1(k)=0.8*sin(0.4*y1_1)+1.2*u1_1; end

error1(k)=r1(k)-y1(k); end

%中间层输入输出

x11(k)=wi_111_1*r1(k)+wi_112_1*y1(k); x12(k)=wi_121_1*r1(k)+wi_122_1*y1(k); x13(k)=wi_131_1*r1(k)+wi_132_1*y1(k); if x11(k)>1 q11(k)=1; elseif x11(k)

else q11(k)=x11(k); end

if(q12_1+x12(k))>1 q12(k)=1;

elseif (q12_1+x12(k))

else q12(k)=q12_1+x12(k); end

if (x13(k)-x13_1)>1 q13(k)=1;

elseif (x13(k)-x13_1)

else q13(k)=x13(k)-x13_1;

end

%输出层输入输出,输出层输入输出相等

u1(k)=wo_111_1*q11(k)+wo_112_1*q12(k)+wo_113_1*q13(k); %中间层到输出层权值计算 wo if u1_1==u1_2 delta1(k)=0; else

delta1(k)=error1(k)*sign((y1(k)-y1_1)/(u1_1-u1_2)); end

wo_111(k)=wo_111_1+0.1*delta1(k)*q11(k); wo_112(k)=wo_112_1+0.1*delta1(k)*q12(k); wo_113(k)=wo_113_1+0.1*delta1(k)*q13(k); wo_121(k)=wo_121_1; wo_122(k)=wo_122_1; wo_123(k)=wo_123_1;

%输入层到中间层权值计算wi if x11(k)==x11_1 dqx_11(k)=0;

else

dqx_11(k)=sign((q11(k)-q11_1)/(x11(k)-x11_1)); end

if x12(k)==x12_1 dqx_12(k)=0;

else

dqx_12(k)=sign((q12(k)-q12_1)/(x12(k)-x12_1)); end

if x13(k)==x13_1 dqx_13(k)=0; else

dqx_13(k)=sign((q13(k)-q13_1)/(x13(k)-x13_1)); end

if u1_1==u1_2 wo_11(k)=0; Else

wo_11(k)=error1(k)*sign((y1(k)-y1_1)/(u1_1-u1_2)); end

wi_111(k)=wi_111_1+0.15*(wo_11(k)*wo_111(k))*dqx_11(k)*r1(k);

wi_112(k)=wi_112_1+0.15*(wo_11(k)*wo_111(k))*dqx_11(k)*y1(k); wi_121(k)=wi_121_1+0.1*(wo_11(k)*wo_112(k))*dqx_12(k)*r1(k); wi_122(k)=wi_122_1+0.1*(wo_11(k)*wo_112(k))*dqx_12(k)*y1(k); wi_131(k)=wi_131_1+0.1*(wo_11(k)*wo_113(k))*dqx_13(k)*r1(k); wi_132(k)=wi_132_1+0.1*(wo_11(k)*wo_113(k))*dqx_13(k)*y1(k); %参数更新

wo_111_1=wo_111(k); wo_112_1=wo_112(k); wo_113_1=wo_112(k); wo_121_1=wo_121(k); wo_122_1=wo_122(k); wo_123_1=wo_123(k); wi_111_1=wi_111(k); wi_112_1=wi_112(k); wi_121_1=wi_121(k); wi_122_1=wi_122(k); wi_131_1=wi_131(k); wi_132_1=wi_132(k); y1_1=y1(k);

u1_2=u1_1;u1_1=u1(k);

error1_2=error1_1;error1_1=error1(k); x11_1=x11(k);x12_1=x12(k);x13_1=x13(k); q11_1=q11(k);q12_1=q12(k);q13_1=q13(k); end

figure(1);

plot(time,r1,'r');

xlabel('时间(秒)');ylabel('系统输入r1'); figure(2);

plot(time,y1,'r');

xlabel('时间(秒)');ylabel('系统输出y1'); figure(3);

plot(time,u1,'r');

xlabel('时间(秒)');ylabel('系统控制量u1'); figure(4);

plot(time,error1,'r');

xlabel('时间(秒)');ylabel('系统误差error1');

五、实验总结

PI D 神经网络单变量制器通过学习和训练,根据系统控制效果自主调整网

络权值,具有良好的动态和稳态控制性能,当系统参数发生变化后,P I D 神经网络控制器通过再次的学习和调整,可以实现迅速跟踪控制 。

实验题目2:神经网络自校正控制

姓名: 孙倩 班级: 自动化061 学号: 0608140612

一、仿真模型描述

被控对象具有非线性时变特性,仿真模型为:

y (k +1) =0. 8sin(y (k )) +1. 2u (k ) 0

y (k +1) =0. 8sin(y (k )) +y (k ) /7+1. 2u (k ) k >=200

该自校正系统的控制框图为:

二、仿真参数说明

系统输入为:

r (k ) =1(k ), 0=300r (k ) =-1(k ), 100

作用于被控对象的扰动为:

v (k ) =0. 04, k =50v (k ) =0, k ≠50

权值调整方式为BP 算法:

V (k )=V (k -1)+∆V (k )+α(V (k -1)-V (k -2))

∂E (k )

∆w j (k )=-ηw =ηw (y (k )-y m (k ))h j (k )

∂w j (k )

∂E (k )∆v j (k )=-ηv =ηv (y (k )-y m (k ))h j (k ) ∂v j (k )

三、仿真结果分析

当单位阶跃的输入时,我们可以看到如下的结果:

1、从该系统对扰动的迅速响应,我们可以得知自校正控制的优越性。 2、上面第一个图所示为控制器输出u(k),说明自校正控制器能对非线性、不确定、不确知系统实现有效的控制。

3、第二个图所示为系统输出y (k )再输入r 变化(k=100,k=300)、扰动作用(k=50)及对象特性变化(k=200)时的情况,说明神经自校正控制具有很好的自适应性和鲁棒性。

四、仿真程序

%Self-Correct control based BP Identification clear all; close all; xite1=0.15; xite2=0.50; alfa=0.05; w=0.5*ones(6,1); v=0.5*ones(6,1); cij=0.50*ones(1,6);

bj=5*ones(6,1); h=zeros(6,1); w_1=w;w_2=w_1; v_1=v;v_2=v_1; u_1=0;y_1=0; ts=0.02;

for k=1:1:5000 time(k)=k*ts; end if 0

else if 100

if 0

g(k)=0.8*sin(y_1); else

g(k)=0.8*sin(y_1)+(y_1)/7; end

f(k)=1.2;

y(k)=g(k)+f(k)*u_1; for j=1:1:6

h(j)=exp(-norm(y(k)-cij(:,j))^2/(2*bj(j)*bj(j))); end

Ng(k)=w'*h;

Nf(k)=v'*h;

ym(k)=Ng(k)+Nf(k)*u_1; e(k)=y(k)-ym(k); d_w=0*w; for j=1:1:6

d_w(j)=xite1*e(k)*h(j); end

w=w_1+d_w+alfa*(w_1-w_2); d_v=0*v;

for j=1:1:6

d_v(j)=xite2*e(k)*h(j)*u_1; end

v=v_1+d_v+alfa*(v_1-v_2); u(k)=-Ng(k)/Nf(k)+r(k)/Nf(k); u_1=u(k); y_1=y(k); w_2=w_1; w_1=w; v_2=v_1; v_1=v; end figure(1);

plot(time,y_1,'b'); xlabel('(s)');ylabel('y'); figure(2);

plot(time,u_1,'b'); xlabel('(s)');ylabel('u');

五、实验总结

从仿真结果来看,神经网络自校正控制器具有很高的精度和很强的适应性, 取得了较好的控制效果。它既保证了控制的鲁棒性好的特点,又借助了神经网络的自学习、自组织的能力,可实现智能控制器参数的在线自整定和优化,有效地提高模糊控制器的精度和抗干扰的能力,避免了人工整定参数的繁琐工作。

实验题目3: Fuzzy PID控制

姓名: 孙倩 班级: 自动化061 学号: 0608140612

一、 仿真模型描述

Fuzzy PID控制器结构图如下:

Fuzzy PID 控制的我们实验采用的模型是

G p (s ) =

523500

s +87.35s +10470s

3

2

对于该模型,我们在试验中设置的采样时间是1m s ,采用模糊PID 控制进行阶跃响应,在第300个采样时间控制器输出加1.0的干扰。

二、 仿真参数说明

采样时间: 1ms, 系统输入: r(k)=1, 系统输出: y(k) 控制器输出:u(k)为 误差: e(k )

比例系数: K P , 积分系数K I , 微分系数 K D

三、仿真结果分析

系统仿真图如下:

仿真时在第300个采样点的时候人为的加入了一个幅值为1的脉冲干扰:

1. 输入输出及误差图像:

r i n , y o u

t

e r r o r

time(s)

time(s)

2. 控制器的输出:

u

time(s)

3.PID 参数ki ,kp ,kd 的自适应调整:

k

p

time(s)

k

i

time(s)

k d

time(s)

4. 以下两幅图是语言变量e 和ec 的隶属函数关系设计图,通过修改程序中的数值可以改变它们的隶属函数关系

:

(1)程序中包括模糊变量e 和ec ,PID 控制参数Kp ,Ki 和Kd 。其中e 和ec 的论域范围是(-3,3),关于各个变量的隶属度设计程序中已经加载,并且在程序运行之后的GUI 界面下也能清楚的看到。

(2)模糊控制规则是基于手动控制策略而做出的,主要作用是用来修正PID 参数的,它是控制领域内技术人员根据过程的阶跃响应情况的经验总结,在进行一定得处理后得到的。

(3)在我们的仿真模型中为了看到Fuzzy PID 控制的作用,我们在程序运行到第300个采样点的时候认为的加入了一个幅值为1的脉冲干扰,作为我们Fuzzy

PID 控制规则动态调整PID 参数能力的一个检验。

四、仿真程序:

%Fuzzy Tunning PID Control clear all; close all;

a=newfis('fuzzpid');

a=addvar(a,'input','e',[-3,3]); %Parameter e

a=addmf(a,'input',1,'NB','zmf',[-3,-1]); a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]); a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]); a=addmf(a,'input',1,'Z','trimf',[-2,0,2]); a=addmf(a,'input',1,'PS','trimf',[-1,1,3]); a=addmf(a,'input',1,'PM','trimf',[0,2,3]); a=addmf(a,'input',1,'PB','smf',[1,3]);

a=addvar(a,'input','ec',[-3,3]); %Parameter ec

a=addmf(a,'input',2,'NB','zmf',[-3,-1]);

a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]); a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]); a=addmf(a,'input',2,'Z','trimf',[-2,0,2]); a=addmf(a,'input',2,'PS','trimf',[-1,1,3]); a=addmf(a,'input',2,'PM','trimf',[0,2,3]); a=addmf(a,'input',2,'PB','smf',[1,3]);

a=addvar(a,'output','kp',[-0.3,0.3]); %Parameter kp

a=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]); a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]); a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]); a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]); a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]); a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]); a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);

a=addvar(a,'output','ki',[-0.06,0.06]); %Parameter ki

a=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);

a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]); a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]);

a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]); a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]); a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]); a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);

a=addvar(a,'output','kd',[-3,3]); %Parameter kp

a=addmf(a,'output',3,'NB','zmf',[-3,-1]);

a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]); a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]); a=addmf(a,'output',3,'Z','trimf',[-2,0,2]); a=addmf(a,'output',3,'PS','trimf',[-1,1,3]); a=addmf(a,'output',3,'PM','trimf',[0,2,3]); a=addmf(a,'output',3,'PB','smf',[1,3]);

rulelist=[1 1 7 1 5 1 1; 1 2 7 1 3 1 1; 1 3 6 2 1 1 1; 1 4 6 2 1 1 1; 1 5 5 3 1 1 1; 1 6 4 4 2 1 1; 1 7 4 4 5 1 1;

2 1 7 1 5 1 1; 2 2 7 1 3 1 1; 2 3 6 2 1 1 1; 2 4 5 3 2 1 1; 2 5 5 3 2 1 1; 2 6 4 4 3 1 1; 2 7 3 4 4 1 1;

3 1 6 1 4 1 1; 3 2 6 2 3 1 1; 3 3 6 3 2 1 1; 3 4 5 3 2 1 1; 3 5 4 4 3 1 1; 3 6 3 5 3 1 1; 3 7 3 5 4 1 1;

4 1 6 2 4 1 1; 4 2 6 2 3 1 1; 4 3 5 3 3 1 1; 4 4 4 4 3 1 1; 4 5 3 5 3 1 1;

4 6 2 6 3 1 1; 4 7 2 6 4 1 1;

5 1 5 2 4 1 1; 5 2 5 3 4 1 1; 5 3 4 4 4 1 1; 5 4 3 5 4 1 1; 5 5 3 5 4 1 1; 5 6 2 6 4 1 1; 5 7 2 7 4 1 1;

6 1 5 4 7 1 1; 6 2 4 4 5 1 1; 6 3 3 5 5 1 1; 6 4 2 5 5 1 1; 6 5 2 6 5 1 1; 6 6 2 7 5 1 1; 6 7 1 7 7 1 1;

7 1 4 4 7 1 1; 7 2 4 4 6 1 1; 7 3 2 5 6 1 1; 7 4 2 6 6 1 1; 7 5 2 6 5 1 1; 7 6 1 7 5 1 1; 7 7 1 7 7 1 1];

a=addrule(a,rulelist);

a=setfis(a,'DefuzzMethod','mom'); writefis(a,'fuzzpid');

a=readfis('fuzzpid');

%PID Controller

ts=0.001;

sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts,'tustin'); [num,den]=tfdata(dsys,'v');

u_1=0.0;u_2=0.0;u_3=0.0;

y_1=0;y_2=0;y_3=0;

x=[0,0,0]';

error_1=0; e_1=0.0; ec_1=0.0;

kp0=0.40; kd0=1.0; ki0=0.0;

for k=1:1:500 time(k)=k*ts;

rin(k)=1;

%Using fuzzy inference to tunning PID k_pid=evalfis([e_1,ec_1],a); kp(k)=kp0+k_pid(1);

ki(k)=ki0+k_pid(2); kd(k)=kd0+k_pid(3);

u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);

if k==300 % Adding disturbance(1.0v at time 0.3s) u(k)=u(k)+1.0; end

if u(k)>=10 u(k)=10; end

if u(k)

yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;

error(k)=rin(k)-yout(k);

%%%%%%%%%%%%%%Return of PID parameters%%%%%%%%%%%%%%% u_3=u_2; u_2=u_1; u_1=u(k);

y_3=y_2; y_2=y_1;

y_1=yout(k);

x(1)=error(k); % Calculating P x(2)=error(k)-error_1; % Calculating D

x(3)=x(3)+error(k); % Calculating I

e_1=x(1); ec_1=x(2);

error_2=error_1; error_1=error(k); end

showrule(a)

figure(1);plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('rin,yout'); figure(2);plot(time,error,'r'); xlabel('time(s)');ylabel('error'); figure(3);plot(time,u,'r'); xlabel('time(s)');ylabel('u'); figure(4);plot(time,kp,'r'); xlabel('time(s)');ylabel('kp'); figure(5);plot(time,ki,'r'); xlabel('time(s)');ylabel('ki'); figure(6);plot(time,kd,'r'); xlabel('time(s)');ylabel('kd'); figure(7);plotmf(a,'input',1); figure(8);plotmf(a,'input',2); figure(9);plotmf(a,'output',1); figure(10);plotmf(a,'output',2); figure(11);plotmf(a,'output',3); plotfis(a);

fuzzy fuzzpid.fis

五、实验总结:

Fuzzy PID控制控制器兼有模糊控制和PID 控制的优点, 具有良好的工程应用景,与单一的PID 控制或模糊控制相比,具有以下优点 : ( 1 )具有良好的动态响应性能, 超调量小。

( 2 )具有良好的静态性能, 震荡小, 没有静态误差。

( 3 )系统参数或结构变化时,Fuzzy PID控制器具有良好的自适应能力和鲁棒性。

智能控制实验报告

(2008~2009 学年 春季 学期)

课程名称: 任课教师:杜尚丰 班 级:自动061 学 号:0608140612 姓 名:孙倩

实验题目1: SISO PID神经网络控制

姓名: 孙倩 班级: 自动化061 学号: 0608140612

一、仿真模型描述

单变量P I D神经网络的结构形式如下:

单变量神经网络的结构图

本实验用PID 神经网络实现单输入单输出解耦系统的模型仿真,用到的仿真模型为:

y(k+1)=0.8sin(y(k))+1.2u(k), k

系统输入: r(k)=1(k)

二、仿真参数说明

系统的输入向量是:r(k)=1;

输出向量是:y(k+1);

系统的控制向量为:u(k);

准则函数为:

E 1(k ) =

12

[r 1(k ) -y 1(k )]

2

权系地训练(取η1=η2=0.8)方式:

W(k+1)=W(k)- η

可得:

w i (k+1)=w i (k)+ ηe(k+1)oi (k)+β[w i (k)-w i (k-1)]

1

w j (k+1)=1w j (k)+ ηe(k+1)f[xj (k)][2w j (k)]y(k)+ β[1w j (k)-1w j (k-1)]

2

2

2

2

+β[W(k)=W(k-1)]

三、仿真结果分析

以下四幅图分别是系统输入r ,系统输出y ,系统控制量u ,以及系统误差error.

2

系统输出y 1

系统输入r 1

1.5

1.5

10.50

1

0.5

00.2

0.40.6时间(秒)

0.8

00.2

0.40.6时间(秒)

0.8

0.80.6

0.40.20

系统误差e r r o r 1

系统控制量u 1

1

0.5

00.2

0.40.6时间(秒)

0.8

-0.5

00.2

0.40.6时间(秒)

0.8

1、从图中我们可以看得到:当对象特性变化(k≥40) 时,由于PID 神经网络控制 器权系值地不断调整,使控制量u(k)变化,从而系统地输出经过很短的时间跟踪输入。

2、通过PID 控制算法,在系统控制量的作用下我们最终实现了跟踪控制,动态响应性能非常好,达到了输出量y 稳态误差为零的效果。

四、仿真程序:

%PID神经网络单输入单输出解耦模型仿真 %输入为1

%输入层单独成神经网,输出成一个神经网 clear all; close all; s=1;

if s==1 %初始化 y1_1=0.0;

u1_1=0.0;u1_2=0.0;

error1_1=0.0;error1_2=0.0;

wo_111=0.1*rand(1);wo_111_1=wo_111; wo_112=0.1*rand(1);wo_112_1=wo_112; wo_113=0.1*rand(1);wo_113_1=wo_113; wo_121=0.1*rand(1);wo_121_1=wo_121; wo_122=0.1*rand(1);wo_122_1=wo_122; wo_123=0.1*rand(1);wo_123_1=wo_123; wi_111=0.1*rand(1);wi_111_1=wi_111; wi_112=0.1*rand(1);wi_112_1=wi_112; wi_121=0.1*rand(1);wi_121_1=wi_121; wi_122=0.1*rand(1);wi_122_1=wi_122; wi_131=0.1*rand(1);wi_131_1=wi_131; wi_132=0.1*rand(1);wi_132_1=wi_132; x11=0.0;x12=0.0;x13=0.0; q11=0.0;q12=0.0;q13=0.0;

x11_1=x11;x12_1=x12;x13_1=x13; q11_1=q11;q12_1=q12;q13_1=q13; end

ts=0.001; for k=1:1:800 time(k)=k*ts;

if s==1 r1(k)=1; if 1

y1(k)=0.8*sin(y1_1)+1.2*u1_1; else

y1(k)=0.8*sin(0.4*y1_1)+1.2*u1_1; end

error1(k)=r1(k)-y1(k); end

%中间层输入输出

x11(k)=wi_111_1*r1(k)+wi_112_1*y1(k); x12(k)=wi_121_1*r1(k)+wi_122_1*y1(k); x13(k)=wi_131_1*r1(k)+wi_132_1*y1(k); if x11(k)>1 q11(k)=1; elseif x11(k)

else q11(k)=x11(k); end

if(q12_1+x12(k))>1 q12(k)=1;

elseif (q12_1+x12(k))

else q12(k)=q12_1+x12(k); end

if (x13(k)-x13_1)>1 q13(k)=1;

elseif (x13(k)-x13_1)

else q13(k)=x13(k)-x13_1;

end

%输出层输入输出,输出层输入输出相等

u1(k)=wo_111_1*q11(k)+wo_112_1*q12(k)+wo_113_1*q13(k); %中间层到输出层权值计算 wo if u1_1==u1_2 delta1(k)=0; else

delta1(k)=error1(k)*sign((y1(k)-y1_1)/(u1_1-u1_2)); end

wo_111(k)=wo_111_1+0.1*delta1(k)*q11(k); wo_112(k)=wo_112_1+0.1*delta1(k)*q12(k); wo_113(k)=wo_113_1+0.1*delta1(k)*q13(k); wo_121(k)=wo_121_1; wo_122(k)=wo_122_1; wo_123(k)=wo_123_1;

%输入层到中间层权值计算wi if x11(k)==x11_1 dqx_11(k)=0;

else

dqx_11(k)=sign((q11(k)-q11_1)/(x11(k)-x11_1)); end

if x12(k)==x12_1 dqx_12(k)=0;

else

dqx_12(k)=sign((q12(k)-q12_1)/(x12(k)-x12_1)); end

if x13(k)==x13_1 dqx_13(k)=0; else

dqx_13(k)=sign((q13(k)-q13_1)/(x13(k)-x13_1)); end

if u1_1==u1_2 wo_11(k)=0; Else

wo_11(k)=error1(k)*sign((y1(k)-y1_1)/(u1_1-u1_2)); end

wi_111(k)=wi_111_1+0.15*(wo_11(k)*wo_111(k))*dqx_11(k)*r1(k);

wi_112(k)=wi_112_1+0.15*(wo_11(k)*wo_111(k))*dqx_11(k)*y1(k); wi_121(k)=wi_121_1+0.1*(wo_11(k)*wo_112(k))*dqx_12(k)*r1(k); wi_122(k)=wi_122_1+0.1*(wo_11(k)*wo_112(k))*dqx_12(k)*y1(k); wi_131(k)=wi_131_1+0.1*(wo_11(k)*wo_113(k))*dqx_13(k)*r1(k); wi_132(k)=wi_132_1+0.1*(wo_11(k)*wo_113(k))*dqx_13(k)*y1(k); %参数更新

wo_111_1=wo_111(k); wo_112_1=wo_112(k); wo_113_1=wo_112(k); wo_121_1=wo_121(k); wo_122_1=wo_122(k); wo_123_1=wo_123(k); wi_111_1=wi_111(k); wi_112_1=wi_112(k); wi_121_1=wi_121(k); wi_122_1=wi_122(k); wi_131_1=wi_131(k); wi_132_1=wi_132(k); y1_1=y1(k);

u1_2=u1_1;u1_1=u1(k);

error1_2=error1_1;error1_1=error1(k); x11_1=x11(k);x12_1=x12(k);x13_1=x13(k); q11_1=q11(k);q12_1=q12(k);q13_1=q13(k); end

figure(1);

plot(time,r1,'r');

xlabel('时间(秒)');ylabel('系统输入r1'); figure(2);

plot(time,y1,'r');

xlabel('时间(秒)');ylabel('系统输出y1'); figure(3);

plot(time,u1,'r');

xlabel('时间(秒)');ylabel('系统控制量u1'); figure(4);

plot(time,error1,'r');

xlabel('时间(秒)');ylabel('系统误差error1');

五、实验总结

PI D 神经网络单变量制器通过学习和训练,根据系统控制效果自主调整网

络权值,具有良好的动态和稳态控制性能,当系统参数发生变化后,P I D 神经网络控制器通过再次的学习和调整,可以实现迅速跟踪控制 。

实验题目2:神经网络自校正控制

姓名: 孙倩 班级: 自动化061 学号: 0608140612

一、仿真模型描述

被控对象具有非线性时变特性,仿真模型为:

y (k +1) =0. 8sin(y (k )) +1. 2u (k ) 0

y (k +1) =0. 8sin(y (k )) +y (k ) /7+1. 2u (k ) k >=200

该自校正系统的控制框图为:

二、仿真参数说明

系统输入为:

r (k ) =1(k ), 0=300r (k ) =-1(k ), 100

作用于被控对象的扰动为:

v (k ) =0. 04, k =50v (k ) =0, k ≠50

权值调整方式为BP 算法:

V (k )=V (k -1)+∆V (k )+α(V (k -1)-V (k -2))

∂E (k )

∆w j (k )=-ηw =ηw (y (k )-y m (k ))h j (k )

∂w j (k )

∂E (k )∆v j (k )=-ηv =ηv (y (k )-y m (k ))h j (k ) ∂v j (k )

三、仿真结果分析

当单位阶跃的输入时,我们可以看到如下的结果:

1、从该系统对扰动的迅速响应,我们可以得知自校正控制的优越性。 2、上面第一个图所示为控制器输出u(k),说明自校正控制器能对非线性、不确定、不确知系统实现有效的控制。

3、第二个图所示为系统输出y (k )再输入r 变化(k=100,k=300)、扰动作用(k=50)及对象特性变化(k=200)时的情况,说明神经自校正控制具有很好的自适应性和鲁棒性。

四、仿真程序

%Self-Correct control based BP Identification clear all; close all; xite1=0.15; xite2=0.50; alfa=0.05; w=0.5*ones(6,1); v=0.5*ones(6,1); cij=0.50*ones(1,6);

bj=5*ones(6,1); h=zeros(6,1); w_1=w;w_2=w_1; v_1=v;v_2=v_1; u_1=0;y_1=0; ts=0.02;

for k=1:1:5000 time(k)=k*ts; end if 0

else if 100

if 0

g(k)=0.8*sin(y_1); else

g(k)=0.8*sin(y_1)+(y_1)/7; end

f(k)=1.2;

y(k)=g(k)+f(k)*u_1; for j=1:1:6

h(j)=exp(-norm(y(k)-cij(:,j))^2/(2*bj(j)*bj(j))); end

Ng(k)=w'*h;

Nf(k)=v'*h;

ym(k)=Ng(k)+Nf(k)*u_1; e(k)=y(k)-ym(k); d_w=0*w; for j=1:1:6

d_w(j)=xite1*e(k)*h(j); end

w=w_1+d_w+alfa*(w_1-w_2); d_v=0*v;

for j=1:1:6

d_v(j)=xite2*e(k)*h(j)*u_1; end

v=v_1+d_v+alfa*(v_1-v_2); u(k)=-Ng(k)/Nf(k)+r(k)/Nf(k); u_1=u(k); y_1=y(k); w_2=w_1; w_1=w; v_2=v_1; v_1=v; end figure(1);

plot(time,y_1,'b'); xlabel('(s)');ylabel('y'); figure(2);

plot(time,u_1,'b'); xlabel('(s)');ylabel('u');

五、实验总结

从仿真结果来看,神经网络自校正控制器具有很高的精度和很强的适应性, 取得了较好的控制效果。它既保证了控制的鲁棒性好的特点,又借助了神经网络的自学习、自组织的能力,可实现智能控制器参数的在线自整定和优化,有效地提高模糊控制器的精度和抗干扰的能力,避免了人工整定参数的繁琐工作。

实验题目3: Fuzzy PID控制

姓名: 孙倩 班级: 自动化061 学号: 0608140612

一、 仿真模型描述

Fuzzy PID控制器结构图如下:

Fuzzy PID 控制的我们实验采用的模型是

G p (s ) =

523500

s +87.35s +10470s

3

2

对于该模型,我们在试验中设置的采样时间是1m s ,采用模糊PID 控制进行阶跃响应,在第300个采样时间控制器输出加1.0的干扰。

二、 仿真参数说明

采样时间: 1ms, 系统输入: r(k)=1, 系统输出: y(k) 控制器输出:u(k)为 误差: e(k )

比例系数: K P , 积分系数K I , 微分系数 K D

三、仿真结果分析

系统仿真图如下:

仿真时在第300个采样点的时候人为的加入了一个幅值为1的脉冲干扰:

1. 输入输出及误差图像:

r i n , y o u

t

e r r o r

time(s)

time(s)

2. 控制器的输出:

u

time(s)

3.PID 参数ki ,kp ,kd 的自适应调整:

k

p

time(s)

k

i

time(s)

k d

time(s)

4. 以下两幅图是语言变量e 和ec 的隶属函数关系设计图,通过修改程序中的数值可以改变它们的隶属函数关系

:

(1)程序中包括模糊变量e 和ec ,PID 控制参数Kp ,Ki 和Kd 。其中e 和ec 的论域范围是(-3,3),关于各个变量的隶属度设计程序中已经加载,并且在程序运行之后的GUI 界面下也能清楚的看到。

(2)模糊控制规则是基于手动控制策略而做出的,主要作用是用来修正PID 参数的,它是控制领域内技术人员根据过程的阶跃响应情况的经验总结,在进行一定得处理后得到的。

(3)在我们的仿真模型中为了看到Fuzzy PID 控制的作用,我们在程序运行到第300个采样点的时候认为的加入了一个幅值为1的脉冲干扰,作为我们Fuzzy

PID 控制规则动态调整PID 参数能力的一个检验。

四、仿真程序:

%Fuzzy Tunning PID Control clear all; close all;

a=newfis('fuzzpid');

a=addvar(a,'input','e',[-3,3]); %Parameter e

a=addmf(a,'input',1,'NB','zmf',[-3,-1]); a=addmf(a,'input',1,'NM','trimf',[-3,-2,0]); a=addmf(a,'input',1,'NS','trimf',[-3,-1,1]); a=addmf(a,'input',1,'Z','trimf',[-2,0,2]); a=addmf(a,'input',1,'PS','trimf',[-1,1,3]); a=addmf(a,'input',1,'PM','trimf',[0,2,3]); a=addmf(a,'input',1,'PB','smf',[1,3]);

a=addvar(a,'input','ec',[-3,3]); %Parameter ec

a=addmf(a,'input',2,'NB','zmf',[-3,-1]);

a=addmf(a,'input',2,'NM','trimf',[-3,-2,0]); a=addmf(a,'input',2,'NS','trimf',[-3,-1,1]); a=addmf(a,'input',2,'Z','trimf',[-2,0,2]); a=addmf(a,'input',2,'PS','trimf',[-1,1,3]); a=addmf(a,'input',2,'PM','trimf',[0,2,3]); a=addmf(a,'input',2,'PB','smf',[1,3]);

a=addvar(a,'output','kp',[-0.3,0.3]); %Parameter kp

a=addmf(a,'output',1,'NB','zmf',[-0.3,-0.1]); a=addmf(a,'output',1,'NM','trimf',[-0.3,-0.2,0]); a=addmf(a,'output',1,'NS','trimf',[-0.3,-0.1,0.1]); a=addmf(a,'output',1,'Z','trimf',[-0.2,0,0.2]); a=addmf(a,'output',1,'PS','trimf',[-0.1,0.1,0.3]); a=addmf(a,'output',1,'PM','trimf',[0,0.2,0.3]); a=addmf(a,'output',1,'PB','smf',[0.1,0.3]);

a=addvar(a,'output','ki',[-0.06,0.06]); %Parameter ki

a=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);

a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]); a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]);

a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]); a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]); a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]); a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);

a=addvar(a,'output','kd',[-3,3]); %Parameter kp

a=addmf(a,'output',3,'NB','zmf',[-3,-1]);

a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]); a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]); a=addmf(a,'output',3,'Z','trimf',[-2,0,2]); a=addmf(a,'output',3,'PS','trimf',[-1,1,3]); a=addmf(a,'output',3,'PM','trimf',[0,2,3]); a=addmf(a,'output',3,'PB','smf',[1,3]);

rulelist=[1 1 7 1 5 1 1; 1 2 7 1 3 1 1; 1 3 6 2 1 1 1; 1 4 6 2 1 1 1; 1 5 5 3 1 1 1; 1 6 4 4 2 1 1; 1 7 4 4 5 1 1;

2 1 7 1 5 1 1; 2 2 7 1 3 1 1; 2 3 6 2 1 1 1; 2 4 5 3 2 1 1; 2 5 5 3 2 1 1; 2 6 4 4 3 1 1; 2 7 3 4 4 1 1;

3 1 6 1 4 1 1; 3 2 6 2 3 1 1; 3 3 6 3 2 1 1; 3 4 5 3 2 1 1; 3 5 4 4 3 1 1; 3 6 3 5 3 1 1; 3 7 3 5 4 1 1;

4 1 6 2 4 1 1; 4 2 6 2 3 1 1; 4 3 5 3 3 1 1; 4 4 4 4 3 1 1; 4 5 3 5 3 1 1;

4 6 2 6 3 1 1; 4 7 2 6 4 1 1;

5 1 5 2 4 1 1; 5 2 5 3 4 1 1; 5 3 4 4 4 1 1; 5 4 3 5 4 1 1; 5 5 3 5 4 1 1; 5 6 2 6 4 1 1; 5 7 2 7 4 1 1;

6 1 5 4 7 1 1; 6 2 4 4 5 1 1; 6 3 3 5 5 1 1; 6 4 2 5 5 1 1; 6 5 2 6 5 1 1; 6 6 2 7 5 1 1; 6 7 1 7 7 1 1;

7 1 4 4 7 1 1; 7 2 4 4 6 1 1; 7 3 2 5 6 1 1; 7 4 2 6 6 1 1; 7 5 2 6 5 1 1; 7 6 1 7 5 1 1; 7 7 1 7 7 1 1];

a=addrule(a,rulelist);

a=setfis(a,'DefuzzMethod','mom'); writefis(a,'fuzzpid');

a=readfis('fuzzpid');

%PID Controller

ts=0.001;

sys=tf(5.235e005,[1,87.35,1.047e004,0]); dsys=c2d(sys,ts,'tustin'); [num,den]=tfdata(dsys,'v');

u_1=0.0;u_2=0.0;u_3=0.0;

y_1=0;y_2=0;y_3=0;

x=[0,0,0]';

error_1=0; e_1=0.0; ec_1=0.0;

kp0=0.40; kd0=1.0; ki0=0.0;

for k=1:1:500 time(k)=k*ts;

rin(k)=1;

%Using fuzzy inference to tunning PID k_pid=evalfis([e_1,ec_1],a); kp(k)=kp0+k_pid(1);

ki(k)=ki0+k_pid(2); kd(k)=kd0+k_pid(3);

u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);

if k==300 % Adding disturbance(1.0v at time 0.3s) u(k)=u(k)+1.0; end

if u(k)>=10 u(k)=10; end

if u(k)

yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;

error(k)=rin(k)-yout(k);

%%%%%%%%%%%%%%Return of PID parameters%%%%%%%%%%%%%%% u_3=u_2; u_2=u_1; u_1=u(k);

y_3=y_2; y_2=y_1;

y_1=yout(k);

x(1)=error(k); % Calculating P x(2)=error(k)-error_1; % Calculating D

x(3)=x(3)+error(k); % Calculating I

e_1=x(1); ec_1=x(2);

error_2=error_1; error_1=error(k); end

showrule(a)

figure(1);plot(time,rin,'b',time,yout,'r'); xlabel('time(s)');ylabel('rin,yout'); figure(2);plot(time,error,'r'); xlabel('time(s)');ylabel('error'); figure(3);plot(time,u,'r'); xlabel('time(s)');ylabel('u'); figure(4);plot(time,kp,'r'); xlabel('time(s)');ylabel('kp'); figure(5);plot(time,ki,'r'); xlabel('time(s)');ylabel('ki'); figure(6);plot(time,kd,'r'); xlabel('time(s)');ylabel('kd'); figure(7);plotmf(a,'input',1); figure(8);plotmf(a,'input',2); figure(9);plotmf(a,'output',1); figure(10);plotmf(a,'output',2); figure(11);plotmf(a,'output',3); plotfis(a);

fuzzy fuzzpid.fis

五、实验总结:

Fuzzy PID控制控制器兼有模糊控制和PID 控制的优点, 具有良好的工程应用景,与单一的PID 控制或模糊控制相比,具有以下优点 : ( 1 )具有良好的动态响应性能, 超调量小。

( 2 )具有良好的静态性能, 震荡小, 没有静态误差。

( 3 )系统参数或结构变化时,Fuzzy PID控制器具有良好的自适应能力和鲁棒性。


相关内容

  • 现代控制理论与经典控制理论的对比研究
  • 第3期(总第90期)机械管理开发 No.3(SUMNo.90)MECHANICALMANAGEMENTANDDEVELOPMENT 2006年6月Jun.2006 现代控制理论与经典控制理论的对比研究 王传波 (中北大学自动控制系 刘 山西 旸 太原 030051) [摘要]从研究对象.数学模型.基 ...

  • 现代控制理论概述及实际应用意义
  • 现代控制理论概述及实际应用意义 王 凡 王思文 郑卫刚 武汉理工大学能源与动力工程学院 [摘 要]控制理论作为一门科学技术,已经广泛地运用于我们社会生活的方方面面.本文介绍了现代控制理论的产生.发展.内容.研究 方法和应用以及经典控制理论与现代控制理论的差异,并介绍现代控制理论的应用.提出了学习现代 ...

  • 经典控制理论
  • 经典控制理论 在20世纪30到40年代,奈奎斯特.伯德.维纳等人的著作为自动控制 理论的初步形成奠定了基础:二次大战以后,又经过众多学者的努力 ,在总结了以往的实践和关于反馈理论.频率响应理论并加以发展的 基础上,形成了较为完整的自动控制系统设计的频率法理论.1948年 又提出了根轨迹法.至此,自动 ...

  • 多元智能理论对高职教育的意义
  • 摘 要:以多元智能为理论基础,剖析了其在高职教育中的应用及意义,同时对其局限性简单进行介绍,有益于对多元智能理论的全面认识和其在高职教育中的更好应用. 关键词:多元智能理论:高职教育 中图分类号:G712 文献标识码:B 文章编号:1009-9166(2010)026(C)-0140-01 20世纪 ...

  • 控制工程基础的论文
  • 合肥学院机械工程系 本科课程论文 课程名称:______控制工程基础_ _________ 专业年级:_______09 学 号:____ ____ ______ 学生姓名:____ _ _________ 论文题目:____ 控制与科学__ _____________ 成 绩:____ _____ ...

  • 现代控制理论课后习题参考答案_刘豹_唐万生_第三版
  • <现代控制理论> 第3版 刘豹 唐万生 主编 课后习题参考答案 现代控制理论习题参考答案 http://auto.upc.edu.cn:8081/31zdhx/kzll/ÏÖ´ú¿ØÖÆÀíÂÛÏ°Ìâ²Î¿¼´ð°¸1.htm(第 1/5 页)[2009-6-11 22:40:24] ...

  • 加德纳的多元智能理论
  • 加德纳的多元智能理论 哈佛大学<零点项目>研究 ,1967年开始,研究形象思维规律 加德纳 简历 1943年出生,美籍德国犹太人 7岁学习钢琴. 本科哈佛大学,学习历史和社会学,选修了100多门学科,大多数为优秀,包括理科,艺术类学科. 1965年进英国经济学院,接触到了艺术. 经历中影 ...

  • 基于多元智能理论的小学英语绘本阅读教学;3000
  • 基于多元智能理论的小学英语绘本阅读教学 摘要:小学时期是英语教学的启蒙阶段,是最容易培养英语兴趣的时期,是能够影响英语教学发展以及英语学习模式形成方向的重点时期.本文主要研究多元智能理论引导下的小学英语绘本阅读教学发展状况,确定多元智能理论引入小学英语教学的可行性. 关键词:多元智能理论:小学英语绘 ...

  • 各专业培养方向
  • 机械设计 二.学科专业及研究方向简介 机械设计及理论为机械工程一级学科下的二级学科,包含现代设计理论与方法.施工机械设计 及理论.机械系统的检测与方法等研究方向.主要研究机械系统设计方法学及先进设计技术,以实 现机电一体化系统的高性能.高稳定性.高可靠性和高经济性等优良特性.主要研究方向及其内容 如 ...

  • 电子信息工程考研方向解读
  • (随便看看就行) 这个是我在百度文库里面找到的一篇文章 看过之后 感觉很有收获 文章里详细介绍了各个方向研究的内容.前景和要求.并列出了各名牌高校的排名 希望对你有帮助~ 电子信息工程考研方向解读 电子信息工程考研的方向其实很多的,不过大家所知道甚少,笔者就搜集整理一些有关该专业的考研方向,希望对大 ...