MATLAB基于BP神经网络PID控制程序.pdf

合集下载

基于bp神经网络pid控制程序

基于bp神经网络pid控制程序
wi_1=wi;wi_2=wi;wi_3=wi;
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控制器的设计

基于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控制器设计

基于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仿真

基于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控制器的研究与实现

第十六届电工理论学术研讨会论文集基于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_控制算法参数优化

基于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控制器的设计

基于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 神经网络的自校正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 神经网络通常由输入层,输出层和若干隐层构成每层由若干个结点组成, 每一个结点表示一个神经元,上层结点与下层结点之间通过权值联接, 同一层结点之间没有联系。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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');。

相关文档
最新文档