神经网络实验目的.docx
- 文档编号:16562316
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:16
- 大小:156.73KB
神经网络实验目的.docx
《神经网络实验目的.docx》由会员分享,可在线阅读,更多相关《神经网络实验目的.docx(16页珍藏版)》请在冰点文库上搜索。
神经网络实验目的
一、实验目的:
1.了解常规PID控制器和常规模糊控制器;
2.设计出常规PID控制器和常规模糊控制器;
3.通过实验比较两种控制器的控制效果;
二、常规PID控制器的实验原理和实验步骤:
1.常规PID的基本原理
在控制系统中,调节器常用的控制规律是PID控制。
常规PID控制系统结构框图如图1所示。
图1PID控制系统框图
PID调节器是一种线性调节器,它根据给定值r(t)与实际输出值c(t)构成的控制偏差:
e(t)=r(t)-c(t)将偏差的比例(P)、积分(I)、微分(D)、通过线性组合构成控制量,对控制对象进行控制。
在模拟调节系统中PID控制算法的模拟表达式为
(1):
(1)
式中:
u(t)——调节器执行机构的输出信号
Kp——比例系数
Ti——积分时间
Td——微分时间
为了用计算机实现
(1)式,必须将其离散化,离散化后其增量型控制式为:
式中:
Ts为采样周期。
2.PID的控制的作用及特点
PID调节器各校正环节的作用是这样的:
(1)比例环节(P):
即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。
(2)积分环节(I):
主要用于消除静差,提高系统的无关度,Ti积分时间常数越小,积分作用越强。
(3)微分环节(D):
能反应偏差信号的变化均势(变化速率),并能在偏差信号的值变得太大之前,在系统中引入一肯效的早期修正信号,从而加快系统的动作速度,减小调节时间。
PID调节的主要特点是:
结构灵活,不仅可以用常规的PID调节,而且可根据系统要求,采用各种PID的变种,如PI,PD控制,不完全微分控制,积分分离式PID控制等。
3.简单介绍二种PID的参数整定方法
(1)Zieler-Nichols最早提出了PID参数整定方法,即Z-N。
它是令控制器如式
(2)根据对象(一阶惯性加纯迟延,如式(3))的阶跃响应曲线,获取对象时间常数T,增益K,及纯迟延时间
,再利用相应的经验公式求得。
此法简单易行,但参数还需进一步调整。
通过改进,推出了广义Z-N法,大大提高了参数整定质量。
Z-N法一般用于手工计算和设置控制器初值。
(2)
(3)
(4)
这是由Atherton提出的最优整定方法,它以式(4)为最优控制指标。
其中
为调节器入口偏差e=R-Y;n根据需要取值,按
来搜索一组
,
,
的取值,并使
为最小,此时的控制器参数为优。
(2)庄敏霞与Atherton针对各种指标函数得出了最优PID参数指定的算法,考虑下面给出的指标通式:
(5)
式中e(t)——进入PID控制器的误差信号。
根据设定点信号的最优自整定算法,对式(5)中给出的最优指标,着重考虑3种情况,即:
n=0,简记为ISE准则;
n=1,简记为ISTE准则;
n=2,简记为
准则。
已知的数学模型为式子:
,
,
4.针对模型
两种方法的整定结果为:
(1)Z-N法:
(3)ISTE法:
5.经过零阶保持器Z变换离散化被控对象变为:
所以程序为:
clearall;
closeall;
%增量式PID控制;
ts=0.1;%采样时间;
G=tf([1],[10,1],'inputdelay',0.5);
Gd=c2d(G,ts,'zoh');
[num,den]=tfdata(Gd,'v');%tfdata直接以行向量的形式返回分子与分母系数;
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;u_6=0;u_7=0;
y_1=0;y_2=0;
e_1=0;e_2=0;
%kp=15.4;Ti=9.99;Td=0.34;%%ISTE法求出的PID参数
kp=24;Ti=1;Td=0.25;%%Z-N法求出的PID参数
ki=kp*ts/Ti;
kd=kp*Td/ts;
A=kp*(1+ts/Ti+Td/ts);
B=-kp*(1+2*Td/ts);
C=kp*Td/ts;
fork=1:
1:
3000
t(k)=k*ts;
r(k)=30;
y1(k)=0.995*y_1+0.00995*u_7;
y(k)=0.99*y_1+0.005*u_6+0.005*u_5;
e(k)=r(k)-y(k);
u(k)=A*e(k)+B*e_1+C*e_2;
u(k)=u_1+u(k);
u_7=u_6;u_6=u_5;u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_2=y_1;y_1=y(k);
e_2=e_1;e_1=e(k);
end
figure
(1);
plot(t,y)
holdon
得出曲线分别为ISTE法和Z-N法:
三、模糊PID控制的实验原理和实验步骤
1.模糊PID控制器的结构
本文以误差e和ec作为输入,以满足不同时刻和e和ec对PID参数的自整定要求。
控制器的结构如图2所示。
图2模糊控制器结构图
将系统误差e和误差变化率ec变化范围定义为模糊集上的论域。
即e,ec=[-3,3],其中模糊子集为e,ec={NB,M,NS,ZO,PS,PM,PB},子集中元素分别代表负大,负中,负小,零,正小,正中,正大。
根据Kp,Ki,Kd3个参数模糊规则表构造一个两输入(e,ec)三输出
模糊控制器。
2.模糊PID控制器的设计
模糊控制规则是用于修正PID参数的,模糊控制规则则根据过程的阶跃响应情况来考虑求取。
规则如表1所示。
表1模糊控制规则表
根据上述模糊控制规则,采用如下的PID参数调节规则,如表2、表3、表4、所示,其中每个表格的第一行表示误差变化量ec的模糊集合,第一列表示误差e的模糊集合。
PID三个参数的模糊规则库建立好以后,就可以根据模糊控制理论进行参数的自调整。
将系统误差e,误差变化量ec,Kp,Ki,Kd的变化范围定义为模糊上的论域:
e,ec={-3,-2,-1,0,1,2,3},Kp={-0.3,-0.2,-0.1,0,0.1,0.2,0.3},Ki={-0.06,-0.04,-0.02,0,0.02,0.04,0.06},Kd={-3,-2,-1,0,1,2,3}。
表2Kp规则调节表
表3Ki规则调节表
表4Kd规则调节表
在模糊控制规律中,e,ec,Kp,Ki,Kd的语言变量值取“负大”(NB)、“负中”(NM)、“负小”(NS)、“零”(ZO)、“正小”(PS)、“正中”(PM)、“正大”(PB)共7个值。
它们的隶属度函数都是三角形,并且每个值所取的范围宽度相等。
3.针对模型为
经过零阶保持器Z变换离散化被控对象变为:
程序为:
%FuzzyTunningPIDControl
clearall;
closeall;
a=newfis('fuzzpid');%建立一个规则库文件
a=addvar(a,'input','e',[-3,3]);%参数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]);%参数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]);%参数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]);%参数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]);%参数kd
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=[1171511;
1271311;
1362111;
1462111;
1553111;
1644211;
1744511;
2171511;
2271311;
2362111;
2453211;
2553211;
2644311;
2734411;
3161411;
3262311;
3363211;
3453211;
3544311;
3635311;
3735411;
4162411;
4262311;
4353311;
4444311;
4535311;
4626311;
4726411;
5152411;
5253411;
5344411;
5435411;
5535411;
5626411;
5727411;
6154711;
6244511;
6335511;
6425511;
6526511;
6627511;
6717711;
7144711;
7244611;
7325611;
7426611;
7526511;
7617511;
7717711];
a=addrule(a,rulelist);
a=setfis(a,'DefuzzMethod','mom');
writefis(a,'fuzzpid');
a=readfis('fuzzpid');
%PIDController
ts=0.1;%采样时间;
sys=tf([1],[10,1],'inputdelay',0.5);%输入被控对象模型
dsys=c2d(sys,ts,'tustin');%对被控对象离散化
u_1=0.0;u_2=0.0;u_3=0.0;u_4=0.0;u_5=0.0;u_6=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=8.6;
ki0=0.12;
kd0=0.95;
fork=1:
1:
500
time(k)=k*ts;
rin(k)=30;
%UsingfuzzyinferencetotunningPID
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);
%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;
yout(k)=0.99*y_1+0.005*u_6+0.005*u_5;
error(k)=rin(k)-yout(k);
%%%%%%%%%%%%%%ReturnofPIDparameters%%%%%%%%%%%%%%%
u_6=u_5;
u_5=u_4;
u_4=u_3;
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);%计算比例环节
x
(2)=error(k)-error_1;%计算微分环节
x(3)=x(3)+error(k);%计算积分环节
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(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');
fuzzyfuzzpid.fis
得出的输出曲线为:
四、结论
通过实验,对比实验结果可以得了如下几点:
1.常规PID控制时,上升时间较短,通过ISTE整定参数的方法的调整时间相对短一些,而应用Z-N法时的调整时间相对长些,但两者的振荡较巨烈。
超调较大。
2.模糊PID控制时,上升时间比PID上升的时间长些,但超调少,振荡次数少。
而调节时间相对长些。
课程实验报告
模糊PID控制器与常规PID控制器的设计
学院:
信息科学与工程
专业:
模式识别与智能系统
学生姓名:
郜琳琳
指导教师:
方慧娟
时间:
2011年6月14日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 神经网络 实验 目的