欢迎光临钟爱文库,如需获取更多资料请使用搜索功能。
钟爱文库
当前位置:首页 » 工程科技 » 信息与通信 » 正文

基于BP神经网络的自整定PID控制仿真

基于 BP 神经网络的自整定 PID 控制仿真

基于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。

基于BP神经网络的自整定PID控制仿真

图 2 BP 网络结构 其中,输出层激励函数取非负的 Sigmoid 函数,隐层取正负对称的 Sigmoid 函数。

被控对象为一时变非线性对象,数学模型可表示为:y (k ) 式中,系数 a(k)是慢时变的,a(k ) y (k  1)  u (k  1) 1  y 2 (k  1)。

为保证控制器有一定的动态跟踪能力,选定神经网络的输入层输入为X in  [e(k ), e(k 1), e(k  2),1]T网络的学习过程由正向和反向传播两部分组成。

如果输出层不能得到期望输出,那么转入反向传播 过程,通过修改各层神经元的权值,使得输出误差信号最小。

输出层节点分别对应三个可调参数O1(3)  K p   (3) O2  KI  O3(3)  K D  取性能指标函数为: E ( k )  设其中1 (r (k )  y (k )) 2 2r ( k ) y( k )e( k )若 PID 控制器采用采用增量式数字 PID 控制算法,则有    u (k )  e ( k )  ( 3 ) O2   u (k )  e(k )  2e(k  1)  e(k  2)  ( 3 ) O3  u (k )  e(k )  e(k  1) O1( 3 )2.网络权系数调整

基于BP神经网络的自整定PID控制仿真

网络权系数的修正采用梯度下降法。

根据相关数学知识,针对指定因变量的梯度代表了使因变量增速最大的自变量变化方向,故而其反方 向代表了因变量下降最快的自变量变化方向,如果我们选取性能指标 E ( k ) 为因变量,网络各层权系数为 自变量,则对应梯度的负方向就是权系数调整的最佳方向,因此,实际上构成了一个有目标的搜索算法, 对最终结果的收敛性提供了有力的保证。

对应于本题采用的 4-5-3 型的 BP 网络,梯度负方向的计算: (1) 隐含层-输出层:E(k ) E(k ) y(k  1) u(k ) Ol(3) netl(3)  * * (3) * * (3)  (3)  y ( k  1)  u ( k )  O  net  (3) jl l l jl其中: E ( k ) 为指标函数 (3) jl 为隐含层-输出层权系数矩阵元素y(k  1) 为被控对象输出u (k ) 为 PID 控制器输出Ol(3) 为输出层输出 netl(3) 为输出层输入根据所选用神经网络的数学模型,易知:E (k )   (r (k  1)  y (k  1))  e(k  1)  y (k  1)  u (k )   e(k )  e(k  1) (3)  O1   u (k )  e( k )  (3) O2   u (k )   e ( k )  2 e ( k  1)  e ( k  2) O3(3)   Ol(3) (3)   g[netl ]  netl(3)  netl(3) (2)   O j (k )   (3) jl 其中: j  1, 2,3, 4l 1, 2 , 3O(2) j (k ) 为隐含层输出,

基于BP神经网络的自整定PID控制仿真

1 g[ x]  [1  tanh( x)] ,为输出层激励函数, g ' ( x)  g ( x)*[1  g ( x)] 为其偏导数。

2另外,y ( k  1) 直接的数学表达不容易获得,但我们可以使用它的符号函数来近似,仍可以保证参数 u ( k )修正方向的正确性, 而由此造成其模的误差只影响参数调整的速度, 它可以通过调整学习速率来得以补偿。

故而最终有:E (k ) y(k  1)  e(k  1)*sgn[ ]*[e(k )  e(k  1)]* g[netl(3) ]* O(2) j (k ) (3)  jl u(k )(2) 输入层-隐含层:    3 3 3 E (k ) E (k ) net1 (k ) E (k ) net2 (k ) E (k ) net3 (k )   *  *  * 3 3  O (2) net13 (k ) O (2) net2 (k ) O (2) net3 (k ) O (2) j j j j  O (2) net (2) E (k ) E (k ) j  * * (2) j (2) (2) (2) ij (k ) O j net j (k ) ij (k )i  1, 2,3, 4 j  1 , 2 , 3 , 4 , 5l  1 , 2 , 3其中:E (k ) E (k ) y(k  1) u(k ) Ol(3)  * * * netl3 y(k  1) u(k ) Ol(3) netl(3)O(j 2 ) net (k )( 2 ) j)  f ' [net j( 2 ( k )]net13 (k )   (3) jl (k ) (2) O jnet (2) j  (k )(2) ij Oi(1) (k )f ( x) t a n h x( ) ,为输出层激励函数, f ' ( x)  [1  f 2 ( x)] / 2 为其偏导数。

故而最终有:3 E (k ) E (k ) ' (2) (1)  [  * (3) jl (k )]* f [net j (k )]* Oi ( k ) (2) 3 l  1 ij (k ) netl (k )(3) 网络权值修正量 梯度的负方向给出了网络权值修正的方向,乘以系数 ,即为权值修正量。

其中 代表了算法每次 在梯度负方向搜索的步长,称为网络的学习速率,另外,如果考虑上次权值对本次权值变化的影响,需 要加入动量(平滑)因子  ,此时新的权值为:

基于BP神经网络的自整定PID控制仿真

(2) (2) ij (k  1)  ij (k )   *E (k )  (2) (2)   [ij (k )  ij (k  1)] (2) ij (k )   E (k ) (3) (3) (3) (3)  jl (k  1)   jl (k )   * (3)   [ jl ( k )   jl ( k  1)]    jl (k ) 3.程序流程 步骤 1:设定初始状态和参数初始值,包括随机产生初始 BP 神经网络权值系数,设定初始输入输出 值为零,设定学习速率和惯性系数,计数器设为 k=1,并设定计数上限等。

步骤 2: 计算产生 BP 神经网络隐含层输入。

本程序为采样获得 e (k) , 并结合储存的 e (k-1) , e (k-2) , 及常数 1 作为隐含层输入。

前两次的 e(k-1) ,e(k-2)并未真实产生直接取 0. 步骤 3:前向传播计算。

包括: (1)BP 神经网络前向传播计算,得到输出层输出 K p , K I , K D .; (2)增量式 PID 控制器计算控制器输出 u (k ) ; (3)被控对象模型计算输出值 y (k ) 步骤 4:反向传播计算。

包括: (1) 修正输出层的权系数  jl (k ) ;(3) (2) (2) 修正隐含层的权系数 ij (k ) ;步骤 5:参数更新 步骤 6:如果 k 达到设定的次数上限,则结束;否则,k=k+1,并返回步骤 2. 总的程序流程图如下:

基于BP神经网络的自整定PID控制仿真