基于BP神经网络的燃烧控制系统.docx
- 文档编号:28296163
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:29
- 大小:361.88KB
基于BP神经网络的燃烧控制系统.docx
《基于BP神经网络的燃烧控制系统.docx》由会员分享,可在线阅读,更多相关《基于BP神经网络的燃烧控制系统.docx(29页珍藏版)》请在冰豆网上搜索。
基于BP神经网络的燃烧控制系统
基于BP神经网络的燃烧控制系统
4.1神经网络
4.1.1神经网络简介
神经网络(ArtificialNeuralNetworks,简称NN)是模仿人脑工作方式而设计的一种机器,它可用电子元件实现,也可用软件在计算机上实现。
NN也可以说是一种具有大量连接的并行分布式处理器,由处理单元和有向连接组成,通过对输入施加作用获取输出。
神经网络具有通过学习获取知识并解决问题的能力,其知识存储在连接权中。
神经网络自1943年被提出以后大致经历了四个发展阶段。
从1943年到60年代,在这一阶段提出了多种网络模型和相关算法;60年代末至70年代,由于电子线路交叉极限的困难难以克服,使神经元的数量受到限制,导致神经网络的发展进入低潮,相关研究工作进展缓慢。
80年代到90年代初期,由于Hopfield神经网络模型的提出,以及能量函数和稳定性等概念的产生使神经网络又获得了新的发展,相关的模型、算法和应用问题被提出。
90年代以后,神经网络在经历了80年代末到90年代初的高潮后,硬件技术、应用范围与理论水平都有了很大的进展,开始进入了稳健发展时期。
4.1.2神经网络模型
神经网络是由大量神经元按一定的结构连接而成,来完成不同信息(包括智能信息)处理任务的非线性系统。
不同神经元之间通过各自的突触权值来表示不同的连接关系。
在学习的过程中不断调整突触权值,使网络实际输出不断逼近期望输出。
图4-1是基本的神经元模型,其中X1...Xn是神经元的输入,W1…Wn是输入连接权值,T是神经元的阈值(也称偏执量)。
神经元由三个基本要素构成:
图4-1神经元模型
(1)连接权,用来表示连接强度,权值为正表示激励,为负表示抑制;
(2)求和单元,用于求取输入变量的加权和;
(3)非线性激励函数,也称活化函数,用来实现函数映射并限制神经元输出幅度。
活化函数可以是线性也可以是非线性,不同的活化函数可以构成不同的模型。
常用的活化函数类型有线性函数(比例函数)、硬限函数、饱和线性函数(分段函数)、S形函数等。
以上作用关系可以用数学表达式表达如下:
(4-1)
若把阈值T表示为输入X0,即X0=T,W0=-1,则神经元接收的信息总和为
(4-2)
输出为
(4-3)
式中,
为转移函数。
几种转移函数简述如下:
(1)单极性阈值型转移函数(如图4-2(a)所示)
(4-4)
具有这一作用方式的神经元称为阈值型神经元,这是神经元中最简单的一种,经典的M—P模型就属于这一类。
(2)双极性阈值型转移函数(如图4-2(b)所示)
(4-5)
这是神经元中最常用的一种,许多处理离散信号的神经网络采用符号函数作为转移函数。
(3)单极性Sigmoid型转移函数,简称单极性S型函数(如图4-2(c)所示)
(4-6)
(4)双极性Sigmoid型转移函数,简称双极性S型函数(如图4-2(d)所示)
(4-7)
单极性和双极性S型函数特点是函数本身及其导数都是连续的,因而在处理上十分方便。
(5)分段线性转移函数(如图4-2(e)所示)
(4-8)
该函数的特点是神经元的输入与输出在一定区间内满足线性关系,实现上比较简单,也称伪线性函数。
(6)概率型转移函数
采用概率型转移函数的神经元模型其输入与输出之间的关系是不确定的,需用一个随机函数来描述其输出状态为1或为0的概率。
设神经元输出为1的概率为:
(4-9)
式中,T称为温度参数。
由于采用该转移函数的神经元输出状态分布于热力学中的波尔兹曼分布类似,因此这种神经元模型也称为热力学模型。
(a)(b)
(c)
(d)
(e)
a)单极性阈值型转移函数;b)双极性阈值型转移函数;c)单极性Sigmoid型转移函数;d)双极性Sigmoid型转移函数;e)分段线性转移函数
图4-2转移函数图形
4.1.3神经网络结构和工作方式
从网络的连接方式上看,神经网络有两种拓扑结构。
1、前馈型神经网络
神经元接受前层神经元的输出并输入到下一层,神经元之间的连接只存在输入层—隐含层、隐含层—隐含层、隐含层—输出层之间,同一层神经元不存在互连,每层神经元的输入仅来自于前一层神经元的输出,即层间的信号流是单向的。
节点分为三类:
输入节点、输出节点和隐含节点,分别位于输入层、输出层和隐含层,输入层和输出层与外界相连,中间层称为隐含层。
前馈型网络结构如图4-3所示。
图4-3一层隐含层的前馈型网络
2、反馈型神经网络
反馈型网络模型是具有反馈功能的递归网络结构,网络中的任何两个神经元均有可能互连,信号流可以是双向且反复往返传输,直到输入—输出信息趋于平衡。
整个网络中至少存在一个闭环回路。
图4-4所示为一个完全连接的反馈型网络。
图4-4单层全连接反馈型网络
神经网络的工作过程分为两个阶段:
学习期和工作期。
网络在学习期通过学习完成网络连接权值的调整,学习完成后进入工作期,依据固定的连接权值计算某个输入作用下对应的输出。
根据作用效果,前馈网络是函数映射,用于模式识别和函数逼近。
反馈网络按照对能量函数极小点的利用情况分为两类,一类是所有极小点都起作用,多用于各种联想存储器,另一类是只有全局极小值起作用,多用于网络寻优。
4.1.4神经网络学习方法
向环境学习获取知识以改变自身性能是神经网络的重要特征。
一般情况下,神经网络按照某种方式逐步调整自身参数来改善网络性能。
按环境提供信息量的多少区分,学习方式有三种。
1、监督学习(有导师学习)
这种学习方式采用的是纠错规则,在学习训练过程中需要系统存在一个导师,它可以对一组给定的输入提供期望的输出,这组已知的输入—输出样本对称之为训练样本集,即“教师信号”。
其学习过程为基于适当的学习算法,将神经网络的实际输出与期望输出进行比较,当网络输出与期望的教师信号不符时,根据差错的方向和大小按一定的规则来调整网络参数,使网络的实际输出值逼近期望输出值。
当网络对于各种给定的输入均能产生所期望的输出时,即认为网络已经在导师的训练下“学会”了训练数据集中包含的知识和规则,可以用来进行工作了。
监督学习方式如图4-5所示。
图4-5监督学习
2、非监督学习(无导师学习)
如图4-6,非监督学习是指在没有外部导师指导下针对不同输入模式而进行的学习,学习系统按照环境提供的数据的某些统计规律来调节网络的参数或结构,以反映出输入的某种固有特性。
3、再励学习
再励学习是一种仿人心理的学习方式,如图4-7所示。
其学习思想是这样,如果对系统施加的某个行为能够带来一个满意的效果,相似的行为下采取相同的行为的趋势就加强,所以这种学习也叫加强学习或强化学习,再励学习与监督学习的不同之处在于再励学习的依据是评判信号的“好”与“不好”,而监督学习的依据是导师信号。
图4-6非监督学习
图4-7再励学习
目前常用的网络多为前向网络,而前向网络中又以BP网络和RBF网络最为常见。
本文将采用BP网络来对冶金石灰窑燃烧系统进行研究。
4.2燃烧系统BP神经网络建模与优化
石灰窑燃烧系统是工业生产中极为重要的系统。
石灰窑的工作效率和其污染物排放量的多少与石灰窑燃烧工况息息相关。
因此,为石灰窑燃烧系统建立精确的模型有利于很好的研究其高热效率的运行策略,保证其经济运行。
石灰窑的燃烧过程具有强耦合、非线性等特征,对于这些复杂的过程,难以用机理模型来描述。
由于神经网络具有非常强的非线性映射能力,对复杂系统的描述具有较好的效果,因此利用神经网络建立石灰窑燃烧控制系统的优化模型是比较合适的。
4.2.1BP网络结构
BP(BackPropagation)神经网络是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。
BP网络能学习和存贮大量的输入—输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。
它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
多层前向BP网络是目前应用最多的一种神经网络形式。
多层前向BP网络实质上实现了一个从输入到输出的映射功能,而数学理论已证明它具有实现任何复杂非线性映射的功能。
这使得它特别适合于求解内部机制复杂的问题;而且能通过学习正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力;不仅如此,BP神经网络还具有一定的推广、概括能力。
因而被广泛地运用于模式识别、函数逼近和图像处理等各个领域.然而BP网络存在着收敛速率慢、易陷入局部极小、隐层结构难以确定等不足,针对这些不足所提出的诸多改进虽一定程度上得到改善,但仍在存储空间、算法简洁等方面难以均衡。
多层感知器(MLP)是一种重要的前馈网络,其算法用的最多的是BP算法。
由于BP算法影响巨大,人们习惯上把采用BP算法训练的MLP称为BP网络,但事实上BP只是MLP的一种常用算法。
本文中沿用了BP网络这种习惯用法。
BP网络是一个完全连接的前馈网络。
由输入层、隐含层和输出层组成,其中隐含层可以有多层,每层包含多个神经元,其中输入层神经元个数是n0,后面各层的神经元个数分别为n1,,n2...。
输入层的神经元仅起信息传递作用,其转移函数是恒等函数,输出等于输入。
隐含层和输出层是完全连接的,其转移函数多采用S形函数,最常用的是Sigmoid函数
(4-10)
输出层的转移函数可以采用多种形式,最常用的是线性函数和Sigmoid函数,对于一般函数逼近问题常采用线性函数。
4.2.2BP算法
BP算法全称是误差反向传播,最初由PauWerbos在1974年的博士论文中提出,1986被由D.E.Rumelhart领导的PDP小组重新提出,对当时低迷的神经网络研究起到了极大的推动作用。
BP算法的基本思想是最小二乘法,采用梯度搜索方法,以期使网络的实际输出值与期望输出值的误差均方根最小。
BP算法的学习过程包括正向传播和反向传播。
输入信号从输入层经过隐含层到输出层,每层神经元的状态只影响下一层神经元的状态。
这个过程称作正向传播过程。
如果实际输出与期望输出误差太大,则将误差信号沿反向逐层返回,并根据误差逐层修改各权值,使得误差最小。
设一个三层BP网络有m个输入节点,
个输出节点,
个隐含神经元。
表示输入层第
个神经元到隐含层第
个神经元之间的连接权值,
表示隐含层第
个神经元到输出层第
个神经元之间的连接权值。
隐含层的输入和输出层的输入是前一层神经元的输出的加权和,输入为
,
=1,2,…m;输出为
,
=1,2,…
;BP算法训练过程如下:
(1)初始化所有权值;
(2)准备训练样本,即输入—输出样本对;
(3)计算隐含层和输出层各神经元的输出;
(4)计算实际输出与期望输出间的偏差;
(5)计算权值修正量
和
;
(6)返回至
(2)重复计算,直到单个样本输出误差E满足要求。
目前在实际应用中有两种权值调整方法。
从以上步骤可以看出,在标准BP算法中,每输入一个样本,都要回传误差并调整权值,这种对每个样本轮训的权值调整方法又称为单样本训练。
由于单样本训练遵循的是只顾眼前的“本位主义”原则,只针对每个样本产生的误差进行调整,难免顾此失彼,使整个网络训练次数增加,导致收敛速度过慢。
另一种方法是在所有样本输入之后,计算网络的总误差,然后根据总误差计算各层的误差信号并调整权值,这种累积误差的批处理方式称为批训练或周期训练。
由于批训练遵循了以减小全局误差为目标的“集体主义”原则,因而可以保证总误差向减小的方向变化。
在样本较多时,批训练比单样本训练时的收敛速度快。
具体算法流程图如下图4-8所示。
图4-8算法流程图
BP网络具有算法简单、易行、计算量小、并行能力强等优点,是目前采用最多也是最为成熟的神经网络训练算法。
BP网络的本质是误差最小值求解问题,采用非线性规划中的最速下降法,沿着误差函数的负梯度方向修改权值,于是造成了BP网络学习效率低下,收敛速度慢,易陷入局部极小值,网络泛化和适应能力较差。
通过以上文分析,BP神经网络由于其结构简单,可塑性强,故在函数逼近、模式识别等领域得到广泛应用。
但该方法存在两个主要问题:
网络学习训练的收敛性较差和易收敛到局部最小点。
因此,本文利用加动量项法对BP神经网络进行优化的方法来克服以上的缺点,将其应用于石灰窑燃烧系统建模中。
4.2.3BP网络建模
石灰窑燃烧系统是个复杂的多输入多输出系统,具有非线性、强耦合、大延时的特点。
石灰窑燃烧系统建模的目的是为了依据所建模型,利用一定的方法对燃烧系统进行优化,将得到的优化参数作为控制系统的设定参数,指导系统优化运行,达到目标最优。
图4-9为建立神经网络建模的过程。
图4-9神经网络建模过程
利用神经网络对石灰窑燃烧系统进行建模,可以充分利用数据优势,发挥神经网络处理非线性问题的优势,避免数值分析计算量过大、耗时过长、建立精确完善的模型需要充分了解机理等缺点。
这里使用了前向网络中算法最成熟、使用最频繁的BP网络和加动量项算法优化神经网络,所建模型可用图4-10表示。
神经网络相当于一个黑箱,网络根据输入—输出样本对建模对象进行学习。
动态模糊神经网络具有明确的物理意义,相当于灰箱,方便利用已有的知识和专家经验。
图4-10套筒石灰窑建模
针对石灰窑燃烧系统建立了一个加动量项的2输入1输出的三层BP神经网络模型,设置隐含层的节点个数为5个,此处节点个数的设置是通过试凑法得出,模型结构如图4-11所示。
其中x1、x2为模型的两个输入量:
燃料量和石灰窑窑体压力;y为模型的输出:
石灰窑热效率。
连接权值V、W的初始值用归一化的随机数设定。
图4-11燃烧模型的BP网络建模
4.3面向MATLAB的BP神经网络的设计
4.3.1BP神经网络的初始化
在训练前馈神经网络之前,我们必须设置权值和阈值的初始值。
当我们使用函数newff创建前馈神经网络后,网络会自动地初始化权值和阈值,缺省值都是0。
如果要设置这些初始值,可以使用函数init(),命令格式为:
net=init(net)
函数init()会根据网络的初始化函数以及它的参数值来设置网络的权值和阈值的初始值,它们分别由参数net.initFcn和net.initParam表示。
对BP神经网络来说,参数net.initFcn的值是initwb,它使网络的初始化采用了Nguyen-Widrow算法。
4.3.2BP神经网络的创建
指令格式:
net=newff
net=newff(PR,[S1S2...SN],{TF1TF2...TFN},BTF,BLF,PF)
参数意义:
PR输入向量的取值范围。
Si第i层的神经元个数,总共N层。
Tfi第i层的传递函数,缺省值为“tansig”。
BTFBP网络训练函数,缺省值为“trainlm”。
BLFBP网络权值和阈值学习函数,缺省值为“learngdm”。
PF性能函数,缺省值为“mse”。
执行结果:
创建一个N层的BP神经网络。
4.3.3BP神经网络的训练
当神经网络的权值和阈值初始化以后,我们就可以对网络进行训练。
在训练的过程中,网络的权值和阈值被反复的调整,以减少网络性能函数net.performFcn的值,直到达到预先的要求。
BP神经网络的net.performFcn的缺省值是mse—网络的输出和目标输出的均方误差。
BP神经网络的训练同样可以使用函数train()和adapt()。
函数train()是通过调用参数net.trainFcn设定的训练函数来实现网络训练的,而且训练方式由参数net.trainParam的值来确定。
而函数adapt()是通过调用参数net.adaptFcn设定的训练函数来实现网络训练的,训练方式由参数net.adaptParam的值确定。
BP神经网络的训练算法中,都是通过计算性能函数的梯度,再沿负梯度方向调整权值和阈值,从而使性能函数达到最小。
第k个循环中的调整公式可表示为
其中
表示当前的权值和阈值,
表示当前的梯度,
表示学习率。
MATLAB神经网络工具箱为我们提供了很多训练函数,本文中我将采用动量批梯度下降函数traingdm来对BP神经网络进行训练。
动量批梯度下降函数traingdm实现的是一种批的前馈神经网络训练算法,它不但具有更快的收敛速度,而且引入了一个动量项,有效的避免了局部最小问题在网络训练中的出现。
所谓动量项的加入就是指在网络的每次权值和阈值该变量中加入前一次的改变量,第k次循环中的权值和阈值改变量可表示为:
其中
、
分别表示当前性能函数对权值和阈值的梯度,
是学习率,mc是动量系数。
mc的值在0到1之间,当mc为0时,权值和阈值的改变量就由此时计算出的负梯度来确定;当mc为1时,权值和阈值的改变量就等于它们前一时刻的改变量。
而且如果在某个循环内,网络的性能函数值超过了参数max_perf_inc的值,mc的值将被自动设置为0。
4.3.4训练数据的预处理
由于实测的辅助变量之间量级上有较大差异,这些数据特征的不均衡将导致在网络训练过程中,部分变量的特征不能充分体现出来,甚至可能还会导致网络的不收敛。
因此,需要对原始计算数据进行适当的预处理,使其更适合于神经网络的训练。
当然,当训练完成之后,输出数据还要进行反变换以还原数据特征。
数据的预处理一般采用两种方法,即归一化和正态化。
本文将采用归一化来对数据进行处理。
归一化:
归一化即将训练用的输入数据和目标数据进行变换,使其数据最终分布在
区间内。
归一化公式为
(4-11)
其中,
为原始数据,
和
代表
中最大值和最小值,
为归一化后的数据。
本文采用归一化对原始输入及目标数据进行预处理,使其数据最终分布在[-1,+1]区间内。
为了测试神经网络的泛化能力,还需要将原始数据分为训练样本和测试样本,分别用于网络的学习训练和泛化测试。
本文将选择40组的数据作为训练样本,选择10组数据作为测试样本。
4.4基于BP神经网络燃烧控制系统的MATLAB仿真实现
4.4.1程序的设计
closeall
clear
echoon
clc
%NEWFF——生成一个新的前向神经网络
%TRAIN——对BP神经网络进行训练
%SIM——对BP神经网络进行仿真
pause
% 敲任意键开始
clc
% 定义训练样本, P为输入矢量
P=[-1.00000-0.94026-0.91031-0.85067-0.80551-0.77034-0.71100-0.64578-0.59067-0.55187-0.48765-0.43408-0.39304-0.36185-0.29803-0.25386-0.21944-0.15388-0.08852-0.059670.010320.044550.098570.155270.198650.259040.299130.344490.407760.448260.503320.547590.591920.655390.702040.755570.785610.854460.940061.00000;
1.000000.949570.911250.855770.811400.742810.739790.671200.633890.574380.519920.448310.406960.351490.325260.250630.235500.143720.097330.041860.01361-0.03480-0.09733-0.16289-0.19012-0.26979-0.33636-0.38981-0.45940-0.50076-0.55018-0.59052-0.65003-0.71054-0.75290-0.78215-0.86687-0.90822-0.94251-1.00000]
T=[-1.00000-0.96010-0.89999-0.84852-0.81455-0.79218-0.73180-0.70646-0.65014-0.62155-0.58085-0.51671-0.47412-0.43503-0.40404-0.36172-0.33638-0.28382-0.25336-0.19352-0.16469-0.12210-0.09487-0.06658-0.013210.014840.061460.126150.178180.221570.321020.366040.439080.457690.533170.604050.708350.736400.794891.00000]
pause;
clc
% 创建一个新的前向神经网络
net=newff(minmax(P),[5,1],{'tansig','purelin'},'traingdm')
% 当前输入层权值和阈值
inputWeights=net.IW{1,1}
inputbias=net.b{1}
% 当前网络层权值和阈值
layerWeights=net.LW{2,1}
layerbias=net.b{2}
pause
clc
%设置训练参数
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=8000;
net.trainParam.goal=6e-004;
pause
clc
% 调用TRAINGDM算法训练BP网络
[net,tr]=train(net,P,T);
pause
clc
% 对BP网络进行仿真
A=sim(net,P)
% 计算仿真误差
E=T-A
MSE=mse(E)
pause
clc
echooff
4.4.2仿真结果
一、工作空间里的相关参数(如图4-12所示)
图4-12工作空间参数表
展开后可见相关参数如下:
当前输入层权值和阈值:
inputWeights=
-1.1058-2.9287
-3.0726-0.5995
-1.5656-2.7109
-2.13852.2863
-1.81342.5518
inputbias=
3.1305
1.5652
0
-1.5652
-3.1305
当前网络层权值和阈值:
layerWeights=
-0.0183-0.0215-0.32460.8001-0.2615
layerbias=
-0.7776
仿真输出A=sim(net,P):
A=
Columns1through8
-0.9767-0.9447-0.9153-0.8698-0.8297-0.7630-0.7620-0.6983
Columns9through16
-0.6670-0.6160-0.5739-0.5136-0.4791-0.4270-0.4117-0.3428
Columns1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 BP 神经网络 燃烧 控制系统
