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

合集下载

基于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');

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

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

MATLAB基于BP神经网络PID控制程序>> %BP based PID Controlclear all;close all;xite=0.20; %学习速率alfa=0.01; %惯性因子IN=4;H=5;Out=3; %NN Structurewi=[-0.6394 -0.2696 -0.3756 -0.7023;-0.8603 -0.2013 -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 plantsys=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 k e 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 在激活函数作用下隐含层的输出 endK=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 控制器的参数endkp(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;endif u(k)<=-10u(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:OutdK(j)=2/(exp(K(j))+exp(-K(j)))^2;endfor l=1:1:Outdelta3(l)=error(k)*dyu(k)*epid(l)*dK(l);endfor 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);%Hidden layerfor 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);%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');。

基于BP神经网络的PID控制器及仿真

基于BP神经网络的PID控制器及仿真

基于BP神经网络的PID控制器及仿真2010/5/14/11:391. 引言PID(比例-积分-微分)控制器作为最早实用化的控制器已有50多年历史,因其具有算法简单、鲁棒性好、可靠性高、直观性好等优点被广泛的应用于工业过程控制及运动控制中[1]。

常规PID控制效果的优劣,不仅仅取决于控制系统模型的精确程度,还必须调整好三个参数的关系,而这种关系不一定是简单的线性组合。

实际的工业过程及运动过程往往具有时变性、变参数、变结构等不确定性及很强的非线性,精确的数学模型难以建立,此外,常规PID还有实现在线调整困难,参数间相互影响,参数整定时间长等缺点,难以取得理想的控制效果。

随着控制理论的发展,将应用广泛的PID控制器与智能控制理论相结合[2]成为智能控制研究的新方向,神经网络算法具有逼近任意非线性表达能力,很强的自学习能力和概括推广能力,在解决高度非线性和不确定系统方面有很大的的潜能,应用神经网络,可以从复杂的PID三个参数组合中寻求最佳的线性组合,使神经网络和PID本质结合。

从而使得控制器具有较好的自适应性,实现参数的自动实时调节,适应过程的变化,提高系统了的鲁棒性和可靠性。

2. BP神经网络2.1 BP神经网络的构成及设计[3]BP神经网络是一种具有三层或三层以上的神经网络,包括输入层、隐含层、输出层,上下层之间实现全连接,而每层神经元之间无连接。

当一对学习样本提供给网络后,神经元的激活值从输入层经各中间层向输出层传播,在输出层的各神经元获得网络的输入响应。

接下来,按照减少目标输出与实际误差的方向,从输出层经过各中间层逐层修正各连接权值,最后回到输入层,这种算法即BP算法。

随着这种误差逆的传播修正不断进行,网络对输入模式响应的正确率也不断上升。

(1)输入输出层的设计输入层的设计可以根据需要求解的问题和数据表示方式确定,若输入信号为模拟波形,那么输入层可以根据波形的采样点数目撅腚输入单元的维数,也可以用一个单元输入,这是输入样本为采样的时间序列。

基于BP神经网络PID整定原理和算法步骤_精品

基于BP神经网络PID整定原理和算法步骤_精品

基于BP神经网络PID整定原理和算法步骤_精品1.收集实验数据:首先需要收集系统的输入和输出数据,包括输入变量(如温度、压力等)和输出变量(如阀门开度、电机转速等)。

同时,需要记录系统的环境条件,如温度、湿度等。

2.数据预处理:对收集到的数据进行预处理,包括数据清洗、去除异常值等。

确保数据质量的同时,也要注意保持数据的连续性和完整性。

3.构建神经网络:使用BP神经网络构建PID整定模型。

BP神经网络是一种具有前馈和反馈连接的多层感知器,可以用于解决非线性问题。

根据PID控制器的输入和输出关系,设计网络的输入层、隐含层和输出层。

4. 网络训练:使用收集到的实验数据对神经网络进行训练。

训练的目标是使网络的输出尽可能接近实际输出,从而建立输入和输出之间的映射关系。

可以使用误差反向传播算法(Backpropagation)来调整网络的权重和阈值。

5.网络评估:训练完成后,使用预留的一部分数据对网络进行评估。

通过比较网络的输出和实际输出,可以评估网络的准确性和稳定性。

如果评估结果不满意,可以进行网络调整和再训练。

6. PID参数计算:根据已经训练好的神经网络,可以使用PID整定算法计算PID参数值。

常用的PID整定算法包括Ziegler-Nichols方法、Chien-Hrones-Reswick方法等。

根据系统的响应特性和性能指标,选择合适的算法进行参数计算。

7.参数调整和优化:根据实际应用需求,对计算得到的PID参数进行调整和优化。

可以通过仿真和实验验证的方式,不断调整参数,直到满足系统的性能要求。

8.实际应用:将优化后的PID参数应用到实际控制系统中。

根据系统的特点和要求,可以进一步进行参数调整和优化。

同时,需要不断监测和评估系统的性能,并及时调整和优化PID参数。

综上所述,基于BP神经网络的PID整定原理和算法步骤主要包括数据收集、数据预处理、神经网络构建、网络训练、网络评估、PID参数计算、参数调整和优化以及实际应用等步骤。

基于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神经网络进行训练,得到最优的网络结构和参数。

基于BP神经网络PID整定原理和算法步骤

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

基于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控制器的设计简介:PID控制器是一种常用的控制方法,可以使控制系统快速、稳定地对目标进行调节。

然而,传统的PID控制器需要依赖经验的设置参数,很难适用于非线性复杂的系统。

为了改善这一问题,本文提出了一种基于BP神经网络的PID控制器的设计方法。

一、神经网络介绍BP神经网络是一种常用的人工神经网络,通过反向传播算法进行学习和适应。

它可以用来建模非线性关系、解决分类和回归问题等。

BP神经网络由输入层、隐藏层和输出层构成,通过调整权重和偏置项,使得网络的输出接近于期望输出。

二、PID控制器的基本原理PID控制器是由比例(P)、积分(I)和微分(D)三个部分组成的,它们分别对应了系统的比例性能、整定性能和微分性能。

PID控制器的输出是由目标值与实际值之间的误差来决定的。

比例作用是根据误差的大小进行调节,积分作用是根据误差的积分值进行调节,微分作用是根据误差的变化率进行调节。

三、BP神经网络的PID控制器设计1.建立神经网络模型:确定输入层节点数、隐藏层节点数和输出层节点数。

2.确定权重和偏置项的初始值:可以使用随机数进行初始化。

3.设置训练样本集:训练样本集包括输入和输出的数据,可以根据实际情况进行设置。

4.确定学习率和训练次数:学习率决定了网络的更新速度,训练次数决定了网络的学习程度。

5.神经网络训练:使用BP算法对神经网络进行训练,通过反向传播算法调整权重和偏置项。

6.测试神经网络性能:使用测试数据对神经网络进行测试,评估其性能是否满足要求。

7.参数调整:根据测试结果对PID控制器的参数进行调整,使得神经网络对系统的控制更加精确。

四、实验结果分析通过对比传统的PID控制器和基于BP神经网络的PID控制器,可以发现基于BP神经网络的PID控制器具有更好的系统控制性能。

因为BP神经网络能够自适应地调整参数,适应非线性复杂系统的控制要求。

总结:基于BP神经网络的PID控制器是一种有效的控制方法,可以提高系统控制的精度和稳定性。

  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.2013 -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;
%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 k e k k e k e k e k =-+--++--+- BP 神经网络PID 的控制算式为:
()()()333
123()(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 控制器饱和环节
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');。

相关文档
最新文档