MATLAB基于BP神经网络PID控制程序.pdf
基于bp神经网络pid控制程序
wo=[1.0438 0.5478 0.8682 0.1446 0.1537;
0.1716 0.5811 1.1214 0.5067 0.7370;
1.0063 0.7428 1.0534 0.7824 0.6494];
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
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;
%wo=0.50*rands(Out,H);
wo_1=wo;wo_2=wo;wo_3=wo;
end
x=[0,0,0];
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
Oh=zeros(H,1); %Output from NN middle layer
for l=1:1:Out
K(l)=exp(K(l))/(exp(K(l))+exp(-K(l))); %Getting kp,ki,kd
end
kp(k)=K(1);ki(k)=K(2);kd(k)=K(3);
Kpid=[kp(k),ki(k),kd(k)];
wi_1=wi;
error_2=error_1;
error_1=error(k);
end
figure(1);
plot(time,rin,'r',time,yout,'b');
xlabel('time(s)');ylabel('rin,yout');
基于BP神经网络的PID控制器的设计
基于BP神经网络的PID控制器的研究与实现课程名称:人工神经网络目录前言 (2)一、BP神经网络 (3)二、模拟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控制器是一种常用的控制器,可以通过根据系统的误差、历史误差和误差的变化率来计算控制信号,从而实现对系统的控制。
传统的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控制器及其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控制器的研究与实现张建国.(漳州职业技术学院电于工程系福建漳州363000)摘要:本文介绍基于BP神经网络的PID控制器的实现方法,可以在一定程度上解决传统PID调节器不易在线实时整定参数、难于对一些复杂过程和参数幔时变系统进行有效控制等问题。
一r一关键词:PID控制;神经网络;研究O引言PID控制要取得好的控制效果,必须寻找比例、积分和微分三种控制作用在形成控制量中相互配合又相互制约的关系,这种关系不一定是简单的“线性组合”,要在变化无穷的非线性组合中找出最佳的关系并非易事。
为此,本文试图利用神经网络所具有的:①能够充分逼近任意复杂的非线性关系,从而形成非线性动力学系统,以表示某种被控对象的模型或控制器模型;②能够学习和适应不确定性系统的动态特性;⑨所有定量或定性的信息都分布储存于网络内的各神经单元,从而具有很强的容错性和鲁棒性;④采用信息的分布式并行处理,可以进行快速大量运算等特点,把神经网络引入传统的PID控制,可以在一定程度上解决传统PID调节器不易在线实时整定参数、难于对一些复杂过程和参数慢时变系统进行有效控制等问题。
1基于BP神经网络的PID控制器BP神经网络具有逼近任意非线性函数的能力,而且结构和学习算法简单明确。
通过神经网络自身的学习,可以找到某一最优控制律下的P、I、D参数。
基于BP神经网络的PID控制系统结构如图1所示。
控制器由两个部分组成:①经典的PID控制器:直接对被控对象过程闭环控制,并且三个参数KP、KI、KD为在线整定式;②神经网络NN:根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化。
即使输出层神经元的输出状态对应于PID控制器的三个可调参数KP、KI、KD,通过神经网络的自身学习,加权系数调接,从而使其稳定状态对应于最优控制律下的PID控制器参数。
经典增量式数字PID的控制算式为u(k)=-u(k-1)+KP[e(k)-e(k-1)】+kIc(k)+kDEe(k)-2e(k-1.)+e(k.2)】(1)式中KP、KI、Kd一比例、积分、微分系数。
基于BP_神经网络的PID_控制算法参数优化
- 22 -高 新 技 术从本质上来看,PID 控制算法就是对比例、积分和比例微分间的关系进行控制的一种算法。
PID 控制调节器具有适应性强、鲁棒性良好的特征,因此被广泛应用于工业控制领域。
但是,随着科学技术、控制理论发展,在工业生产中被控对象逐渐向复杂化和抽象化的趋势发展,并呈现滞后性、时变性和非线性的特征,这使传统PID 控制器难以精准调控这种较复杂的控制系统。
为了解决该问题,研究人员将控制理论与其他先进的算法相结合,形成全新的控制理论,包括神经网络控制、遗传算法以及模糊控制等。
对神经网络算法来说,由于其具有较高的鲁棒性和容错性,因此适用于复杂的非线性控制系统中,并且具有广阔的应用前景和较大的发展潜力。
1 BP 神经网络结构及算法BP 神经网络将网络视为一个连续域,在这个网络中,输入层和输出层都是任意时刻、任意数目的样本值,网络输出层值与输入层值间也可以具有任意关系,这个学习过程就称为BP 神经网络学习过程。
作为一种被广泛应用的神经网络模型,BP 神经网络由输入层、输出层和隐含层组成:1) 输入层。
从第i 个输入向量中产生相应的输出值。
2) 输出层。
在输出值的作用下将其转换为输入数据。
3) 隐含层。
在输出值的作用下对数据进行隐含处理,将处理后的结果反馈给输入层,3个输入层构成1个BP 神经网络。
当输入数据在时间域内经过多次的误差传播时,最后被一个误差源作为输出信号,即经过输入单元和输出组的中间信息。
如果该误差源的误差小于输出单元和输出组中各单元间的误差,那么这些单元在计算输出时就会有很大的变化;如果超过了期望值,那么这一单元被认为是输入量存在误差(也就是输入信号存在误差),将不再使用该单元;如果仍然超过期望值,那么输出量又会存在误差[1]。
通过分析输入与输出量间的关系可以得出BP 网络中各个隐藏层上节点数与该输出量间的关系。
BP 神经网络的拓扑结构如图1所示。
为了对BP 神经网络进行运算和优化,该文设定了中间层的加权和结点临界,以便将全部采样的真实输出量与预期的输出量的偏差控制在一个很低的区间,并且通过调节这个区间来保证它的稳定性。
基于BP神经网络的模糊PID控制器的设计
基于BP神经网络的模糊PID控制器的设计【摘要】工业过程控制中广泛采用PID控制,但传统PID控制因其控制参数的固定,在线整定难等问题。
为此本文研究了一种新的自适应模糊PID控制方法,为了解决模糊推理没有学习能力的问题,本文又提出了一种基于BP神经网络的自适应模糊控制方法。
此方法是模糊控制、神经网络和PID控制的有效结合。
仿真实验表明,这种基于BP神经网络的模糊PID控制算法具有良好的控制效果。
【关键词】PID控制;BP神经网络;模糊PID控制Abstruct:PID control are widely used in industrial process control,but the traditional PID control because of its control parameters are fixed,and it is difficult to adjust its parameters online.So this paper studies a new adaptive fuzzy PID control method,to solve problem without the ability to learn,and put forward a kind of adaptive fuzzy control method based on BP neural network in this paper.It is the effective combination of fuzzy control,neural network and PID control.Simulation results show that this fuzzy PID control method based on BP neural network has good control effect.Keywords:PID control;BP neural network;Fuzzy PID control1.引言常规PID在控制领域被广泛应用,利用数学算法来整定参数。
基于BP神经网络的自校正PID控制研究
基于BP 神经网络的自校正PID 控制研究摘 要: 基于反向传播BP 算法的神经网络具有很强的学习能力,适应能力.本文详细叙述了BP 算法的原理,并将改进的BP 神经网络应用在传统的PID 控制中,克服了PID 控制在参数的调整过程中对于系统模型过分依赖的缺点.利用MATLAB 仿真的结果表明基于BP 神经网络的自校正控制能够使传统PID 控制的参数逼近最优达到很好的控制效果. 关键词: BP 算法,神经网络,PID 控制1引言随着科学技术的发展,人们需要加以控制的过程和系统越来越复杂,许多系统具有大型,复杂和强烈非线性的特点.对这些系统进行有效准确的控制就非常的困难.传统的PID 控制是通过对偏差的比例(P),积分(I),微分(D)的线性组合构成控制向量对被控对象进行控制.它算法结构简单,但是,当被控对象具有非线性,时变不确定性和难以建立精确的数学模型时,PID 控制器参数整定不良,性能欠佳,不能达到理想的控制效果.随着人们对神经网络的研究,基于BP 算法的神经网络以其自学习,自适应及逼近任意函数的能力在控制领域得到应用,将BP 神经网络和传统的PID 控制相结合构成的比例,积分,微分神经元控制器,不仅克服了PID 控制的缺陷,而且具有快速的学习能力,快速的适应性,良好的性能和鲁棒性.因此,可以通过神经网络对系统性能的学习来达到最佳的比例,积分,微分组合,实现最佳的PID 控制效果.2 神经网络的BP 算法2.1 神经网络的结构BP 神经网络是控制领域中应用最多的神经网络,它是多层神经元彼此以前馈方式连接组成的网络,网络中没有信号反馈,只有相邻层神经元,每个神经元首先完成输入信号与连接权值的内积计算,然后通过一个非线性函数作用产生输出.BP 神经网络通常由输入层,输出层和若干隐层构成每层由若干个结点组成, 每一个结点表示一个神经元,上层结点与下层结点之间通过权值联接, 同一层结点之间没有联系。
基于BP神经网络PID整定原理和算法步骤
基于BP神经网络PID整定原理和算法步骤PID(比例、积分、微分)控制是一种常用的控制算法,用于调节系统的输出使其接近期望值。
BP(Back Propagation)神经网络是一种具有强大机器学习能力的神经网络模型。
基于BP神经网络的PID整定方法结合了PID控制算法和神经网络的优点,通过神经网络的学习能力优化PID 参数的选择,提高了控制系统的鲁棒性和适应性。
以下是基于BP神经网络的PID整定原理和算法步骤:一、原理:1.神经网络模型:建立一个具有输入层、隐藏层和输出层的BP神经网络模型,其中输入层接收系统的输入信号,输出层输出控制信号的PID 参数,隐藏层的神经元通过学习调整连接权重以优化参数选择。
2.参数训练:基于反向传播算法,通过输入输出样本对神经网络进行训练,使其学习输入输出之间的映射关系。
训练过程是一个迭代过程,通过不断调整连接权重和偏置,使神经网络的输出结果逼近期望值。
3.PID原理:PID控制算法根据系统当前误差,通过比例、积分和微分项生成控制信号。
调节PID参数可以改变控制信号的响应特性,使其更好地适应控制对象的动态特性。
二、算法步骤:1.数据采集:收集系统的输入输出数据,用于训练神经网络模型。
2.数据预处理:对采集到的数据进行预处理,包括去除噪声、归一化等处理,以提高神经网络的训练效果。
3.网络构建:根据需要构建BP神经网络模型,包括输入层、隐藏层和输出层。
隐藏层的神经元数量和层数可以根据实际情况进行选择。
4.神经网络训练:将预处理后的数据输入到神经网络中,利用反向传播算法对神经网络进行训练。
根据实际需求设置训练的轮数和学习率等参数。
5.训练结果评估:通过评估神经网络的训练结果,包括误差曲线、训练时间等指标,来判断训练是否达到预期效果。
6.PID参数优化:根据神经网络的输出结果调整PID的比例、积分和微分参数。
可以通过试错法或者自适应控制方法对参数进行调整。
7.控制性能评估:利用调整后的PID参数进行控制,通过评估系统的性能指标,例如超调量、调整时间等,来判断PID参数的选择是否合理。
基于BP神经网络的PID控制器设计【范本模板】
早在20世纪初,人们就已经发现人脑的工作方式与现在的计算机是不同的.人脑是由极大量基本单元(称之为神经元)经过复杂的相互连接而成的一种高度复杂的、非线性的、并行处理的信息处理系统。人工神经网络,是借鉴人脑的结构和特点,通过大量简单处理单元(神经元或节点)互连组成的大规模并行分布式信息处理和非线性动力学系统。它具有巨量并行性、结构可变性、高度非线性、自学习性和自组织性等特点.因此,它能解决常规信息处理方法难以解决或无法解决的问题,尤其是那些属于思维(形象思维)、推理及意识方面的问题从人脑的生理结构出发来研究人的智能行为,模拟人脑信息处理的过程,即人工神经网络的研究,自20世纪40年代以来,它的发展经历了一条由兴起、萧条和兴盛三个阶段构成的曲折道路。早在1943年精神病学家和神经解剖学家McCulloch与数学家Pitts在数学生物物理学会刊((Bulletin ofMathematical Biophysics))上发表文章,总结了生物神经元的一些基本生理特征,提出了形式神经元的数学描述与结构,即MP模型。他们的神经元模型假定遵循一种所谓“有或无"规则。如果如此简单的神经元数目足够多和适当设置突触连接并且同步操作,McCulloch和Pitts证明这样构成的网络原则上可以计算任何可计算函数。这是一个有重大意义的结果,有了它就标志着神经网络和人工智能学科的诞生。1958年,计算机科学家Rosenblatt提出感知机(Perceptron),首次把神经网络理论付诸工程实现。这是一种学习和自组织的心理学模型,它基本上符合神经生物学的知识,模型的学习环境是有噪声的,网络构造中存在随机连接,这是符合动物学习的自然环境。当时,人们对神经网络的研究过于乐观,认为只要将这种神经元互连成一个网络,就可以解决人脑思维的模型问题。但是,随之而来的Minsky和Papert(1969)所著的《Percepen》一书,利用数学证明单层感知器所能计算的根本局限,提出感知器的处理能力有限,甚至连XOR这样的问题也不能解决,并在多层感知器的总结章中,论述了单层感知器的所有局限性在多层感知器中是不可能被全部克服的。使人们降低了对神经网络研究的热情,从而使神经网络进入萧条时期[7]。但在其间,一些人工神经网络的先驱仍然致力于这一研究,美国波士顿大学的Crrossberg提出了自适应共谐振理论(ART网),芬兰的Kohonen提出了自组织映射(SOM),Amari致力于神经网络数学理论的研究,这些都为神经网络的进一步研究与发展奠定了基础.1986年Remelhart和Mcllelland等人提出了并行分布处理的理论,同时,Werbos和Parker独立发展了多层网络的BP算法,这是目前最普遍的网络,广泛用于实际问题求解。如今,神经网络的应用,已渗透到模式识别、图像处理、非线性优化、语音处理、自然语言理解、自动目标识别、机器人、专家系统等各个领域,并取得了令人瞩目的成果。从众多应用研究领域取得的丰硕成果来看,人工神经网络的发展具有强大的生命力。当前存在的问题是智能水平还不高,许多应用方面的要求还不能得到很好的满足:网络分析与综合的一些理论性问题(如稳定性、收敛性的分析,网络的结构综合等)还未得到很好的解决.随着人们对大脑信息处理机理认知的深化,以及人工神经网络智能水平的提高,人工神经网络必将在科学技术领域发挥更大的作用。
毕业设计(论文)_基于BP神经网络的PID控制器设计
(2)汽车行业。汽车自动驾驶系统、保险行为分析。
(3)银行业。支票和其他文档阅览器贷款评估器。
(4)国防领域。武器操纵控制、目标跟踪、物体识别、各种新的传感器。
(5)电子领域。编码序列预测、集成电路芯片的设计、过程控制芯片、故障分析、机器视觉声音合成、非线性建模。
(6)娱乐领域。动画、特效设计、市场预测。
阶跃响应是指将一个阶跃输入加到系统上时,系统的输出。稳态误差是指系统的响应进入稳态后,系统的期望输出与实际输出之差。控制系统的性能可以用稳、准、快三个字来描述。稳是指系统的稳定性,一个系统要能正常工作,首先必须是稳定的,从阶跃响应上看应该是收敛的;准是指控制系统的准确性、控制精度,通常用稳态误差来描述,它表示系统输出稳态值与期望值之差;快是指控制系统响应的快速性,通常用上升时间来定量描述。
在模拟控制系统中,控制器最常用的控制规律是PID控制。PID的控制规律为:
(2.1)
式中, —比例系数; —积分时间常数; —微分时间常数[4]。
比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差。
基于BP神经网络的PID控制系统设计
基于BP神经网络的PID控制系统设计摘要本文主要研究一个基于神经网络的自适应PID控制系统的设计方法,利用BP神经网络对被控对象进行在线辨识和控制。
基于BP神经网络学习算法设计出两个神经网络模型:一个利用神经网络(NNM)对非线性映射的逼近能力,对被控对象进行辨识,另一个构成具有PID结构的控制器(NNC)。
通过神经网络NNM的在线学习和修正,产生对被控对象输出的预测作用,然后由网络NNC实施控制作用,从而实现对辨识对象的PID控制。
在利用神经网络对系统进行辨识时,选用白噪声信号作为系统的输入信号,以提高系统的辨识精度;另外,为了得到神经网络控制器的初始化权值,本文在自整定过程中采用常规PID控制器整定方法之一的稳定边界法。
在设计过程中运用MATLAB语言工具箱进行编程,并通过SIMULINK动态仿真工具对一阶非线性对象进行了仿真。
仿真结果表明了利用神经网络对系统进行辨识的有效性,并用经辨识所得到的输出值取代系统的实际输出值,利用神经网络NNC对系统进行控制,获得了满意的控制效果。
关键词:神经网络,BP学习算法,自适应,参数优化,辨识1 综述PID调节器从问世至今已历经了半个多世纪,在这几十年中,人们为它的发展和推广做出了巨大的努力,使之成为工业过程控制中主要的和可靠的技术工具。
近几十年来,现代控制理论迅速发展,出现了许多先进的控制算法,但到目前为止,即使在微处理技术迅速发展的今天,过程控制中大部分控制规律都未能离开PID,这充分说明PID控制仍具有很强的生命力。
过程工业控制中实际应用最多的仍是常规的PID控制算法,这是因为PID控制具有结构简单、容易实现、控制效果好和鲁棒性强等特点,且PID算法原理简明,参数物理意义明确,理论分析体系完整,为广大控制工程师所熟悉。
但在生产现场往往由于参数整定不好而使PID控制器控制效果欠佳,整定的好坏不但会影响到控制质量,而且还会影响到控制器的性能。
PID控制中一个至关重要的问题,就是控制器三参数(比例系数、积分时间、微分时间)的整定。
基于BP算法的神经网络PID控制器设计及仿真
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。
基于BP神经网络PID整定原理和算法步骤_精品
基于BP神经网络PID整定原理和算法步骤_精品1.基本原理PID控制器是一种经典的闭环控制算法,由比例项、积分项和微分项组成。
BP神经网络是一种具有自适应性的模型,可以根据输入和输出之间的关系来自动调整权重和偏置。
2.算法步骤2.1样本数据的采集在PID控制系统中,需要采集一些样本数据来训练神经网络。
可以通过试验或仿真的方式,对控制系统进行加扰动或变动目标值的操作,得到系统的输入与输出数据。
2.2数据的预处理对采集到的数据进行预处理,主要包括去除噪声、标准化等操作,使得数据更加准确和可靠。
2.3神经网络的构建根据PID控制器的结构,构建对应的BP神经网络模型。
一般来说,BP神经网络由输入层、隐含层和输出层组成。
输入层接收系统的输入数据,隐含层进行特征提取和非线性变换,输出层得到控制系统的输出。
2.4神经网络的训练将预处理后的样本数据输入到神经网络中进行训练。
训练过程中,通过调整网络的权重和偏置,使得网络的输出与期望的输出之间的误差最小化。
2.5PID参数的优化在神经网络训练完成后,可以得到最优的网络结构和权重。
根据神经网络的输出,可以得到相应的PID参数。
一般来说,比例项的参数可直接取输出层的权重,积分项和微分项的参数则可以根据网络的偏置来计算。
2.6控制系统的实时调整将优化得到的PID参数应用到实际的控制系统中。
在控制过程中,根据系统的实时反馈信号,可以通过PID控制器进行实时的调整,使得系统的响应特性达到最佳。
总结:基于BP神经网络的PID整定,通过训练神经网络来寻找最佳的PID 参数,以达到控制系统的最优响应特性。
该方法可以应用于各种复杂的控制系统中,具有很好的适应性和鲁棒性。
但需要注意的是,BP神经网络的训练过程需要较长的时间和大量的样本数据,因此在实际应用中需要进行一定的优化和加速。
基于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控制的MATLAB程序代码
基于BP神经网络的自整定PID控制仿真在工业控制中,PID控制是工业控制中最常用的方法。
这是因为PID控制器结构简单、实现简单,控制效果良好,已得到广泛应用。
但是,PID具有一定的局限性:被控制对象参数随时间变化时,控制器的参数难以自动调整以适应外界环境的变化。
为了使控制器具有较好的自适应性,实现控制器参数的自动调整,可以采用神经网络控制的方法。
利用人工神经网络的自学习这一特性,并结合传统的PID控制理论,构造神经网络PID控制器,实现控制器参数的自动调整。
基于BP神经网络的PID控制器结构如图1所示。
控制器由两部分组成:一是常规PID 控制器,用以直接对对象进行闭环控制,且三个参数在线整定;二是神经网络NN,根据系统的运行状态,学习调整权系数,从而调整PID参数,达到某种性能指标的最优化。
图1 基于神经网络的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()(()())2E 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.网络权系数调整网络权系数的修正采用梯度下降法。
BP神经网络逼近(matlab程序)
BP神经网络逼近y=1/x,MATLAB程序%BP神经网络逼近y=1/x;%----------------定义必要的变量方便调试--------------------clear;clc;q=8; %神经元个数max_epoch=100000; %最大训练次数err_goal=0.01; %期望误差最小值alpha =0.01; %学习率X = 1:0.5:10; %样本D=1./X; %期望值[m,n] = size(X); %m为输入个数,n为样本数量l=1; %单输出wjk = rand(l,q); %隐层到输出层的初始权值vij = rand(q,m); %输入层到隐层的初始权值for epoch=1:max_epoch%-------------------------前向传播求输入--------------------NETj=vij*X; %隐层净输入Yj=1./(1+exp(-NETj)); %计算隐层输出NETk=wjk*Yj; %输出层净输入Ok=1./(1+exp(-NETk));%计算输出层输出e=((D-Ok)*(D-Ok)')/2; %计算误差函数E(epoch)=e;if(e<err_goal)char='达到输出误差要求学习结束'break;end%-------------------反向传播调权值-------------------------------%调整输出层权值deltak=Ok.*(1-Ok).*(D-Ok);wjk=wjk+alpha*deltak*Yj';%调整隐含层权值deltai=Yj.*(1-Yj).*(deltak'*wjk)';vij=vij+alpha*deltai*X';end%-----------------取样本测试---------------------------------Xx = 1:3:66;D1 = 1./Xx; %期望输出[m1,n1] = size(Xx);NETj1=vij*Xx; %隐层净输入Yj1=1./(1+exp(-NETj1)); %计算隐层输出NETk1=wjk*Yj1; %输出层净输入Ok1=1./(1+exp(-NETk1));%计算输出层输出%-----------------------显示与绘图---------------------------------epoch %显示样本集计算次数Ok %显示训练集输出层输出Ok1 %显示测试集输出层输出subplot(2,2,1);plot(X,D,'b-o'); %样本与期望值title('训练集网络样本')subplot(2,2,2);plot(X,Ok,'b-o',X,D,'r-x');%训练集网络输出与期望值title('训练集网络输出与期望值')subplot(2,2,3);plot(1:1:epoch,E,'k*'); %显示误差title('训练集输出误差')subplot(2,2,4);plot(Xx,Ok1,'b-o',Xx,D1,'r-x'); %绘制样本及网络输出title('测试集网络输出与期望值')运行结果当隐层神经元个数q=8时char =达到输出误差要求学习结束epoch =86197Ok =Columns 1 through 100.8717 0.7039 0.5349 0.4121 0.3313 0.2775 0.2398 0.2120 0.1908 0.1741Columns 11 through 190.1608 0.1499 0.1410 0.1337 0.1276 0.1225 0.1183 0.1147 0.1117Ok1 =Columns 1 through 100.8717 0.2398 0.1410 0.1117 0.1013 0.0972 0.0956 0.0950 0.0947 0.0946Columns 11 through 200.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945 0.0945Columns 21 through 220.0945 0.0945当隐层神经元个数q=2时epoch =100000Ok =Columns 1 through 100.3222 0.3112 0.3007 0.2910 0.2821 0.2741 0.2668 0.2603 0.2546 0.2495Columns 11 through 190.2451 0.2413 0.2379 0.2351 0.2326 0.2305 0.2287 0.2271 0.2258Ok1 =Columns 1 through 100.3222 0.2668 0.2379 0.2258 0.2211 0.2194 0.2187 0.2185 0.2184 0.2184Columns 11 through 200.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184 0.2184Columns 21 through 220.2184 0.2184结果分析由运行结果和图形可以看出隐层神经元个数q=8时,网络训练86197次就能使误差达到0.01q=2时,网络训练次数达到最大值100000次还没有达到误差允许的范围。
BP神经网络matlab实例.pdf
BP神经网络及其MATLAB实例问题:BP神经网络预测2020年某地区客运量和货运量公路运量主要包括公路客运量和公路货运量两方面。
某个地区的公路运量主要与该地区的人数、机动车数量和公路面积有关,已知该地区20年(1999-2018)的公路运量相关数据如下:人数/万人:20.5522.4425.3727.1329.4530.1030.9634.0636.4238.09 39.1339.9941.9344.5947.3052.8955.7356.7659.1760.63机动车数量/万辆:0.60.750.850.9 1.05 1.35 1.45 1.6 1.7 1.85 2.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1公路面积/单位:万平方公里:0.090.110.110.140.200.230.230.320.320.34 0.360.360.380.490.560.590.590.670.690.79公路客运量/万人:5126621777309145104601138712353157501830419836 21024194902043322598251073344236836405484292743462公路货运量/万吨:1237137913851399166317141834432281328936 11099112031052411115133201676218673207242080321804影响公路客运量和公路货运量主要的三个因素是:该地区的人数、机动车数量和公路面积。
Matlab代码实现%人数(单位:万人)numberOfPeople=[20.5522.4425.3727.1329.4530.1030.9634.0636.42 38.0939.1339.9941.9344.5947.3052.8955.7356.7659.1760.63];%机动车数(单位:万辆)numberOfAutomobile=[0.60.750.850.91.051.351.451.61.71.852.15 2.2 2.25 2.35 2.5 2.6 2.7 2.85 2.95 3.1];%公路面积(单位:万平方公里)roadArea=[0.090.110.110.140.200.230.230.320.320.340.360.360.380.490.560.590.590.670.690.79];%公路客运量(单位:万人)passengerVolume=[5126621777309145104601138712353157501830419836 21024194902043322598251073344236836405484292743462];%公路货运量(单位:万吨)freightVolume=[123713791385139916631714183443228132893611099 112031052411115133201676218673207242080321804];%输入数据矩阵p=[numberOfPeople;numberOfAutomobile;roadArea];%目标(输出)数据矩阵t=[passengerVolume;freightVolume];%对训练集中的输入数据矩阵和目标数据矩阵进行归一化处理[pn,inputStr]=mapminmax(p);[tn,outputStr]=mapminmax(t);%建立BP神经网络net=newff(pn,tn,[372],{'purelin','logsig','purelin'});%每10轮回显示一次结果net.trainParam.show=10;%最大训练次数net.trainParam.epochs=5000;%网络的学习速率net.trainParam.lr=0.05;%训练网络所要达到的目标误差net.trainParam.goal=0.65*10^(-3);%网络误差如果连续6次迭代都没变化,则matlab会默认终止训练。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB基于BP神经网络PID控制程序
>> %BP based PID Control
clear all;
close all;
xite=0.20; %学习速率
alfa=0.01; %惯性因子
IN=4;H=5;Out=3; %NN Structure
wi=[-0.6394 -0.2696 -0.3756 -0.7023;
-0.8603 -0.XXXX -0.5024 -0.2596;
-1.0749 0.5543 -1.6820 -0.5437;
-0.3625 -0.0724 -0.6463 -0.2859;
0.1425 0.0279 -0.5406 -0.7660];
%wi=0.50*rands(H,IN); %隐含层加权系数wi初始化
wi_1=wi;wi_2=wi;wi_3=wi;
wo=[0.7576 0.2616 0.5820 -0.1416 -0.1325;
-0.1146 0.2949 0.8352 0.2205 0.4508;
0.7201 0.4566 0.7672 0.4962 0.3632];
%wo=0.50*rands(Out,H); %输出层加权系数wo初始化
wo_1=wo;wo_2=wo;wo_3=wo;
ts=20; %采样周期取值
x=[0,0,0]; %比例,积分,微分赋初值
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
Oh=zeros(H,1); %Output from NN middle layer 隐含层的输出
I=Oh; %Input to NN middle layer 隐含层输入
error_2=0;
error_1=0;
for k=1:1:500 %仿真开始,共500步
time(k)=k*ts;
rin(k)=1.0;
%Delay plant
sys=tf(1.2,[208 1],'inputdelay',80); %建立被控对象传递函数? dsys=c2d(sys,ts,'zoh'); %把传递函数离散化? [num,den]=tfdata(dsys,'v'); %离散化后提取分子、分母
yout(k)=-den(2)*y_1+num(2)*u_5;
error(k)=rin(k)-yout(k);
xi=[rin(k),yout(k),error(k),1];
%经典增量式数字PID 的控制算式为:
()(1)(()(1))()(()2(1)(2))p i d u k u k k e k e k ke k k e k e k e k =−+−−++−−+− BP 神经网络PID 的控制算式为:
()()()333123()(1)(()(1))()(()2(1)(2))u k u k o e k e k o e k o e k e k e k =−+−−++−−+− 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:H Oh(j)=(exp(I(j))-exp(-I(j)))/(exp(I(j))+exp(-I(j))); %Middle Layer 在激活函数作用下隐含层的输出
end
K=wo*Oh; %Output Layer 输出层的输入,即:隐含层的输出*权值 for l=1:1:Out
K(l)=exp(K(l))/(exp(K(l))+exp(-K(l))); %Getting kp,ki,kd 输出层的输出,即三个pid 控制器的参数
end kp(k)=K(1);ki(k)=K(2);kd(k)=K(3);
Kpid=[kp(k),ki(k),kd(k)];
du(k)=Kpid*epid;
u(k)=u_1+du(k);
if u(k)>=10 % Restricting the output of controller 控制器饱和环节 u(k)=10; end
if u(k)<=-10
u(k)=-10;
end
%以下为权值wi 、wo 的在线调整,参考刘金琨的《先进PID 控制》
dyu(k)=sign((yout(k)-y_1)/(u(k)-u_1+0.0000001));
%Output layer 输出层
for j=1:1:Out
dK(j)=2/(exp(K(j))+exp(-K(j)))^2;
end
for l=1:1:Out
delta3(l)=error(k)*dyu(k)*epid(l)*dK(l); end
for l=1:1:Out
for i=1:1:H
d_wo=xite*delta3(l)*Oh(i)+alfa*(wo_1-wo_2); end
end
wo=wo_1+d_wo+alfa*(wo_1-wo_2);
%Hidden layer
for i=1:1:H
dO(i)=4/(exp(I(i))+exp(-I(i)))^2;
end
segma=delta3*wo;
for i=1:1:H
delta2(i)=dO(i)*segma(i);
end
d_wi=xite*delta2'*xi;
wi=wi_1+d_wi+alfa*(wi_1-wi_2);
%Parameters Update 参数更新
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); 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);
end
%仿真结束,绘图
figure(1);
plot(time,rin,'r',time,yout,'b'); xlabel('time(s)');ylabel('rin,yout'); figure(2);
plot(time,error,'r');
xlabel('time(s)');ylabel('error'); figure(3);
plot(time,u,'r');
xlabel('time(s)');ylabel('u');
figure(4);
subplot(311);
plot(time,kp,'r');
xlabel('time(s)');ylabel('kp'); subplot(312);
plot(time,ki,'g');
xlabel('time(s)');ylabel('ki'); subplot(313);
plot(time,kd,'b');
xlabel('time(s)');ylabel('kd');。