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

合集下载

基于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 状态空间方程

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

基于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整定原理和算法步骤。

一、基本原理:

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控制

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控制程序

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控制的结合

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控制中的应用研究共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控制

器可能会失效,因此需要一种更为智能化的自适应控制策略。本文将着重研究基于神经网络的自适应PID控制策略的原理和应用。

一、神经网络控制简介

神经网络控制是一种使用神经网络技术实现控制的控制方法。神经网络具有自

学习和自适应能力,能够适应未知的非线性因素,因此能够有效地提高控制精度。在神经网络控制中,通常使用BP神经网络进行训练,将网络的输入与输出之间的

关系建模,进而得到控制器。

二、PID控制器

PID控制器是最常用的一种控制器,它由比例项、积分项和微分项组成。其中,比例项控制系统的静态误差,积分项控制系统的稳态误差,微分项控制系统的动态响应。经过调整PID参数,可以实现对系统的稳态和动态性能的优化。

三、传统PID控制器的缺点

通过传统PID控制器的参数调整,可以得到较好的控制效果。但是,在非线性

系统控制中,PID控制器的参数调整会变得更加困难,可能会导致系统不稳定或控

制精度不高。这是因为传统PID控制器中的参数是固定的,无法根据系统的变化

进行自适应调整。因此,需要一种更为灵活、智能的自适应控制方式。

四、基于神经网络的自适应PID控制策略

与传统PID控制器不同,基于神经网络的自适应PID控制器能够在实时控制过程中不断调整控制器参数,以应对不同的情况。它能够根据系统的输入和输出实时调整控制器的权值,从而实现对非线性系统的自适应控制。

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

基于BP神经网络PID整定原理和算法步骤
近十年来,神经网络理论与实践有了引人注目的进展,它再一次拓展了计算概念的内涵,使神经计算、进化计算成为新的学科,神经网络的软件模拟得到了广泛的应用。科技发达国家的主要公司对神经网络芯片、生物芯片情有独钟。例如Intel公司、IBM公司和HNC公司已取得了多项专利,已有产品进入市场,被国防、企业和科研部门选用,许多公众手中也拥有神经网络实用化的工具,其商业化令人鼓舞。神经网络在国民经济和国防科技现代化建设中具有广阔的应用领域和发展前景。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适用于处理需要同时考虑多因素和多条件的、不精确和模糊的信息处理问题。它主要应用领域有:语音识别、图像识别、计算机视觉、智能机器人、故障诊断、实时语言翻译、企业管理、市场分析、决策优化、物资调运、自适应控制、专家系统、智能接口、神经心理学、心理学和认知科学研究等等。
(1)学习过程收敛速度慢,训练易陷入瘫痪;
(2)训练过程中易陷入局部极小值;
(3)网络泛化能力差;
(4)隐节点数及权重和阈值初始值的选取缺乏理论指导:
(5)未考虑样本选择对系统的影响;
(6)未考虑传递函数对神经网络系统的影响;
另外,网络结构的确定:包括隐含层数及各隐含层节点数的确定:以及学习百度文库的选取等问题的存在严重阻碍了BP神经网络的发展,致使其理论发展缓慢。同时也因为BP网络的这些缺点限制了其应用领域的拓宽及应用程度的深入,不利于国民经济的健康发展。因此,研究BP神经网络显然具有重要理论意义和重要的应用价值。

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

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

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控制程序.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自整定程序源码最近在学习神经网络,并打算设计基于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控制的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控制

基于BP神经网络整定的PID控制
△u ) ( r rk 一 r rk ) kerrk 十 (r rk 一 err ( : er ( ) er ( —1+ ir ( ) er ( ) 2 r o o o o o ( 一7+ r rf 2 ) k ) er (一 ) o ( () 8
x 2
x 3
由() 和() 求得: 4式 8式
的惯 性项 :
本 文研 究 采 用 三层 B P神 经 网络 结 构 , 结 构 如 图 1 示 。 其 所

x1
△ 。 』= 堕 ’( ()

△ (一 ) f7 (
() 7


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


相关文档
最新文档