BP神经网络PID控制
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BP 神经网络PID 控制
BP 神经网络的原理不再赘述,采用BP 神经控制对PID 进行参数整定的原理框图如下:
BP 神经网络可以根据系统运行的状态,对PID 参数Kp,Ki 和Kd 进行调节,使系统达到最优的控制状态。经典的增量式数字PID 的控制算法为:
()(1)()
()(()(1))()(()2(1)(2))p I D u k u k u k u k K e k e k K e k K e k e k e k =-+∆⎧⎨
∆=--++--+-⎩
采用三层BP 神经网络结构。
输入层神经元个数可根据被控系统的复杂程度选取。可从如下参数中选取,系统输入
in r ,系统输出out y ,系统误差e ,和误差变量e ∆,可在系统误差e 的基础之上再加上其他
参数输入,使BP 神经网络能够适应更为复杂的系统的PID 参数整定。
隐层神经元的个数视被控系统的复杂程度进行调整,一本系统复杂时,就需选用更多的隐层神经元。
输出层的神经元个数为3个,输出分别为Kp,Ki 和Kd 。 隐层神经元函数一般选取正负对称的sigmoid 函数:
(2)()x x
s
x x
e e f
x e e ---=+
由于Kp,Ki 和Kd 必须为正,则输出层神经元函数的输出值一般可以选取正的sigmoid 函数:
(3)1
()1s x
f x e -=
+
系统性能指标取:1
()(()())2
in out E k r k y k =
-
采用梯度下降法对BP 神经网络的参数进行调整:
设输入层的个数为N ,输出向量为(1)O ,隐层个数为H ,输入阵为(2)W ,为H ×N 维向量,输出层的个数为3,输入阵设为(3)W 。
令(1)
(1)(1)
(1)12[,,
,]T
N O
O O O =
设隐层的输入向量为(2)(1)hi W O =,hi 为列向量,第j 个隐层神经元的输入:
(2)(1)
1N
j ji i
i hi w O ==∑,(1,2,j H =)
第j 个神经元的输出为(2)
()j s j ho f hi =; 输出层的输入(3)(3)I W ho =,输出为(3)
(3)(3)()[,,]T s p I D O
f I K K K ==
按照梯度下降法修正网络权系数,按E(k)的负方向调整系统,并且加一个是搜索加快的收敛全局极小的惯性量:
(3)
(3)
(3)
()()(1)oj oj oj
E k W k W k W η
α∂∆=-+∆-∂,其中η为学习速率,α为平滑因子; (3)(3)(3)(3)(3)(3)
()()()()()()()()()()()
o
o oj o o oj O k I k E k E k y k u k W y k u k O k I k W k ∂∂∂∂∂∂∆=∂∂∂∆∂∂∂(1,2,3o =,1,2,j H =)
其中(3)
oj W 为(3)W 的第o 行和第j 列。由于
()()y k u k ∂∂∆未知,通常由符号函数()
sgn(
)()
y k u k ∂∂∆来代替,所带来的误差可以通过调整η来补偿;
(3)
1(3)
2
(3)
3
()
()(1)()()
()()()
()2(1)(2)()u k e k e k O k u k e k O k u k e k e k e k O k ⎧∂∆=--⎪∂⎪⎪∂∆=⎨∂⎪⎪∂∆=--+-⎪∂⎩ 若(3)()s f x 对应的梯度为(3)()g x ,则(3)
(3)
(3)
()T
o o o O g x I ∂=∂,(3)(3)()()
o j oj I k ho W k ∂=∂, 令(3)
(3)
(3)()()()sgn(
)()()()
o
o o y k u k e k g x u k O k δ∂∂∆=∂∆∂
则最终(3)
(3)
(3)
()(1)oj o j oj W k ho W k ηδα∆=+∆-
同理,可得隐层的权值变量调整为:
(2)(2)(2)()()(1)oj j j oj W k hi k W k ηδα∆=+∆-
其中3
(2)
(2)
(3)(3)
1
()()j
j
o oj o g x W k δ
δ==∑;
基于BP 神经网络的PID 控制算法可归纳如下:
1). 事先选定BP 神经网络NN 的结构,即选定输入层节点数M 和隐含层节点数Q ,并给出权系数的初值选定学习速率η 和平滑因子α , k = 1;
2). 采样得到r(k) 和y(k) ,计算e(k) = z(k) = r(k) − y(k) ; 3). 对r(i), y(i),u(i −1),e(i)进行归一化处理,作为NN 的输入;
4). 前向计算NN 的各层神经元的输入和输出,NN 输出层的输出即为PID 控制器的三个可调参数;
5). 计算PID 控制器的控制输出u(k) ,参与控制和计算;; 6). 计算修正输出层的权系数; 7). 计算修正隐含层的权系数; 8). 置k = k +1,返回到“2)”。 仿真实例:
设控制系统的传递函数为2400
()50G s s s
=
+,采用增量式PID 控制算法,神经网络学习
速率η=0.05,平滑因子α=0.04;设初始时的[Kp,Ki,Kd]=[11 0.02 9],进过BP 神经网络整定后的[Kp,Ki,Kd]= [11.094 0.11525 9.0146],如下图所示,红线为未经整定的PID 参数对系统的控制的阶跃响应曲线,蓝线是经过BP 神经网络整定PID 参数后,系统的单位阶跃响应曲线,可以发现,经过BP 神经网络整定后的PID 控制,明显优于初始时的PID 控制,在响应速度上大大提高,且几乎没有超调。
但是,单一经过BP 网络对PID 参数进行整定,有实验可知,有时候虽然会很大程度上提高系统的响应速度,但是也会使系统产生震荡,造成系统的不稳定。