基于BP神经网络的自整定PID控制仿真
- 格式:doc
- 大小:312.50 KB
- 文档页数:17
基于BP神经网络的自整定PID控制仿真
实验六基于BP神经网络的自整定PID控制仿真
一、目的
1.熟悉神经网络的特征、结构以及学习算法
2.掌握神经网络自整定PID的工作原理
3.了解神经网络的结构对控制效果的影响
4.掌握用MATLAB实现神经网络控制系统仿真的方法。
二、设备及条件
计算机系统
Matlab仿真软件
三、问题背景
在工业控制中,PID控制是工业控制中最常用的方法。
这是因为PID控制器结构简单、实现简单,控制效果良好,已得到广泛应用。
但是,PID具有一定的局限性:被控制对象参数随时间变化时,控制器的参数难以自动调整以适应外界环境的变化。
为了使控制器具有较好的自适应性,实现控制器参数的自动调整,可以采用神经网络控制的方法。
利用人工神经网络的自学习这一特性,并结合传统的PID控制理论,构造神经网络PID控制器,实现控制器参数的自动调整。
基于BP神经网络的PID控制器结构如图1所示。
控制器由两部分组成:一是常规PID控制器,用以直接对对象进行闭环控制,且三个参数在线整定;二是神经网络NN,根据系统的运行状态,学习调整权系数,从而调整PID参数,达到某种性能指标的最优化。
图1 基于神经网络的PID控制器结构
四、基于BP神经网络的PID设计
1设计原理
神经网络采用结构为4-5-3型的BP网络,如图2。
图2 BP 网络结构
其中,输出层激励函数取非负的Sigmoid 函数,隐层取正负对称的Sigmoid 函数。
被控对象为一时变非线性对象,数学模型可表示为: 2()(1)
()(1)1(1)
a k y k y k u k y k -=+-+-
式中,系数a(k)是慢时变的,。
为保证控制器有一定的动态跟踪能力,选定神经网络的输入层输入为
[(),(1),(2),1]T in X e k e k e k =--
网络的学习过程由正向和反向传播两部分组成。
如果输出层不能得到期望输出,那么转入反向传播过程,通过修改各层神经元的权值,使得输出误差信号最小。
输出层节点分别对应三个可调参数
(3)1(3)
2(3)3p I D O K O K O K ⎫
=⎪=⎬⎪=⎭
取性能指标函数为: 21
()(()())2
E k r k y k =
- 设其中 ()()()
r k y k e k -= 若PID 控制器采用采用增量式数字PID 控制算法,则有
(3)
1
(3)
2
(3)3()
()(1)()
()()
()2(1)(2)u k e k e k O u k e k O u k e k e k e k O ⎫
∂=--⎪∂⎪⎪∂=⎬∂⎪⎪∂=--+-⎪∂⎭
2.网络权系数调整
网络权系数的修正采用梯度下降法。
根据相关数学知识,针对指定因变量的梯度代表了使因变量增速最大的自变量变化方向,故而其反方向代表了因变量下降最快的自变量变化方向,如果我们选取性能指标()E k 为因变量,网络各层权系数为自变量,则对应梯度的负方向就是权系数调整的最佳方向,因此,实际上构成了一个有目标的搜索算法,对最终结果的收敛性提供了有力的保证。
对应于本题采用的4-5-3型的BP 网络,梯度负方向的计算: (1) 隐含层-输出层:
(3)(3)
(3)(3)(3)(3)
()()(1)()****(1)()l l jl l l jl
O net E k E k y k u k y k u k O net ωω∂∂∂∂∂+∂=∂∂+∂∂∂∂ 其中:()E k 为指标函数
(3)jl ω为隐含层-输出层权系数矩阵元素
(1)y k + 为被控对象输出
()u k 为PID 控制器输出
(3)l O 为输出层输出 (3)l net 为输出层输入
根据所选用神经网络的数学模型,易知:
(3)
1(3)
2
(3)
3(3)(3)(3)
(3)(2)(3)()((1)(1))(1)(1)
()()(1)()
()()
()2(1)(2)[]()l l l
l j jl
E k r k y k e k y k u k e k e k O u k e k O u k e k e k e k O O g net net net O k ω∂⎫
=-+-+=-+⎪
∂+⎪
∂⎪
=--⎪∂⎪⎪∂=⎪∂⎪⎬∂⎪=--+-∂⎪
⎪
∂⎪=⎪∂⎪
∂⎪=⎪∂⎭
其中: 1,2,3,4j = 1,2,3
l = (2)()j O k 为隐含层输出,
1
[][1tanh()]2
g x x =+,为输出层激励函数,'()()*[1()]g x g x g x =-为其偏导数。
另外,
(1)
()
y k u k ∂+∂直接的数学表达不容易获得,但我们可以使用它的符号函数来近似,仍可以保证参数
修正方向的正确性,而由此造成其模的误差只影响参数调整的速度,它可以通过调整学习速率来得以补偿。
故而最终有:
(3)(2)(3)
()(1)
(1)*sgn[]*[()(1)]*[]*()()
l j jl E k y k e k e k e k g net O k u k ω∂∂+=-+--∂∂ (2) 输入层-隐含层:
(2)(2)(2)(2)(2)(2)
333
312(2)3(2)3(2)3(2)123()()**()()()
()()()()()()()***()()()j j
ij j j ij j j j j O net E k E k k O net k k net k net k net k E k E k E k E k O net k O net k O net k O ωω⎫
∂∂∂∂=⎪∂∂∂∂⎪⎬∂∂∂∂∂∂∂⎪
=++⎪∂∂∂∂∂∂∂⎭
其中: 1,2,3,4i = 1,2,3,4,j =
1,2,3l = (3)
3(3)(3)
()()(1)()***(1)()l l l l
O E k E k y k u k net y k u k O net ∂∂∂∂+∂=∂∂+∂∂∂
(2)
'(2)
(2)[()]()
j j j O f net k net k ∂=∂
3(3)1(2)
()()jl j
net k k O ω∂=∂ (2)(1)(2)()()
j i ij
net O k k ω∂=∂
()t a n h (f x x =,为输出层激励函数,'2()[1()]/2f x f x =-为其偏导数。
故而最终有:
3(3)'(2)(1)(2)3
1()()[*()]*[()]*()()()
jl j i l ij l E k E k k f net k O k k net k ωω=∂∂=∑∂∂ (3) 网络权值修正量
梯度的负方向给出了网络权值修正的方向,乘以系数η,即为权值修正量。
其中η代表了算法每次在梯度负方向搜索的步长,称为网络的学习速率,另外,如果考虑上次权值对本次权值变化的影响,需要加入动量(平滑)因子 α ,此时新的权值为:。