智能控制理论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能控制实验报告(2008~2009 学年春季学期)
课程名称:智能控制理论与应用
任课教师:杜尚丰
班级:自动061
学号:0608140612
姓名:孙倩
实验题目1: S ISO PID 神经网络控制
姓名: 孙倩 班级: 自动化061 学号: 0608140612
一、仿真模型描述
单变量P I D 神经网络的结构形式如下:
单变量神经网络的结构图
本实验用PID 神经网络实现单输入单输出解耦系统的模型仿真,用到的仿真模型为:
y(k+1)=0.8sin(y(k))+1.2u(k), k<40
y(k+1)=0.8sin(0.4y(k))+1.2u(k), k>=40
系统输入: r(k)=1(k)
二、仿真参数说明
系统的输入向量是:r(k)=1;
输出向量是:y(k+1);
系统的控制向量为:u(k);
准则函数为:
2
1111()[()()]
2
E k r k y k =
-
权系地训练(取η1=η2=0.8)方式:
W(k+1)=W(k)- η
+β[W(k)=W(k-1)]
可得:
2
w i (k+1)=2
w i (k)+ ηe(k+1)o i (k)+β[2
w i (k)-2
w i (k-1)]
1
w j (k+1)=1w j (k)+ ηe(k+1)f[x j (k)][2w j (k)]y(k)+ β[1w j (k)-1w j (k-1)]
三、仿真结果分析
以下四幅图分别是系统输入r ,系统输出y ,系统控制量u ,以及系统误差error.
00.2
0.40.60.8
0.511.5
2
时间(秒)
系统输入r 1
00.2
0.40.60.8
0.5
1
1.5
时间(秒)
系统输出y 1
00.2
0.40.60.8
0.20.40.6
0.8时间(秒)
系统控制量u 1
00.2
0.40.60.8
-0.5
0.5
1
时间(秒)
系统误差e r r o r 1
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)<-1 q11(k)=-1; else q11(k)=x11(k); end if(q12_1+x12(k))>1 q12(k)=1; elseif (q12_1+x12(k))<-1 q12(k)=-1;