基于BP算法的神经网络PID控制器设计及仿真
基于BP神经网络的PID控制器的设计

基于BP神经网络的PID控制器的研究与实现课程名称:人工神经网络目录前言 (3)一、BP神经网络 (4)二、模拟PID控制系统 (5)三、基于BP神经网络的PID控制器 (6)四、仿真程序 (10)五、运行结果 (17)六、总结 (18)参考文献 (19)前言人工神经网络是以一种简单神经元为节点,采用某种网络拓扑结构构成的活性网络,可以用来描述几乎任意的非线性系统。
不仅如此,人工神经网络还具有学习能力、记忆能力、计算能力以及各种智能处理能力,在不同程度和层次上模仿人脑神经系统的信息处理、存储和检索的功能。
不同领域的科学家,对人工神经网络有着不同的理解、不同的研究内容,并且采用不同的研究方法。
对于控制领域的研究工作者来说,人工神经网络的魅力在于:①能够充分逼近任意复杂的非线性关系,从而形成非线性动力学系统,以表示某种被控对象的模型或控制器模型;②能够学习和适应不确定性系统的动态特性;③所有定量或定性的信息都分布储存于网络内的各神经单元,从而具有很强的容错性和鲁棒性;④采用信息的分布式并行处理,可以进行快速大量运算。
对于长期困扰控制界的非线性系统和不确定性系统来说,人工神经网络无疑是一种解决问题的有效途径。
正因为如此,把人工神经网络引入传统的PID 控制,将这两者结合,则可以在一定程度上解决传统PID 调节器不易在线实时整定参数、难于对一些复杂过程和参数慢时变系统进行有效控制的不足。
一、BP神经网络BP神经网络是一种有隐含层的多层前馈网络,其结构如图1-1所示。
如果把具有M个输入节点和L个输出节点的BP神经网络看成是从M维欧氏空间到L维欧氏空间的非线性映射,则对于具有一定非线性因数的工业过程被控对象,采用BP网络来描述,不失为一种好的选择。
在BP神经网络中的神经元多采用S型函数作为活化函数,利用其连续可导性,便于引入最小二乘学习算法,即在网络学习过程中,使网络的输出与期望输出的误差边向后传播边修正加权系数,以期使误差均方值最小。
基于BP神经网络的PID控制系统设计

基于BP神经网络的PID控制系统设计一、引言PID(Proportional-Integral-Derivative)控制器是一种常用的自动控制器,其通过测量系统的输出偏差,根据比例、积分和微分三个因素来控制系统的输出。
然而,传统的PID控制器难以适应复杂、非线性和时变的系统,对于这类系统的控制,神经网络已经被证明是一种有效的方法。
本文将介绍基于BP神经网络的PID控制系统设计。
二、BP神经网络简介BP神经网络(Backpropagation Neural Network)是一种常用的前向反馈型人工神经网络,其通过反向传播算法来训练网络参数,从而实现对输入数据的学习和预测。
BP神经网络拥有多层神经元,每个神经元都与下一层神经元相连,并通过权重和阈值来传递和处理输入信息。
三、PID控制器简介PID控制器由比例(Proportional)、积分(Integral)和微分(Derivative)三个部分组成,其控制输出的公式为:u(t) = Kp * e(t) + Ki * ∑e(t)dt + Kd * de(t)/dt其中,u(t)为控制器的输出,Kp、Ki、Kd为控制器的三个参数,e(t)为系统的输出偏差,∑e(t)dt为偏差的积分项,de(t)/dt为偏差的微分项。
1.数据采集和预处理:首先需要采集系统的输入和输出数据,并对其进行预处理,包括数据归一化和滤波处理等。
2.神经网络设计和训练:根据系统的输入和输出数据,设计BP神经网络的结构,并使用反向传播算法来训练网络参数。
在训练过程中,根据系统的输出偏差来调整比例、积分和微分三个参数。
3.PID控制器实现:根据训练得到的神经网络参数,实现PID控制器的功能。
在每个控制周期内,根据系统的输出偏差来计算PID控制器的输出,将其作为控制信号发送给被控制系统。
4.参数调优和性能评估:根据控制系统的实际情况,对PID控制器的参数进行调优,以提高系统的控制性能。
基于BP神经网络的PID控制器设计

基于BP神经网络的PID控制器设计PID控制器是一种常用的控制器,可以通过根据系统的误差、历史误差和误差的变化率来计算控制信号,从而实现对系统的控制。
传统的PID控制器可以通过调节PID参数来实现对系统动态特性的控制,但是参数调节过程往往需要经验和反复试验,而且很难实现对非线性系统的精确控制。
近年来,基于BP神经网络的PID控制器设计方法得到了广泛的关注。
BP神经网络是一种常用的人工神经网络模型,可以通过训练得到输入与输出之间的映射关系。
在PID控制器设计中,可以将误差、历史误差和误差的变化率作为BP神经网络的输入,将控制信号作为输出,通过训练神经网络来实现对控制信号的合理生成。
1.数据预处理:首先需要采集系统的输入输出数据,包括系统的误差、历史误差和误差的变化率以及相应的控制信号。
对这些数据进行归一化处理,以便神经网络能够更好地学习和训练。
2.网络结构设计:根据系统的特性和要求,设计BP神经网络的输入层、隐藏层和输出层的神经元数量。
通常情况下,隐藏层的神经元数量可以根据经验设置为输入层和输出层神经元数量的平均值。
3.训练网络:采用反向传播算法对神经网络进行训练,以获得输入和输出之间的映射关系。
在训练过程中,需要设置学习率和动量系数,并且根据训练误差的变化情况来确定训练的终止条件。
4.参数调整:将训练得到的神经网络与PID控制器相结合,根据神经网络的输出和系统的误差、历史误差和误差的变化率来计算控制信号,并通过对PID参数的调整来实现对系统的控制。
1.适应能力强:BP神经网络能够通过训练来学习系统的动态特性,从而实现对非线性系统的精确控制。
2.自适应性高:BP神经网络能够根据实时的系统状态来实时调整控制信号,从而实现对系统动态特性的自适应控制。
3.参数调节方便:通过BP神经网络的训练过程,可以直接得到系统的输入和输出之间的映射关系,从而减少了传统PID控制器中参数调节的工作量。
4.系统稳定性好:基于BP神经网络的PID控制器能够根据系统状态及时调整控制信号,从而提高了系统的稳定性和鲁棒性。
基于BP神经网络的PID控制系统设计

基于BP神经网络的PID控制系统设计一、引言PID控制系统是目前工业控制中广泛应用的一种基本控制方法,它通过测量控制系统的偏差来调节系统的输出,以实现对控制对象的稳定控制。
然而,传统的PID控制器需要事先对系统建模,并进行参数调整,工作效果受到控制对象模型的准确性和外部干扰的影响。
而BP神经网络具有非线性映射、自适应性强、鲁棒性好等优点,可以有效地克服传统PID控制器的缺点。
因此,基于BP神经网络的PID控制系统设计成为当前研究的热点之一二、基于BP神经网络的PID控制系统设计理论1.PID控制器设计原理PID控制器是由比例环节(Proportional)、积分环节(Integral)和微分环节(Derivative)组成的控制器,其输出信号可以表示为:u(t) = Kp*e(t) + Ki*∫e(t)dt + Kd*(de(t)/dt),其中e(t)为控制系统的输入偏差,t为时间,Kp、Ki和Kd分别为比例系数、积分系数和微分系数。
2.BP神经网络理论BP神经网络是一种前馈型神经网络,通过反向传播算法对输入信号进行学习和训练,从而得到最优的网络结构和参数。
BP神经网络由输入层、隐层和输出层组成,其中每个神经元与上、下相邻层之间的神经元互相连接,并具有非线性的激活函数。
3.基于BP神经网络的PID控制系统设计理论基于BP神经网络的PID控制系统设计的核心思想是将BP神经网络作为PID控制器的自适应调节器,根据控制对象的输入信号和输出信号之间的误差进行训练和学习,通过调整BP神经网络的权重和阈值来实现PID 控制器的参数调节,从而提高控制系统的稳定性和鲁棒性。
三、基于BP神经网络的PID控制系统设计步骤1.系统建模首先,需要对待控制对象进行建模,获取其数学模型。
对于一些复杂的非线性系统,可以采用黑箱建模的方法,利用系统的输入和输出数据进行数据拟合,获取系统的数学模型。
2.BP神经网络训练将系统的数学模型作为BP神经网络的训练集,通过反向传播算法对BP神经网络进行训练,得到最优的网络结构和参数。
(完整word版)基于BP神经网络的自整定PID控制仿真

基于BP神经网络的自整定PID控制仿真一、实验目的1.熟悉神经网络的特征、结构及学习算法。
2.通过实验掌握神经网络自整定PID的工作原理。
3.了解神经网络的结构对控制效果的影响。
4. 掌握用Matlab实现神经网络控制系统仿真的方法。
二、实验设备及条件1.计算机系统2.Matlab仿真软件三、实验原理在工业控制中,PID控制是工业控制中最常用的方法。
这是因为PID控制器结构简单,实现简单,控制效果良好,已得到广泛应用。
但是,PID具有一定的局限性:被控制对象参数随时间变化时,控制器的参数难以自动调整以适应外界环境的变化。
为了使控制器具有较好的自适应性,实现控制器参数的自动调整,可以采用神经网络控制的方法。
利用神经网络的自学习这一特性,并结合传统的PID控制理论,构造神经网络PID控制器,实现控制器参数的自动调整。
基于BP神经网络的PID控制器结构如图4所示。
控制器由两部分组成:一是常规PID控制器,用以直接对对象进行闭环控制,且3个参数在线整定;二是神经网络NN,根据系统的运行状态,学习调整权系数,从而调整PID参数,达到某种性能指标的最优化。
图4中神经网络采用结构为4-5-3型的BP网络。
BP网络是一种单向传播的多层前向网络。
输入节点对应系统的运行状态量,如系统的偏差与偏差变化率,必要时要进行归一化处理。
输入变量的个数取决于被控系统的复杂程度,输出节点对应的是PID的3个可调参数。
由于输出不能为负,所以输出层活化函数取2()(1)()(1)1(1)a k y k y k u k y k -=+-+-非负的Sigmoid 函数,隐含层取正负对称的Sigmoid 函数。
本系统选取的BP 网络结构如图5所示。
网络的学习过程由正向和反向传播两部分组成。
如果输出层不能得到期望输出,那么转入反向传播过程,通过修改各层神经元的权值,使得误差信号最小。
输出层节点分别对应3个可调参数K p 、K i 、K d 。
基于BP神经网络PID整定原理和算法步骤

基于BP神经网络PID整定原理和算法步骤BP神经网络是一种常用的非线性拟合和模式识别方法,可以在一定程度上应用于PID整定中,提高调节器的自适应性。
下面将详细介绍基于BP神经网络的PID整定原理和算法步骤。
一、基本原理:BP神经网络是一种具有反馈连接的前向人工神经网络,通过训练样本的输入和输出数据,通过调整神经元之间的连接权重来模拟输入和输出之间的映射关系。
在PID整定中,可以将PID控制器的参数作为网络的输入,将控制效果指标作为网络的输出,通过训练网络来获取最优的PID参数。
二、算法步骤:1.确定训练数据集:选择一组适当的PID参数和相应的控制效果指标作为训练数据集,包括输入和输出数据。
2.构建BP神经网络模型:确定输入层、隐藏层和输出层的神经元数量,并随机初始化神经元之间的连接权重。
3.设置训练参数:设置学习速率、误差收敛条件和训练迭代次数等训练参数。
4.前向传播计算输出:将训练数据集的输入作为网络的输入,通过前向传播计算得到网络的输出。
5.反向传播更新权重:根据输出与期望输出之间的误差,利用误差反向传播算法来调整网络的连接权重,使误差逐渐减小。
6.判断是否达到收敛条件:判断网络的训练误差是否满足收敛条件,如果满足则跳转到第8步,否则继续迭代。
7.更新训练参数:根据训练误差的变化情况,动态调整学习速率等训练参数。
8.输出最优PID参数:将BP神经网络训练得到的最优权重作为PID 控制器的参数。
9.测试PID控制器:将最优PID参数应用于实际控制系统中,观察控制效果并进行评估。
10.调整PID参数:根据实际控制效果,对PID参数进行微调,以进一步优化控制性能。
三、应用注意事项:1.训练数据集的选择应尽量全面、充分,覆盖各种不同工况和负载情况。
2.隐藏层神经元数量的选择应根据实际情况进行合理调整,避免过拟合或欠拟合现象。
3.学习速率和训练迭代次数的设置应根据系统复杂度和训练误差的变化情况进行调整。
基于BP神经网络的PID控制器及其MATLAB仿真

(4)
( =1,2,...n)
(5)
图 2 基于 BP 网络的 PID 控制框图
中国新技术新产品
- 13 -
由于输出层的神经元的活化函数不能为负数, 取非负的 Sigmoid 函数:
性能指标函数为: (6)
由梯度下降法,我们取加权系数的修整量为:
(7) 其中, 为学习效率; 为惯性系数。
(8)
这里,
未知,为表示其变化轨迹,
用符号函数
取代。
在 PID 控制器的应用中,使神经元的输出状
态对应于 PID 控制器的三个可调参数 Kp、Ki、Kd,
高新技术
中国新技术新产品 2009 NO.10
China New Technologies and Products
基于 BP 神经网络的 PID 控制器及其 MATLAB 仿真
谢利英 (衡阳财经工业职业技术学院,湖南 衡阳 421008)
摘 要: PID 控制算法简单、应用广泛,既能消除余差,又能提高系统的稳定性,但其 P 环节、I 环节、D 环节的控制参数却参数难以整定;BP 神经 网络算法具有很强的数字运算能力,因此,可通过 BP 神经网络自学习、加权系数调整,实现 PID 的最优调整,本文以小车控制为例,利用 BP 神 经网络的学习能力进行 PID 参数的在线整定,并进行了 MATLAB 仿真,结果表明,利用 BP 神经网络可很快的找到 PID 的控制参数。 关键词:BP 网络;PID 控制;MATLAB 仿真
行 PID 控制器的调整。通过仿真可以看出,利用
BP 神经网络进行 PID 控制,能很快得到最佳的
kp、ki、kd 值,从而有效控制被控对象,为工业
应用提供了一种快速控制手段。由于基于 BP 网络
基于BP神经网络的PID控制器设计

基于BP神经网络的PID控制器设计班级:21班学号:姓名:常临妍摘要常规PID控制技术是工业控制中一种常用的控制方法。
其结构简单、容易实现、控制效果良好,且能对相当一些工业对象或过程进行有效的控制,已得到广泛应用。
但其局限性在于:当控制对象不同,或被控对象具有复杂的非线性特性时,难以建立精确的数学模型。
控制器的参数难以自动调整以适应外界环境的变化。
且由于对象和环境的不确定性,往往难以达到满意的控制效果。
为了使控制器具有较好的自适应性,实现控制器参数的自动调整,可以借助BP神经网络控制的方法。
BP神经网络已被证明具有逼近任意连续有界非线性函数的能力,给非线性控制带来了新的思路。
利用人工神经网络的自适应能力,并结合传统的PID控制理论,构造神经网络PID控制器,实现控制器参数的自动调整。
本文研究了基于BP神经网络的PID控制器设计,利用BP神经网络的自适应能力进行在线参数整定。
其实现具有自适应性等特点,网络的收敛速度快,能够对非线性对象有很好的控制,系统的跟踪性能好。
其参数设定无需知道被控对象的具体参数及其数学模型,对不同的对象具有适应性。
关键词:PID控制BP神经网络控制器设计一.绪论1.1神经元网络PID的发展历程1934年,美国心理学家W.McCulloch和数学家W.Pitts用数学模型对神经系统中的神经元进行理论建模,建立了MP神经元模型。
MP神经元模型首次用简单的数学模型模仿出生物神经元活动功能,并揭示了通过神经元的相互连接和简单的数学计算,可以进行相当复杂的逻辑运算这一事实。
1957年,美国计算机学家F.Rosenblatt提出了著名的感知器模型。
它是一个具有连续可调权值矢量的MP神经网络模型,经过训练可达到对一定输入矢量模型进行识别的目的。
1959年,美国工程师B.Widrow和M.Hoff提出了自适应线性元件。
它与感知器的主要不同之处在于其神经元有一个线性激活函数,这允许输出可以是任意值,而不仅仅只是像感知器中那样只能取0或1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
se s s G 5.01101)(−+=()(1)[(1)]()[()2(1)(2)]/p I D Iu k u k K e k K e k K e k e k e k T T =−+−++−−+−神经网络PID 控制器的设计及仿真一、传统PID 控制数字PID 控制算法分位置式和增量式两种,工程上常用的增量式PID 控制算法,其控制算式为:式中,pK 为比例系数,I K =p K /T T为积分系数,/D D K T T =为微分系数,T 为采样周期,IT 为积分时间,DT 为微分时间,()e k 为t kT =时刻的误差。
上述PID 控制算法易于用微机软件实现,PID 控制系统框图如图示。
现有一被控对象为:根据“稳定边界法”即临界比例度法,来整定调节器的参数,带入“稳定边界法整定参数计算表”得到,当采取P 调节时,KP=16,;当采取PI 调节时,KP=14.545,i T =1.7;当采取PID 调节时,KP=18.824,i T =1,d T =0.25。
通过Simulink 进行如下图所示的仿真:仿真结果如下图所示:二、基于BP算法的PID控制基于BP神经网络的PID控制系统结构如下图所示,控制器由两个部分组成:①经典的PID控制器:直接对被控对象进行闭环控制,并且KP,KI,KD三个参数为在线P,I,D整定;②神经网络NN:根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化。
即使神经网络的输出层神经元的输出状态对应于PID控制器的三个可调参数KP,KI,KD,通过神经网络的自学习、调整权系数,从而使其稳定P,I,D状态对应于某种最优控制规律下的PID控制器参数。
在这里设计的BP网络采用结构简单的三层BP神经网络,其结构如下图所示,有m个输入节点、Q个隐含层节点、3个输出节点。
输入节点对应所选的系统运行状态量,如系统不同时刻的输入量和输出量等,必要时要进行归一化K K K。
处理。
输出节点分别对应PID控制器的三个可调参数,,P I D K K K不能为负值,所以输出层神经元的激发函数取非负的Sigmoid函由于,,P I D数,而隐含层神经元的激发函数可取正负对称的Sigmoid函数。
针对此一阶线性时滞系统:构建一个三层的神经网络结构,输入层神经元个数为3,对应e(k),e(k-1),e(k-2),隐含层个数为5,输出层神经元个数为3,对应KP,KI,KD。
MATLAB中的仿真结果如下图所示:被控对象y:PID控制器的输出:误差e(t):PID参数:如图所示最终稳定后得到KP=0.1969,KI=0.2421、KD=0.009874。
三、神经网络PID控制器与传统PID控制器性能比较通过对传统PID控制和BP神经网络PID控制举例仿真,表明BP神经网络PID 控制精度高,自学习和自适应能力很强,其控制品质比普通PID的控制品质有了显著的改善,达到了预期效果。
将神经网络与PID控制相结合,利用神经网络的自学习能力和逼近任意函数的能力,可在线进行PID参数调整,有效地控制较复杂的被控对象,从仿真结果可以看出,神经网络PID控制比传统的PID控制具有更好的控制特性。
程序清单:clear all;close all;%%%%%%%%%%%%%%%%%%%%%系统参数赋初值%%%%%%%%%%%%%%%%%%%%%xite=0.01;%学习速率alfa=0.15;%惯性系数IN=4;H=5;Out=3;%wi=0.50*rands(H,IN);%神经网络权值初始化wi=[-0.6534-0.2842-0.3906-0.7250;-0.8085-0.1476-0.4470-0.1870;-1.04280.5876-1.6474-0.4955;-0.28320.0095-0.5620-0.1779;0.41510.3087-0.2521-0.4145];wi_1=wi;wi_2=wi;wi_3=wi;%wo=0.50*rands(Out,H);wo=[0.75880.26280.5832-0.1404-0.1313;-0.11340.29610.83640.22170.4520;0.72130.45780.76840.49740.3644];wo_1=wo;wo_2=wo;wo_3=wo;x=[0,0,0];u_1=0.0;u_2=0.0;u_3=0.0;u_4=0;u_5=0;%PID输出赋初值,为方便后面的离散化y_1=0.0;y_2=0.0;y_3=0.0;y_4=0;y_5=0;%输出给0值error_1=0;error_2=0;Oh=zeros(H,1);I=Oh;%隐含层输入赋初值%%%%%%%%%%%%%%%%%%%%%%%%计算%%%%%%%%%%%%%%%%%%%%%%%%%%ts=0.96for k=1:1:200time(k)=k*ts;rin(k)=1.0;num=[1];%Unlinear modelden=[101];sys=tf(num,den,'inputdelay',0.5);%传递函数G(s)离散化dsys=c2d(sys,ts,'z');[num,den]=tfdata(dsys,'v');yout(k)=-den(2)*y_1+num(2)*u_2+num(1)*u_1;%输出y离散化error(k)=rin(k)-yout(k);xi=[error(k),error_1,error_2,1];%输入层给值x(1)=error(k)-error_1;x(2)=error(k);x(3)=error(k)-2*error_1+error_2;epid=[x(1);x(2);x(3)];I=xi*wi';%隐含层节点输入for j=1:1:HOh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j)));end%隐含层活化函数tanhx变成了欧拉形式K=wo*Oh;%输出层节点输入for l=1:1:OutK(l)=exp(K(l))/(exp(K(l))+exp(-K(l)));%输出层活化函数变成了欧拉氏求解endkp(k)=K(1);ki(k)=K(2);kd(k)=K(3);%得到kp,ki,kd参数值Kpid=[kp(k),ki(k),kd(k)];du(k)=Kpid*epid;%计算U(k)u(k)=u_1+du(k);if u(k)>=10%Restricting the output of controlleru(k)=10;endif u(k)<=-10u(k)=-10;end%%%%%%%%%%%%%%%%%%%%%反向修正%%%%%%%%%%%%%%%%%%%%%%%%%%输出层dyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001));for j=1:1:OutdK(j)=2/(exp(K(j))+exp(-K(j)))^2;endfor l=1:1:Outdelta3(l)=error(k)*dyu(k)*epid(l)*dK(l);%dJ/dWoendfor l=1:1:Outfor i=1:1:Hd_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2);endendwo=wo_1+d_wo+alfa*(wo_1-wo_2);%隐含层for i=1:1:HdO(i)=4/(exp(I(i))+exp(-I(i)))^2;endsegma=delta3*wo;for i=1:1:Hdelta2(i)=dO(i)*segma(i);endd_wi=xite*delta2'*xi;wi=wi_1+d_wi+alfa*(wi_1-wi_2);%数据更新,循环修正u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_5=y_4;y_4=y_3;y_3=y_2;y_2=y_1;y_1=yout(k);wo_3=wo_2;wo_2=wo_1;wo_1=wo;wi_3=wi_2;wi_2=wi_1;wi_1=wi;error_2=error_1;error_1=error(k);endwi%找到较为合适的权值,缩小调整范围wo%%%%%%%%%%%%%%%%%%%%%%%%绘图%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure(1);plot(time,rin,'r',time,yout,'b');xlabel('time(s)');ylabel('rin,yout');%被控对象yfigure(2);plot(time,error,'r');xlabel('time(s)');ylabel('error');%误差figure(3);plot(time,u,'r');xlabel('time(s)');ylabel('u');%pid输出ufigure(4);subplot(311);plot(time,kp,'r');xlabel('time(s)');ylabel('kp');%kp,ki,kd值subplot(312);plot(time,ki,'g');xlabel('time(s)');ylabel('ki');subplot(313);plot(time,kd,'b');xlabel('time(s)'); ylabel('kd');。