基于bp神经网络pid控制程序
基于BP神经网络的PID控制器设计
基于BP神经网络的PID控制器设计
PID控制器是一种常用的控制器,可以通过根据系统的误差、历史误
差和误差的变化率来计算控制信号,从而实现对系统的控制。传统的PID
控制器可以通过调节PID参数来实现对系统动态特性的控制,但是参数调
节过程往往需要经验和反复试验,而且很难实现对非线性系统的精确控制。
近年来,基于BP神经网络的PID控制器设计方法得到了广泛的关注。BP神经网络是一种常用的人工神经网络模型,可以通过训练得到输入与
输出之间的映射关系。在PID控制器设计中,可以将误差、历史误差和误
差的变化率作为BP神经网络的输入,将控制信号作为输出,通过训练神
经网络来实现对控制信号的合理生成。
1.数据预处理:首先需要采集系统的输入输出数据,包括系统的误差、历史误差和误差的变化率以及相应的控制信号。对这些数据进行归一化处理,以便神经网络能够更好地学习和训练。
2.网络结构设计:根据系统的特性和要求,设计BP神经网络的输入层、隐藏层和输出层的神经元数量。通常情况下,隐藏层的神经元数量可
以根据经验设置为输入层和输出层神经元数量的平均值。
3.训练网络:采用反向传播算法对神经网络进行训练,以获得输入和
输出之间的映射关系。在训练过程中,需要设置学习率和动量系数,并且
根据训练误差的变化情况来确定训练的终止条件。
4.参数调整:将训练得到的神经网络与PID控制器相结合,根据神经
网络的输出和系统的误差、历史误差和误差的变化率来计算控制信号,并
通过对PID参数的调整来实现对系统的控制。
1.适应能力强:BP神经网络能够通过训练来学习系统的动态特性,从而实现对非线性系统的精确控制。
基于bp的pid 状态空间方程
基于BP的PID 状态空间方程
介绍
在控制系统中,PID控制器是一种常用的控制策略,用于调节系统的输出以使其接
近期望值。PID控制器的设计可以基于不同的方法,其中一种常用的方法是基于反
向传播(BP)神经网络。本文将详细介绍基于BP的PID控制器的状态空间方程以
及其在控制系统中的应用。
什么是PID控制器
PID控制器是一种经典的控制器,由比例(P)、积分(I)和微分(D)三个部分
组成。PID控制器的输出是由这三个部分的加权和决定的,具体的计算公式为:
u(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt
其中,u(t)是控制器的输出,e(t)是系统的误差,Kp、Ki和Kd是控制器的参数,
分别对应比例、积分和微分部分的权重。
PID控制器的作用是根据系统当前的误差和误差的变化率来调节输出,使系统的输
出接近期望值。比例部分用于根据当前误差的大小调节输出,积分部分用于消除系统的稳态误差,微分部分用于预测误差的变化趋势。
基于BP的PID控制器
基于BP的PID控制器是一种使用BP神经网络来优化PID控制器参数的方法。BP
神经网络是一种前馈式神经网络,可以通过反向传播算法来训练网络的权重和偏置,以使得网络的输出接近期望值。
基于BP的PID控制器的设计思路是将PID控制器的参数作为BP神经网络的输入,并将系统的误差作为输出,通过反向传播算法来调整PID控制器的参数,使得系统的输出误差最小化。
基于BP的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整定原理和算法步骤
基于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 基于BP神经网络的PID控制
1 基于BP神经网络的PID控制
BP算法是在导师指导下,适合于多层神经元网络的一种学习,它是建立在梯度下降法的基础上的。理论证明,含有一个隐含层的BP网络可以实现以任意精度近似任何连续非线性函数。
BP神经网络结构如图1所示,由三层(输人层、隐含层、输出层)网络组成,使输出层的神经元状态对应PID控制器的三个可调参数 Kp、Ki、Kd 。通过神经网络的自学习、加权系数调整使神经网络输出对应于某种最优控制律下的PID控制器参数。
基于BP(Baekpropgation)网络的PID控制系统结构如图2所示,控制器由常规的PID 控制器和神经网络两部分组成,常规PID控制器直接对被控对象进行闭环控制,并且其控制参数为 Kp、Ki、Kd 在线调整方式;神经网络根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化,使输出层神经元的输出对应于PID控制器的三个可调参数 Kp、Ki、Kd 。通过神经网络的自学习、加权系数的调整,使神经网络输出对应于某种最优控制规律下的PID控制器参数。
2 改进型BP神经网络
基本BP神经网络主要存在以下两个缺陷:其一,传统BP网络是一个非线形优化问题,不可避免的存在局部极小问题。网络的权值和阀值沿局部改善的方向不断修正,力图达到使误差函数最小化的全局解,但实际上常得到的是局部最优点;其二,学习过程中,误差函数下降慢,学习速度缓,易出现一个长时间的误差坦区,即出现平台。
目前已有不少人对此提出改进的方法。如在修改权值中加入“动量项”,采用Catchy误差估计器代替传统的LMS误差估计器等。本文在此探讨通过变
MATLAB基于BP神经网络PID控制程序
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 隐含层的输出
BP神经网络与PID控制的结合
统外部观察的单元。
输入层
隐含层
输出层
典型神经网络结构
人工神经网络具有四个基本特征:
(1)非线性:非线性关系是自然界的普遍特性。大 脑的智慧就是一种非线性现象。
(2)非局限性:一个神经网络通常由多个神经元广 泛连接而成。通过单元之间的大量连接模拟大脑的 非局限性。
(3)非常定性:人工神经网络具有自适应、自组织、 自学习能力。在处理信息的同时,本身也在不断变 化。
(3) 置k=k+1,返回到(1)。
总结
将神经网络与PID控制相结合,利用神经网络的 自学习能力和逼近任意函数的能力,可在线进行PID 参数调整,有效地控制较复杂的被控对象,大大改 善了常规PID控制器的性能,同时也显示了神经网络 在解决高度非线性和严重不确定系统方面的潜能。 所以BP神经网络PID控制比传统的PID控制具有更好 的控制特性。
BP网络能学习和存贮大量的输入-输出模式映射 关系wk.baidu.com而无需事前揭示描述这种映射关系的数学方 程。它的学习规则是使用梯度下降法,通过反向传 播来不断调整网络的权值和阈值,使网络的误差平 方和最小。
误差反向传播
信息正向传播
3层BP神经网络结构图
权值是这条路径的实现概率。在每层神经元和相邻 层的连接路径。 阀值是临界值,当外界刺激达到一定的阀值时,神 经元才会受刺激,影响下一个神经元。在每个神经 元上。(输入层神经元没有) BP神经网络权值与阈值的初值一般是随机产生的。
BP神经网络算法的改进及其在PID控制中的应用研究共3篇
BP神经网络算法的改进及其在PID控制中的应用研究共3篇
BP神经网络算法的改进及其在PID控制中的应用研究1
随着工业自动化的不断推进和智能化的不断发展,控制理论和算法变得越来越重要。PID控制算法已成为现代控制中最常用的算法之一。然而,传统的PID控制算法在某些情况下会出现一些问题,这些问题需要新的解决方案。因此,本文将探讨BP神经网络算法的改进及其在PID控制中的应用研究。
BP神经网络是一种前向反馈神经网络,它通过反复迭代调整参数来学习训练数据,从而实现分类和回归等任务。BP神经网络作为一种非线性动态系统,具有自适应性、非线性和强泛化能力等特点。在控制系统中,BP神经网络可以用于模型预测、模型识别和模型控制等方面。
在控制系统中,PID控制是一种常规的线性控制技术。然而,传统的PID控制算法存在一些问题,如难以解决非线性系统、难以控制多变量系统等。为了解决这些问题,人们开始探索将BP神经网络用于控制系统。BP神经网络可以通过学习训练数据来逼近未知非线性系统,从而实现对系统的控制。
在使用BP神经网络控制系统时,需要进行参数调整来保证网络的准确性和控制效果。对于传统的BP神经网络,训练过程需要耗费大量的计算时间和计算资源。因此,人们提出了一些改进的BP神经网络算法,如逆传播算法、快速BP算法和LM
算法等。
逆传播算法是一种基于梯度下降的BP神经网络算法,该算法
通过不断地调整权重和偏置来实现网络的训练。快速BP算法
是一种改进的逆传播算法,它增加了一些优化步骤,使训练过程更快速和高效。LM算法是一种基于牛顿法的BP神经网络算法,在训练过程中可以自动调整学习率,从而提高训练的速度和准确性。
基于神经网络的自适应PID控制策略研究
基于神经网络的自适应PID控制策略研究
近年来,神经网络技术逐渐成为控制领域中的热点研究方向之一。在控制领域中,PID控制器是最常用的一种控制器,但是,在复杂的非线性系统中,PID控制
器可能会失效,因此需要一种更为智能化的自适应控制策略。本文将着重研究基于神经网络的自适应PID控制策略的原理和应用。
一、神经网络控制简介
神经网络控制是一种使用神经网络技术实现控制的控制方法。神经网络具有自
学习和自适应能力,能够适应未知的非线性因素,因此能够有效地提高控制精度。在神经网络控制中,通常使用BP神经网络进行训练,将网络的输入与输出之间的
关系建模,进而得到控制器。
二、PID控制器
PID控制器是最常用的一种控制器,它由比例项、积分项和微分项组成。其中,比例项控制系统的静态误差,积分项控制系统的稳态误差,微分项控制系统的动态响应。经过调整PID参数,可以实现对系统的稳态和动态性能的优化。
三、传统PID控制器的缺点
通过传统PID控制器的参数调整,可以得到较好的控制效果。但是,在非线性
系统控制中,PID控制器的参数调整会变得更加困难,可能会导致系统不稳定或控
制精度不高。这是因为传统PID控制器中的参数是固定的,无法根据系统的变化
进行自适应调整。因此,需要一种更为灵活、智能的自适应控制方式。
四、基于神经网络的自适应PID控制策略
与传统PID控制器不同,基于神经网络的自适应PID控制器能够在实时控制过程中不断调整控制器参数,以应对不同的情况。它能够根据系统的输入和输出实时调整控制器的权值,从而实现对非线性系统的自适应控制。
基于BP神经网络PID整定原理和算法步骤
(1)学习过程收敛速度慢,训练易陷入瘫痪;
(2)训练过程中易陷入局部极小值;
(3)网络泛化能力差;
(4)隐节点数及权重和阈值初始值的选取缺乏理论指导:
(5)未考虑样本选择对系统的影响;
(6)未考虑传递函数对神经网络系统的影响;
另外,网络结构的确定:包括隐含层数及各隐含层节点数的确定:以及学习百度文库的选取等问题的存在严重阻碍了BP神经网络的发展,致使其理论发展缓慢。同时也因为BP网络的这些缺点限制了其应用领域的拓宽及应用程度的深入,不利于国民经济的健康发展。因此,研究BP神经网络显然具有重要理论意义和重要的应用价值。
基于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控制器设计及仿真
s
e s s G 5.01
101
)(−+=
()(1)[(1)]()[()2(1)(2)]/p I D I
u k u k K e k K e k K e k e k e k T T =−+−++−−+−神经网络PID 控制器的设计及仿真
一、传统PID 控制
数字PID 控制算法分位置式和增量式两种,工程上常用的增量式PID 控制算法,其控制算式为:
式中,
p
K 为比例系数,I K =
p K /T T
为积分系数,/D D K T T =为微分系数,T 为
采样周期,
I
T 为积分时间,
D
T 为微分时间,()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控制器参数。
MATLAB基于BP神经网络PID控制程序.pdf
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 隐含层的输出
基于BP神经网络的PID自整定程序源码
基于BP神经网络的PID自整定程序源码最近在学习神经网络,并打算设计基于BP神经网络的PID参数自整定控制器。到处找资料,发现介绍这方面的资料不少,但都说得比较泛。其实,大道理我们都懂,却不知道一些实际的操作问题,比如如何用MATLAB进行仿真。看了些资料,发现现在仿真基于BP神经网络的PID控制器的方法有以下几种:
1)编写代码实现。直接编写M文件,用代码的方式来实现BP网络的权值调整,以及最终的控制器输出等。
2)将神经PID控制器编写成S函数,然后将其封装成simulink模块,直接在Simulink中搭建系统模型。这种方式的好处是系统结构比较直观,而且不需要将被控对象用代码来表示,但S函数编写很困难,对于一般人来说好像不好掌握。
3)将神经PID控制器编写成M函数,然后同样在Simulink中搭建模块。不过这种方法我还没看到有具体的实例,只是听人家这样说过。
%BP based PID Control
clear all;
close all;
xite=0.25;
alfa=0.05;
S=2; %Signal type
IN=4;H=5;Out=3; %NN Structure
if S==1 %Step Signal
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);
基于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 =--
网络的学习过程由正向和反向传播两部分组成。如果输出层不能得到期望输出,那么转入反向传播过程,通过修改各层神经元的权值,使得输出误差信号最小。 输出层节点分别对应三个可调参数
基于BP神经网络整定的PID控制
x 2
x 3
由() 和() 求得: 4式 8式
的惯 性项 :
本 文研 究 采 用 三层 B P神 经 网络 结 构 , 结 构 如 图 1 示 。 其 所
J
x1
△ 。 』= 堕 ’( ()
d
△ (一 ) f7 (
() 7
i
l
K D
K i K d
式 中 , 为 学 习 速率 ;【 惯 性 系数 。 1 1 0为 经典 增 量 式数 字 PD 的控 制 算 法 为 :()£七 7+ () I £ =, 一 ) △u七 , (
Ke wor : n r et k, D onr y dsBP eualn wor PI c tol
PI D控 制 适 用 于 可 建 立精 确 数 学 模 型 的 确 定性 系统 ,然 而
0 ((= n 』 k )
实 际工 业生 产 过 程往 往 具 有 非 线 性 、 变 不 确定 性 , 以 建 立精 时 难 确 的数 学模 型 , 实 际 生 产 中 , 在 常规 PD控 制 器 参 数 往 往 整定 不 I 良 、 能 欠 佳 , 运行 工 况 的 适应 性 很 差 。 PD 控 制器 设 计 中 , 性 对 在 I
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于bp神经网络pid控制程序
%BP based PID Control
clear all;
close all;
xite=0.25;
alfa=0.05;
IN=4;H=5;Out=3; %NN Structure
if S==1 %Step Signal
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_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_1=wo;wo_2=wo;wo_3=wo;
end
if S==2 %Sine Signal
wi=[-0.2846 0.2193 -0.5097 -1.0668;
-0.7484 -0.1210 -0.4708 0.0988;
-0.7176 0.8297 -1.6000 0.2049;
-0.0858 0.1925 -0.6346 0.0347;
0.4358 0.2369 -0.4564 -0.1324];
%wi=0.50*rands(H,IN);
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];
%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
I=Oh; %Input to NN middle layer
error_2=0;
error_1=0;
ts=0.001;
for k=1:1:6000
time(k)=k*ts;
if S==1
rin(k)=1.0;
elseif S==2
rin(k)=sin(1*2*pi*k*ts);
end
%Unlinear model
a(k)=1.2*(1-0.8*exp(-0.1*k));
yout(k)=a(k)*y_1/(1+y_1^2)+u_1;
error(k)=rin(k)-yout(k);
xi=[rin(k),yout(k),error(k),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: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
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
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');