智能控制理论

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档