BP神经网络的软测量和软件仿真_第1页
BP神经网络的软测量和软件仿真_第2页
BP神经网络的软测量和软件仿真_第3页
BP神经网络的软测量和软件仿真_第4页
BP神经网络的软测量和软件仿真_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要 软测量是一门新兴的工业技术,其原理是通过数学模型计算工程上难以检测以及无法检测的信号, 很多过程工业非线性比较严重,如果用常规的非线性建模将使算法相当复杂,而神经元网络能够以任意精度逼近任意非线性映射,在解决高度非线性和严重不确定性系统建模与控制方面具有巨大的潜力。因此,利用神经网络建立软测量模型越来越引起工程技术人员的关注。本文在介绍基于神经网络软测量技术的基础上,采用VC+6.0设计了基于BP神经网络的软测量和仿真软件,其输入和输出个数可根据具体工艺需要方便的修改,便于软测量在工程应用中推广。文中最后采用Matlab软件设计了仿真程序,以一个2输入1输出非线性模型为例进行了仿真,并给

2、出了训练和仿真结果。关键词: Matlab; 软测量技术; VC+6.0;神经网络Abstract Soft-sensing technique is a newly booming industry technology. Its theory is to calculate the signal in engineering field, which is hard or incapable to check, with mathematical model. The non-linear is very serious in a lot of processing industry. T

3、he algorithm will be very complex if normal non-linear model is used. However, Neural network, which has great potential in high non-linear solution and serious undefined system model construction and control, could come to non-linear image with any accuracy. So more and more industry engineers pay

4、much attention to set up the soft-sensing model with neural network.A general neural network soft-sensing technology is introduced in this paper. In this base, BP neural network Soft-sensing and simulation software is designed using VC+6.0.And the number of input/output parameter can be modified in

5、the field of engineering .It is designed and simulated in Matlab using the non-linear model with two Input parameter and one output parameter. The training and the simulation results is given in the end.Key words : Matlab;Soft-sensing technique;VC+6.0;Neural network目录第一章 软测量的概述.11.1 软测量的技术发展11.2 本文研

6、究的内容和研究方法2第二章 基于神经网络的软测量模型建立2.1 软测量原理42.2 神经网络在软测量中的应用.42.2.1神经网络原理52.2.2神经网络软测量模型建立5第三章 基于神经网络的软测量软件设计3.1 软件开发工具选用.73.2 软件设计方法.73.3 各模块的功能及实现. 7第四章 软测量仿真研究.164.1仿真方法164.2 仿真结果及分析.164.3 小结.20第五章 结束语.21参考文献. 21第一章 概述1.1软测量的技术发展随着现代工业过程对控制、计量、节能增效和运行可靠性等要求的不断提高,各种测量要求日益增多。现代过程检测的内涵和外延较之以往均有较大的深化和拓展。一方

7、面,仅获取流量,温度,压力和液位等常规过程参数的测量信息已不能满足工艺操作和控制的要求,需要获取诸如成分,物性等与过程操作和控制密切相关的检测参数的测量信息。同时对于复杂的大型工业过程,还需要获知反应过程二维/三维的时空分布信息(例如化学反应器内的介质浓度和速度的局部分布等)。另一方面,仪表测量的精度要求越来越高,测量从静态或稳态向动态测量发展,在许多应用场合还需要综合运用所获得的各种过程测量信息,才能实现有效的过程控制,对生产过程或测量系统进行故障诊断,状态检测等1。 无论是过程控制中先进过程控制算法和策略的具体实施,还是过程优化,生产协调,故障诊断,状态监测等,其工程实现的前提是能有效地获

8、取反映过程的信息。过程检测技术发展水平的限制,导致了许多先进的控制算法和策略目前只能停留在理论探讨上,难以工业实际应用,许多工业生产系统也无法依靠故障诊断和状态监测等措施来提高系统运行的安全性和可靠性。 一般解决工业过程的测量要求有两条途径:一个是沿袭传统的检测技术发展思路,通过研制新型的过程测量仪表,以硬件形式实现过程参数的直接在线测量;另一就是采用间接测量的思路,利用易于获得的其他测量信息,通过计算来实现被检测量的估计。近年来在过程控制和检测领域涌现出的一种新技术软测量技术正是这一思想的集中体现。 软测量技术也称为软仪表技术。概括地讲,所谓软测量技术就是利用易测过程变量(常称辅助变量或二次

9、变量),依据这些易测过程变量与难以直接测量的待测过程变量(常称为主导变量)之间的数学关系,通过各种数学计算和估计方法,从而实现对待测过程变量的测量。 传统过程检测仪表的研制和应用过程涉及传感器传感机理研究,硬件仪表检测电路设计,仪表制造和定型,仪表的使用和维护以及成本核算等各个环节。这个环节是相互影响和制约的,例如若无合适的传感机理作为测量仪表的理论基础,则仪表的研制是天方夜谭,若一种仪表虽研制成功但成本过高,则其工程应用也将是有限的。同时该类仪表的针对性非常明确,测量对象、范围和功能均具有一定的局限性,且难以适合被测对象的多种变化。而采用软测量技术构成的软仪表,是以目前可有效获取的测量信息为

10、基础,其核心是用计算机语言编制的各种软件,具有智能性,可方便的根据被测对象特性的变化进行修正和改进,因此软仪表在可实现性、通用性、灵活性和成本等各方面均具有无可比拟的优势,其突出的优点和巨大的工业应用价值不言而喻。 经过多年的发展,目前已提出了不少构造软仪表的方法,并对影响软仪表的因素以及软仪表的在线校正等方面也进行了较为深入的研究。软测量技术在许多实际工业装置上也得到了成功的应用,并且其应用范围也在不断的拓展。早期的软测量技术主要用于控制变量或扰动不可测的场合,其目的是实现工业过程的复杂控制(高级控制),而现在该技术已渗透到需要实现难测参数的在线测量的各个领域。最新的研究进展表明,软测量技术

11、已成为过程控制和过程检测领域的一大研究热点和主要发展趋势。图1-1 软测量的结构图1.2本文研究的内容和研究方法众所周知,在工业在线测量过程中,很多仪表无法通过检测仪表进行直接检测,必须通过软测量(亦称间接测量)来获得。但在实际过程中,被测参数与有关参数之间存在较大的非线性和时变性,多为一模糊关系,其数学模型很难建立,这使得一般基于精确数学模型的软测量算法显得无能为力。神经网络具有很强的自学习和自适应功能,通过学习它能够逼近任意非线性,本文针对软测量的特点,应用神经网络构造了一种新的测量模式和算法。通过使用适当数量的优选实测数据作为学习样本对网络进行训练,便可建立起被测参数的软测量模型,实现对

12、存在模糊关系参数之间的软测量。典型的基于神经元网络方法的软测量仪表结构如图1-2 所示.图1-2本文研究的内容和研究方法:软测量建模方法很多,神经网络具有逼近任意非线性的能力,本文拟采用神经网络实现软测量,针对不同的工艺流程,软测量的辅助变量和主变量个数不尽相同。本文拟设计一个通用的,输入输出个数可调的网络软测量模型,便于在工程应用中推广,该模型采用VC+6.0实现,并通过Matlab进行仿真。 图1-3软测量的开发设计流程第二章 基于神经网络的软测量模型建立2.1 软测量原理软测量技术是依据某种最优化准则,利用由辅助变量构成的可测信息,通过软件计算实现对主导变量的测量,软测量的核心是表征辅助

13、变量和主导变量之间的数学关系的软测量模型,如图所示。因此构造软仪表的本质就是如何建立软测量模型,即一个数学建模的问题。相应的,建立软测量模型的过程也就是软仪表的构造过程。 需要指出的是,由于软测量模型注重的是通过辅助变量来获得对主导变量的最佳估计,即不是强调过程各输入输出变量彼此间的关系,因此,它不同于一般意义下数学模型。软测量模型本质上是要完成由辅助变量构成的可测信息集到主导变量估计y的映射,用数学公式表示即为: 图2-1 神经元网络进行软测量的映射关系 在很多过程控制场合,人们希望对质量变量实施直接控制。然而,常规的传感器或在线分析仪往往无法或及时地对这类变量进行在线测量。日益重视产品质量

14、的趋势,促使软测量技术产生并发展。2.2 神经网络在软测量中的应用神经网络是人类中枢神经系统的简化模型。关于神经网络可作如下定义:一种由许多简单的,高度互联的处理单元(又称神经元)构成的运算处理系统,它以对外部输入做出动态响应的形式处理信息。神经网络的最基本特点是并行分布的处理模式。与传统的串行运算处理模式相比,这一特点可以使信息的效率得到惊人的提高。由于信息分布式存储的作用,当部分网络损坏,输入信息不完整或受到噪声的干扰时,神经网络仍有可能表现出良好的性能,即神经网络具有高度的容错能力(或称鲁棒性)。此外,神经网络还具有自适应、自学习和联想记忆等特性。通常,神经网络的实现形式是针对特定任务的

15、应用软件。当然,神经网络也可以由硬件实现,但两者相比,前者的使用更为简单、灵活。2.2.1神经网络原理近年来,神经网络已逐步发展为一种公认的,强有力的运算处理模型。它的应用领域可大致分为辨识、控制、预测、优化、诊断、模式识别、信息压缩、风险评估等。神经网络方法对于许多以往无法解决的难题,已经被证明是有效的。但这并不意味神经网络是一把万能钥匙。最初提出神经网络方案,在实践后又恢复到传统方案的例子并不少见。因而,使用神经网络方法时仍需要做慎重而全面的考虑。此外,从今年来神经网络应用研究状况看,其他信息处理理论或方法,如模糊理论、小波变化、统计学方法、分形技术等,与神经网络的结合或融合被认为是一种发

16、展趋势。关于神经网络适宜的应用场合,实践表明在其他传统方法无法奏效时,神经网络是最佳选择。一般而言,当神经网络应用于非线性、复杂、动态、多变量或难以建模的系统时,其作用尤为突出。BP算法也称误差反向传播算法,是一种有导学习算法,用于BP网的权值和阈值学习。BP算法的步骤:(1) 权值初始化(2) 依次输入P个学习样本。设当前输入为第p个样本(3) 依次计算各层的输出(4) 求各层的反向误差(5) 记录已学习过的样本个数p(6) 按权值修正公式修正各层的权值或阈值(7) 按新的权值再计算,若满足要求,或达到最大学习次数,则终 止学习。2.2.2 神经网络软测量模型建立基于神经网络的建模方法属于辨

17、识建模。概括地说,这种辨识方法的主要特点是辨识模型易于实现和对非线性映射关系的逼近性能良好。为此,神经网络用于软测量建模是一条理想途径。目前,软仪表的概念常用于特指基于神经网络的过程主变量在线估计或预测模型。辅助变量一般被表示为神经网络的输入,而神经网络的输出为主变量的预估值。通常意义下建立软测量模型有两种基本方法:机理建模和辨识建模。此外,还有机理建模和辨识建模的方法。机理建模方法具有先验性、预估性等优点。但这种方法要求对研究对象的机理具有较深刻的理解,如果过程复杂,研究机理则需要投入相当长的时间。而且在许多情况下,必须提出简化假设以使建模问题比较易于处理。对于实际的复杂工业过程,机理建模可

18、能代价较高,引入各种假设条件也会影响模型的精度。由于直接利用反映过程动态特性的输入输出数据来建立数学模型,辨识建模方法一般无需深入了解过程机理,这可以理解为在最少限度的先验知识和假设的条件下进行建模。尽管多数的工业过程是本质非线性的,但一般的辨识方法仍主要适用于线性系统。BP网络与线性阈值单元组成的多层感知器网络结构完全相同,只是各隐节点的激活函数使用了sigmoidal函数,所以BP网络也称激活函数采用sigmoidal函数的多层感知器。BP网络输出节点的激活函数根据应用的不同而异:如果多层感知器用于分类,则输出层节点一般用sigmoidal函数或硬极限函数;如果多层感知器用于函数逼近,则输

19、出层节点应该用线性函数。 与线性阈值单元组成的多层感知器一样,BP网采用多层结构,包括输入层、多个隐含层、输出层、各层间实现全连接。 图2-2 单隐层神经网络测量模型第三章 基于神经网络的软测量软件设计3.1 软件开发工具选用VC+6.0是微软公司推出的开发工具包Visual Studio 6.0中功能最强大的开发工具,是一种面向对象程序设计语言,因为是基于C语言,比较容易操作底层,且现成的软件模块较多,从而可以大大提高软件设计能力以及开发速度,特别是在工业场合应用的较多。3.2软件设计方法本章拟设计一个通用的,输入输出个数可调的网络软测量模型,便于在工程应用中推广。该模型采用VC+6.0编程

20、实现,并通过Matlab进行仿真。本章软件设计的主要模块分为:(1)界面模块 (2)算法模块其中界面模块主要是对系统进行设置、建立神经网络、训练数据、得到训练结果、对测试数据进行仿真。BP算法也称误差反向传播算法,是一类有导学习算法,用于BP网络的权值和阈值学习。 3.3各模块功能及实现(1)界面模块主要由样本训练部分和数据仿真两大部分组成。其中样本训练部分先对系统精度、最大训练次数、以及步长进行设置,然后输入输入层、隐含层以及输出层的数目,再根据需要选择训练算法和激活函数,最后调入训练数据对样本进行训练。数据仿真部分主要是对已经训练好的网络进行仿真。程序主界面如下:网络训练部分程序默认状态是

21、样本训练状态,现将样本训练状态下的如何训练网络进行说明。系统精度:定义系统目标精度,根据需要定义网络训练误差精度。误差公式是对训练出网络的输出层节点和实际的网络输出结果求平方差的和。最大训练次数:默认为10000次,根据需要调整,如果到达最大训练次数网络还未能达到目标精度,程序退出。步长:默认为0.01。输入层数目:人工神经网络的输入层神经元的节点数目。隐含层数目:人工神经网络的隐含层神经元的节点数目。输出层数目:人工神经网络的输出层神经元的节点数目。训练算法:激活函数: 不同的网络激活函数表现的性能不同,可根据实际情况选择。样本数据的处理:由于程序没有实现归一化功能, 因此用来训练的样本数据

22、首先要归一化后才能进行训练。其中:数据输入:就是选择用来训练的样本的文件,文件格式为每个参与训练网络的样本数据(包括输入和输出)占用一行,数据之间用空格隔开。存储网络: 就是用来存放最终训练成功的网络权值等信息的文件,在仿真时调用时用。保存结果:网络训练的最终结果,副产品,可丢弃,用来查看网络训练的精度。训练点击该按钮用来训练网络。网络仿真部分首先要点击按钮。切换到数据仿真状态。界面如图:调入训练好的网络,然后选择用来仿真的数据(只包含输入层神经元的节点数目),点击仿真按钮即可。调入网络:选择已经训练好的网络文件,假设net_lm_sigmoid_16.txt文件是已经满足精度和泛化能力较好的

23、网络文件,就调入该文件。数据输入:选择用来仿真的数据文件,该文件格式同前面介绍的用来训练网络的件的格式,但需要去掉用网络来模拟的参数,只提供用来测试的网络输入层数据。仿真结果:用来保存对测试数据仿真后得到结果文件,即为所想要的数据。(2)BP算法模块的实现部分源程序如下:#include iostream.hj#include iomanip.h#include stdlib.h#include math.h#include stdio.h#include time.h#include fstream.h#define N 1 /学习样本个数#define IN 3 /输入层神经元数目#def

24、ine HN 3 /隐层神经元数目#define ON 2 /输出层神经元数目double PIN; /单个样本输入数据double TON; /单个样本教师数据double WHNIN; /输入层至隐层权值double VONHN; /隐层至输出层权值double XHN; /隐层的输入double YON; /输出层的输入double HHN; /隐层的输出double OON; /输出层的输出double YU_HNHN; /隐层的阈值double YU_ONON; /输出层的阈值double err_mN; /第m个样本的总误差double a; /输出层至隐层的学习效率double

25、b; /隐层至输入层学习效率/定义一个放学习样本的结构struct double inputIN; /输入在上面定义是一个double teachON; /输出在上面定义也是一个Study_DataN;/学习样本/初始化权、阈值子程序/initial()/隐层权、阈值初始化/srand( (unsigned)time( NULL ) );for(int i=0;iHN;i+)for(int j=0;jIN;j+)Wij= (double)(rand()/32767.0)*2-1); /初始化输入层到隐层的权值,随机模拟0 和 1 -1for(int ii=0;iiON;ii+)for(int

26、jj=0;jjHN;jj+) Viijj= (double)(rand()/32767.0)*2-1); /初始化隐层到输出层的权值,随机模拟0 和 1 -1for(int k=0;kHN;k+)YU_HNk = (double)(rand()/32767.0)*2-1); /隐层阈值初始化 ,-0.01 0.01 之间for(int kk=0;kkON;kk+)YU_ONkk = (double)(rand()/32767.0)*2-1); /输出层阈值初始化 ,-0.01 0.01 之间 return 1;/子程序initial()结束/第m个学习样本输入子程序/input_P(int m

27、)for (int i=0;iIN;i+) Pi=Study_Datam.inputi;/获得第m个样本的数据return 1;/子程序input_P(m)结束/第m个样本教师信号子程序/input_T(int m)for (int k=0;km;k+) Tk=Study_Datam.teachk;return 1;/子程序input_T(m)结束/隐层各单元输入、输出值子程序/H_I_O()double sigma;int i,j;for (j=0;jHN;j+)sigma=0.0;for (i=0;iIN;i+)sigma+=Wji*Pi;/求隐层内积Xj=sigma - YU_HNi;/

28、求隐层净输入,减去隐层的阈值Hj=1.0/(1.0+exp(-Xj);/求隐层输出 siglon算法return 1;/子程序H_I_O()结束/输出层各单元输入、输出值子程序/O_I_O()double sigma;for (int k=0;kON;k+) sigma=0.0; for (int j=0;jHN;j+) sigma+=Vkj*Hk;/求输出层内积Yk=sigma-YU_ONk; /求输出层净输入Ok=1.0/(1.0+exp(-Yk);/求输出层输出return 1;/子程序O_I_O()结束/输出层至隐层的一般化误差子程序/double d_errON;Err_O_H(in

29、t m)double abs_errON;/每个样本的绝对误差都是从0开始的double sqr_err=0;/每个样本的平方误差计算都是从0开始的for (int k=0;kON;k+) abs_errk=Tk-Ok;/求第m个样本下的第k个神经元的绝对误差sqr_err+=(abs_errk)*(abs_errk);/求第m个样本下输出层的平方误差d_errk=abs_errk*Ok*(1.0-Ok);/d_errk输出层各神经元的一般化误差err_mm=sqr_err/2;/第m个样本下输出层的平方误差/2=第m个样本的均方误差return 1;/子程序Err_O_H(m)结束/隐层至输

30、入层的一般化误差子程序/double e_errHN;Err_H_I()double sigma;for (int j=0;jHN;j+) sigma=0.0; for (int k=0;kON;k+) sigma=d_errk*Vkj;e_errj=sigma*Hj*(1-Hj);/隐层各神经元的一般化误差return 1;/子程序Err_H_I()结束/输出层至隐层的权值调整、输出层阈值调整计算子程序/Delta_O_H(int m)for (int k=0;kON;k+)for (int j=0;jHN;j+)Vkj+=a*d_errk*Hj;/输出层至隐层的权值调整YU_ONk+=a*

31、d_errk;/输出层至隐层的阈值调整return 1;/子程序Delta_O_H()结束/隐层至输入层的权值调整、隐层阈值调整计算子程序/Delta_H_I(int m)for (int j=0;jHN;j+)for (int i=0;iIN;i+) Wji+=b*e_errj*Pi;/隐层至输入层的权值调整YU_HNj+=b*e_errj;return 1;/子程序Delta_H_I()结束/N个样本的全局误差计算子程序/double Err_Sum()double total_err=0;for (int m=0;mN;m+) total_err+=err_mm;/每个样本的均方误差加起

32、来就成了全局误差return total_err;/子程序Err_sum()结束上述程序代码是BP算法各功能函数的具体实现,把界面模块中用户输入的各参数和样本值用于上述算法便可实现BP算法的训练和仿真。第四章 软测量仿真研究 Matlab 是公认最优秀的数学应用软件。其中的神经网络工具箱几乎包含了神经网络理论的最新研究及应用成果,涉及感知器、线性网络、BP 网络、径向基网络、自组织网络和回归网络等;它针对各类网络模型,集成了许多神经网络学习算法,可使用户直观、方便地进行分析、计算及仿真工作。4.1 仿真方法神经网络工具箱函数trainbp, trainbpm, trainlm,可对BP网络进行

33、训练。他们的用法是类似的,只是采用的学习规则有所不同。对于单层BP网络tp=disp_freq max_epoch err_goal lr;w,b,epoch,tr=trainbp(w,b, F,p,t,tp);其中tr表示训练误差,训练参数tp确定了学习过程的显示频率、最大训练步数、误差指标以及学习率,F表示神经元所采用的传递函数类型。对于两层BP网络w1,b1,w2,b2,epochs,tr=trainbp(w1,b1, F1,w2,b2, F2,p,t,tp);对于三层BP网络w1,b1,w2,b2,w3,b3,te,tr= trainbp(w1,b1, F1,w2,b2, F2,w3,

34、b3, F3,p,t,tp);函数trainbp在对BP网络进行训练时,实际上是针对单层、两层、三层网络分别采用了三个函数tbp1、tbp2、tbp3来训练网络。4.2仿真试验结果及分析为了验证BP神经网络具有预估能力,采用Matlab工具箱函数对BP网络模型进行仿真。本文没有选取生物化工方面的数据进行分析,而是构造一个数学函数:来进行分析。可把这个函数看作一个:两输入、一输出的数学模型。 Y0.0500.00250.080.050.00890.100.050.01250.120.100.02440.150.120.03250.180.150.05490.200.150.06250.220.2

35、00.08840.250.200.10250.280.250.14090.300.250.15250.320.300.19240.350.300.21250.380.350.26690.400.350.28250.420.400.33640.450.400.36250.480.450.43290.500.450.45250.520.500.52040.550.500.55250.600.550.66250.650.600.78250.700.650.9125 以上样本中,左边两列作为输入,右边一列作为输出,以116组数据作为训练样本,1724组数据作为教师样本。以下就是根据此试验样本所编写的M

36、atlab BP算法代码:clf;figure(gcf)echo onclct=0.0025 0.0089 0.0125 0.0244 0.0325 0.0549 0.0625 0.0884 0.1025 0.1409 0.1525 0.1924 0.2125 0.2669 0.2825 0.3364;p=0.05 0.08 0.10 0.12 0.15 0.18 0.20 0.22 0.25 0.28 0.30 0.32 0.35 0.38 0.40 0.42 0.00 0.05 0.05 0.10 0.12 0.15 0.15 0.20 0.20 0.25 0.25 0.30 0.30 0

37、.35 0.35 0.40;w1,b1,w2,b2=initff(p,3,tansig,1,purelin);disp_freq=10;max_epoch=8000;err_goal=0.02;lr=0.01tp=disp_freq max_epoch err_goal lr;w1,b1,w2,b2,epochs,tr=trainbp(w1,b1,tansig,w2,b2,purelin,p,t,tp);t=0.3625 0.4329 0.4525 0.5204 0.5525 0.6625 0.7825 0.9125;p= 0.45 0.48 0.50 0.52 0.55 0.60 0.65 0.70 0.40 0.45 0.45 0.50 0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论