基于改进的BP神经网络PID控制器
7 次下载 2 页 1188 字【 字体:大 中 小 】
基于改进的BP神经网络PID控制器
摘 要:本文提出了一种分层调整学习速率的改进方法,并设计了以改进的BP神经网络参数为基础的自整定PID控制器,在MATLAB中对其进行仿真实验。
关键词:BP;神经网络;PID控制器
1 分层调整学习速率的改进BP算法
BP算法本质上是梯度下降法。若要改进BP算法,首先要熟悉了解梯度下降法的原理。
设函数f(x)具有一阶连续导数,假设在x=x*处取得函数极小值,用xk代表在第k次接近极小值点,则在第k+1次接近极小值点为xk+1=xk+λpk,对函数f(x)在xk+1处进行泰勒级数展开:
f(xk+1)=f(xk+λpk)=f(xk)+λ?荦f(xk)Tpk+o(λ)(1-1)
上式中?荦f(xk)为函数f(x)在xk处的梯度,当λ取得非常小的值时,o(λ)为λ的高阶无穷小。如果有
?荦f(xk)Tpk<0 (1-2)
能推出
f(xk+λpk)
这就表明在第k+1次迭代时的函数值小于第k次迭代的函数值。为了使?荦f(xk)Tpk取得最小值,对其求模变化:
?荦f(xk)Tpk=||?荦f(xk)||・||pk||・cosθ (1-4)
上式中,θ为向量?荦f(xk)与pk的夹角。
假设||pk||为固定值,当θ=0时,即向量?荦f(xk)与pk同向,则cosθ=1,?荦f(xk)Tpk取得最大值;反之,当θ=180时,即向量?荦f(xk)与pk反向,则cosθ=-1,?荦f(xk)Tpk<0,所以向量pk的正方向就是梯度的负方向。沿其负梯度方向进行搜索能够使f(x)函数值减小的速率加快,能够快速地找到极小点。
根据式(1-1)可知,λ作为梯度?荦f(xk)与向量pk的系数,称为步长,同时影响着网络在负梯度方向上的搜索能力。选取最佳步长的计算公式如下:
λk=(1-5)
把求得最佳步长代入式(1-3)得
f(xk-λkpk)
我们在最佳步长的计算中能够发现,公式(1-5)的计算增加了网络计算量,可以通过使用学习速率η替代步长来降低计算量。在文章中我们提出了一种分层调整学习速率的方法,它能够同时调整输入层与隐含层及隐含层与输出层之间的网络连接权值的学习速率。
设定网络的学习速率η为一个较小的值,当满足f(xk-λkpk)
η?坩2η (1-7)
当满足f(xk-λkpk)>f(xk)条件时,则学习速率的改变趋势为:
η?坩0.5η (1-8)
2 以改进的BP神经网络参数为基础的自整定PID控制器
相比较其他而言,BP神经网络主要优胜点在于能够将网络连接权值不断代入计算来修正误差,使之可以不断接近适应度函数。学习算法的实现难度比较小,所以在构建PID控制器时,用BP网络结构来构建是比较常见的。以BP算法为基础的.神经网络能够通过自学及自适应能力找到一组最优PID参数,使系统的性能达到最优。
①常规的PID控制器:闭环控制被控对象,在线整定KP、KI、KD参数;
②BP神经网络:BP神经网络通过自学习和自适应能力不断更新整定网络的连接权值,通过不断整定使输出值极限接近目标值。当输出值为KP、KI、KD时,系统的性能为最佳。
假定BP神经网络优化PID控制器是一个由三层网络构成的,且其输入层节点有M个,隐含层节点Q个、输出层节点3个。
输出节电输出对应KP、KI、KD可调参数值,隐含层的激发函数可以取Sigmoid函数,可正可负。然而输出层的激发函数为非负。
BP神经网络输入层节点的输出为
公式中,g′(x)=g(x)・(1-g(x)),f′(x)=(1-f2(x))/2。
以改进的BP神经网络为基础的PID控制器算法:
一是对BP神经网络的结构进行明确,在明确了网络结构的同时也就明确了输出层及隐含层的节点个数。并对各层的(0)初始化,k=1;
二是为计算e(k)=r(k)-y(k),可以通过样本采集得到的r(k)及y(k)代入计算;
三是在将r(i),y(i),u(i-1),e(i)(i=k,k-1,...,k-p)输入到神经网络之前进行统一化处理;
四是通过式(2-2)和(2-3)将各层神经元的输入输出计算出来,输出层输出的数据就是PID控制器的KP(k)、K1(k)、KD(k);
五是PID的控制输出u(k)可以由式u(t)=KP[e(t)]得到;
六是当所有网络权值刷新一次之后,若误差e(k+1)满足e(k+1)<
