当前位置:首页 > bp神经网络
  • 优化的BP神经网络在电子设备故障诊断中的应用

    近些年来,由于计算机技术、信号处理、人工智能、模式识别技术的发展,促进了故障诊断技术的不断发展,大型复杂电子设备的出现,使得人们更迫切地希望能提高整体可靠性与维修性,这就给故障诊断提出了更高的要求。因此,对故障诊断技术的研究有着重要的理论及现实意义。1 BP神经网络故障诊断模型一个神经网络用于故障诊断时,主要包括三层:输入层,即从设备对象接收各种故障信息和现象;中间层,是把从输入层得到的故障信息,经内部的学习和处理,转化为针对性的解决办法;输出层,是针对输入的故障形式,经过调整权值后得到的故障处理方法。对于一个新的输入状态信息,训练好的网络将由输出层给出故障识别结果。BP神经网络故障诊断模型如图1所示。2 BP神经网络的优化——共轭梯度法    虽然神经网络模型已成功应用于模式识别、函数逼近、时间序列预测等领域,但是由于BP学习算法仅改变网络的连接值和阈值,不改变网络的拓扑结构,因此BP网络在处理具体问题时还存在收敛速度慢,易陷入局部极小值等缺点。为了解决BP网络训练的缺点,人们提出了多种有益的改进方法。本文研究了共轭梯度法对BP神经网络进行优化设计,基本思想如下:传统的前向多层网络的BP学习算法实质上是无约束的最速下降法,改进的BP算法是对最速下降法作了一些约束;而共轭梯度法则是介于最速下降法和牛顿法之间的一种方法,它仅需要利用一阶导数信息,不仅克服了BP学习算法收敛慢的缺点,又避免了存储和计算牛顿法所需要的二阶导数信息。共轭梯度法的计算步骤和最速下降梯度法差别不大,主要差别在于搜索方向不同,即每一步的方向不是梯度的负方向,而是一种共轭的方向。由原来的负梯度方向加上一个修正项得到共轭方向,也就是使得最速下降法具有共轭性,从而提高算法的有效性和可靠性。共轭梯度法应用于神经网络中的目的是求误差函数E(W)的最小值。算法主要是利用共扼梯度方向来修正权值W,使W的确定更为快速,计算过程如下;    (1)初始化权值W1,令k=1;    (2)计算网络的负梯度矢量:    设p1=r1=-E’(W1),式中E’(W1)是根据BP算法求出的负梯度。(3)计算步长ak:式中:En(W1)为误差函数对权值矢量W的二次导数。(4)调整权值:(5)如果k除以样本数N的余数为零时,pk+1=rk+1,否则计算新的搜索方向:(6)如果梯度方向∣rk∣>ε,则置k=k+1,否则停止,Wk+1为所求权值矢量。3诊断实例现以一电子设备为诊断对象,验证优化的BP神经网络算法。样本数据从测试口测试获得,一共6个测试点,10个板卡故障。诊断步骤如下:(1)故障特征提取表1为实验测得的故障样本数据;表2为归一化后的数据,其激活函数采用S型函数f=1/(1+e-ax);表3为神经网络的目标输出模式,1表示有故障,0表示正常。(2)BP网络的训练取输入节点N1=6,输出节点N3=11,隐层节点采用,a取1~10,本实验中a取7(根据训练误差曲线调整而得),N2=15。学习率η=0.2,训练误差E<0.005,最大训练次数n=1 000。图2为BP网络的训练误差曲线。(3)BP网识别结果分析①用样本自身数据输入训练好的神经网络中,其识别结果见表4。与故障模式对比分析可知,自身数据检测正确率为100%。可见,该网络达到了训练的要求。②任取4组测试数据见表5,观察其识别结果。表6为归一化后的测试数据,表7为识别结果。与故障模式对比可知,第一组数据对应的故障是MA-1;第二组数据对应的故障是MB-2;第三组数据对应的故障是MD;第四组数据对应的故障是MG。由此可见,本网络不仅能识别样本本身的故障,而且能准确诊断样本以外的数据故障。4 结  语本次实验中的BP神经网络采用共轭梯度法进行优化设计,由实验数据可知,该网络能够准确诊断数据的故障状态,可见,该方法能够成功应用于设备的故障诊断中。故障诊断是一门实用性很强的技术,因此只有在实际应用中才能体现它的价值,目前在理论研究方面虽有不少进展,但真正在工程实践中成功应用的实例还较少,因此如何将先进的故障诊断理论与方法应用到实际中,还有待更深入的研究。

    时间:2010-03-23 关键词: 中的应用 电子设备 bp神经网络 故障诊断

  • 基于BP神经网络的模拟电路诊断系统研究

    摘要:以现代测试技术、信号处理、信息融合等理论为基础,以神经网络在模拟电路故障诊断中的应用为主线,详细讨论BP神经网络在模拟电路故障诊断中的应用和故障特征提取方法。采用多频组合法建立了故障样本集。对选定的待测电路在元件存在容差的条件下,仿真验证了BP神经网络应用于模拟电路故障诊断的可行性。关键词:故障诊断;模拟电路;BP神经网络;故障特征提取O 引 言    随着电子工业的发展,电子设备越来越复杂,其中的模拟器件和电路不可缺少。理论分析和实际应用表明,这些设备中的模拟电路比数字电路更容易发生故障。对这种设备的维护和保养十分复杂,需耗费大量的精力和财力。另外,随着超大规模模拟电路的发展和电子器件复杂性的提高,传统的人工故障诊断方法已经无法满足要求,这就迫使科技人员进一步探索新的测试理论和方法,研制新的测试设备以适应社会的需求。l BP网络简介1.1 BP网络模型    图1为一个三层前馈网络模型,由输入层、输出层和隐层3部分组成。根据需要,可以有多个隐层。每一层的每个神经元(结点)的输出经连接权值加权求和作为下一层每个神经元的输入,层与层之间没有反馈。1.2 BP网络用于故障诊断的基本思想    BP网络用于模拟电路故障诊断的基本思想为:确定了电路的待测状态集后,求电路处于其中一种状态时的响应(通常是测试点的电压)必要的预处理,作为对应状态类的一个特征。对状态集中的每一类状态,都按上述方法获取大量特征,并从中筛选出具有代表性的特征构造训练样本集。然后,用这些样本训练与所求问题相对应规模的BP网络。BP网络的输入节点数应与特征向量的维数相同。输出节点的维数等于待测故障状态的类别数。在训练时,把状态特征输入到BP网络的输入节点,要求网络的输出能正确指出电路状态所属类别。在做实际电路诊断时,对被测电路施加与产生样本时相同的激励和工作条件,取得相应特征,将此特征输入到已训练好的BP网络。由BP网络的输出判断电路中是否有故障;如有,则定位故障。    为了从最大程度上隔离和识别故障,采用多频测试的方法。这时,从哪些频率点提取故障特征成为首要问题,测试频率选择的好坏直接影响到对故障的分辨能力和诊断效果及样本选择。1.3 BP故障特征提取    提取故障特征是模拟电路故障诊断的关键,也是构造样本集的基础。    基于神经网络的模拟电路故障诊断系统,主要包括两个过程:学习(训练)过程,诊断(测试)过程。其中每个过程都包括数据预处理和特征提取2部分。整个故障诊断系统的过程如图2所示。    如何有效提取优质的模拟电路故障特征,是进行电路故障诊断和测试的难点所在。在设计模拟电路故障诊断系统时,能够快速、有效地提取反映电路的故障信息的特征是进行故障诊断的关键所在。    通常,从待测模拟电路响应的波形曲线获得原始数据。通过对原始数据进行采样,可将原始数据映射成样本空间的点。模拟电路故障诊断的过程是把症状空间的向量映射到故障空间,即实现故障特征空间X到分类(识别)空间y的映射F,F:X→Y。一般,首先要对映射到样本空间的输入数据进行预处理,通过删除数据中的无用信息得到一类故障模式,即由样本空间映射到数据空间。    在数据空间的基础上,通过特定的变换处理,提取数据中的不变特征,形成不变故障模式空间。在提取了故障模式的不变特征之后,根据诊断的需要和问题的特性,往往还需要对所选择的模式特征矢量进行量化压缩变换,在尽可能保持信息量基本不丢失的前提下,在降维空间内选择有用的特征,以利于高效实现模拟电路的故障诊断。并且由所获得的降维空间,提取原始样本集的特征信息以形成特征空间。一般的特征提取过程可用图3表示。1.4 BP网络的输入层、隐层和输出层节点个数的确定    这里设所选的测试节点数为m,测试频率数为l,则:    (1)BP网络的输入节点数为n1=ml;    (2)确定最佳隐节点数的一个常用方法被称为“试凑法”,可先设置较少的隐节点训练网络,然后逐步增加隐节点数,用同一样本集进行训练,从中确定网络误差最小时对应的隐节点数;    (3)将故障状态进行二进制编码,二进制码值最大的那个数据的位数m就是输出层神经元节点的个数。1.5 多频组合法    多频测试是用不同频率(测试频率点集)的正弦信号激励待测电路,通过观测预先选定测试节点的输出信号幅值,亦即故障电路与正常电路、不同故障电路之间的输出幅值差异,实现模拟电路的故障诊断。多频测试矢量即为测试频率点的集合。    对给定的可及点,测试频率的选取原理仍按电路的对数幅频特性来划分特征空间。    频率选取原则:如果某些幅频特性曲线在一个频率点上密集,落入同一模糊集,则应在这些特性曲线较为分散的频率上选择其他测试频率。1.6 仿真实例1.6.1 待测电路    待测电路如图4所示。1.6.2 故障类别假定    以图4中容差为±5%的电阻R1=10 kΩ为例,阐明故障诊断的思路。    (1)当电阻在R1∈[9.5,10.5]时,电阻是正常的容差变化范围;    (2)当电阻R1<9.5 kΩ时,发生软故障,用↓表示这种减小情况,其极限情况为R1=O此时转化为硬故障,即短路故障。    (3)当电阻R1>10.5 kΩ时,发生软故障,用↑表示这种增大情况,极限情况为R1=∞,此时转化为硬故障,即开路故障。    由此可见软故障是一个连续变化的值,要实现其故障诊断非常复杂,目前,国际上对软故障诊断比较热衷,但通常都是对某一定点的软故障进行诊断,如↓情况,R1=5 kΩ,或者↑情况,R1=15kΩ。1.6.3 故障特征提取    考虑到当电路发生故障时,各测试点电压会有所变化,这种变化表征了此故障的特征。基于这一想法,利用各元件故障时在各测试点上施加不同频率的正弦信号产生的电压作为原始数据。    对图4电路,在电路输入端施加3 V的正弦激励,测试频率分别取10 kHz,16 kHz,20 kHz,32 kHz,取Vc为测试点。从测试点提取输出波形的电压值,作为故障特征信息。将一个测试点4个频率的故障信息进行融合,形成对应故障模式的4维故障特征向量:X=[x1,x2,…,x4]T其中xi为第i个测试频率下获得的测量值。1.6.4 样本集构造    为了验证测试向量对故障元件的实际诊断效果,在电路输入端施加3 V的正弦激励,测试频率分别取10 kHz,16 kHz,20 kHz,32 kHz(被测电路截止频率是15.9 kHz,四种频率优选是应用Multisim2001进行灵敏度分析得到的),取Vc为测试点,各待测元件的故障值:Ri(i=1,2,…,6)为±50%;Cj(j=1,2)为±50%。将故障分为两类:共计有19种故障模式(设定实验电路存在故障)。故障模式用二进制编码法来表征,如:00001表示R1↓故障,00010表示R1↑故障。利用PSpice 4.02程序对电路在标称值及各元件在故障情况下进行仿真。所得数据见表1(这里只列出1组部分代表性数据)。    为了加快神经网络的收敛速度,需要对数据进行尺度变化,这里采用均方根方法对数据预处理。    从图4可以看到,电路中共有9个元件,所以其软故障加正常状态共有19种。使用蒙特卡罗分析,电阻在5%的容差下和电容在10%的容差下,对每一个故障模式进行100次Monte—Carlo分析,其中70次为训练样本,构成训练样本集;30次为测试样本,构成测试样本集。对其进行预处理,所得数据见表1,这里仅列出其中1组部分数据。2 诊断结果    应用BP神经网络对实验电路进行故障诊断,整个设计与训练过程在Matlab 6.5仿真环境下进行。    将训练样本集序列输入神经网络,均方误差设定为0.02,经多次调整网络结构选为4一11—5,学习速度为0.3,动量因子0.3,网络经过179 163次训练调整后达到期望的均方误差。误差变化曲线图如图5所示。    为检验经过训练的神经网络的故障诊断能力,分别使用训练样本集和测试样本集对网络进行训练和测试,对应测试样本的神经网络的输出如表l所示。    对被测电路采用蒙特卡罗分析得到100组数据,其中70组数据作为训练样本集,30组数据作为测试样本集。从表1可知,其测试结果正确率达100%。故障诊断正确率较高。证明所选择的测试矢量对电路故障诊断是行之有效。3 结 语    讨论了BP神经网络在模拟电路故障诊断中的应用和故障特征提取方法;采用多频组合法建立了故障样本集;并且在Matlab下仿真验证了结果的可行性。

    时间:2009-04-28 关键词: 模拟电路 bp神经网络 诊断系统

  • LabVIEW中BP神经网络的实现及应用

    0 引 言    LabVIEW是美国NI公司开发的高效图形化虚拟仪器开发平台,它的图形化编程具有直观、简便、快速、易于开发和维护等优点,在虚拟仪器设计和测控系统开发等相关领域得到了日益广泛的应用,它无需任何文本程序代码,而是把复杂、繁琐的语言编程简化成图形,用线条把各种图形连接起来。BP神经网络属于前馈神经网络,它广泛应用函数逼近、模式识别、分类和数据压缩等领域,若将神经网络与虚拟仪器有机结合,则可以为提高虚拟仪器测控系统的性能提供重要的依据。1 BP神经网络学习算法    BP模型是一种应用最广泛的多层前向拓扑结构,以三层BP神经网络作为理论依据进行编程,它由输入层、隐层和输出层构成。设输入层神经元个数为I,隐层神经元个数为J,输出层神经元个数为K,学习样本有N个(x,Y,)向量,表示为:输入向量X{x1,x2,…,xI},输出向量l,{Y1,Y2,…,Yx),理想输出向量为T{tl,t2,…,tK}。    (1)输入层节点i,其输出等于xi(i=1,2,…,I,将控制变量值传输到隐含层,则隐层第j个神经元的输入:        其中:Wji是隐层第J个神经元到输入层第i个神经元的连接权值。    (2)隐层第J个神经元的输出:        (3)神经网络输出层,第k个神经元的输入为:        其中:Vkj是输出层第k个神经元到隐层第j个神经元的连接权值。    (4)神经网络输出层,第志个神经元的输出为:        (5)设定网络误差函数E:    (6)输出层到隐层的连接权值调整量△Vkj:        (7)隐层到输入层的连接权值调整量wji:    2 用LabVlEW实现BP神经网络的两种方法    用LabVIEw实现BP神经网络的两种方法为:    (1)由于Matlab具有强大的数学运算能力以及在测控领域的广泛应用。在LabVIEW中提供了MatlabScript节点,用户可在节点中编辑Matlab程序,并在Lab—VIEW中运行;也可以在LabVIEW程序运行时直接调用已经存在的Matlab程序,如使用节点则必须在系统中安装:Matlab5以上版本,在写入Matlab节点前要将程序先调试通过,并确保其中变量的数据类型匹配。    (2)由于LabVIEW的图形程序是独立于运行平台的,而且是一种数据驱动的语言,可以方便地实现算法且易修改,结合其SubVI技术可以增加程序的利用率,因此可以采用图形编程的方法实现前向网络的算法。2.1 利用Matlab Scriipt节点实现    在此以对一个非线性函数的逼近作为例子来说明实现流程,其中输入矢量p=[一1:O.05:1];目标矢量f—sin(2。pi*p)+0.1randn(size(p))。利用.Mat—lab Script节点实现BP算法的过程如下:    (1)新建一个LabVIEw vi,在框图程序中添加Matlab Script节点。    (2)在节点内添加Matlab的动量BP算法实现代码,并分别在节点左右边框分别添加对应的输入/输出参数,如图1所示。    (3)在vi的前面板添加相应的控件,设置输入参数,连接输出控件。执行程序,结果如图2、图3所示。    此方法能够直接利用Matlab强大的神经网络工具箱,程序运行时会自动调用系统中已安装的Matlab进行计算,不用进行复杂的编程,开发效率很高。2.2 利用图形编程实现    LabVIEw是美国NI公司推出的基于图形化编程的虚拟仪器软件开发工具,它无需任何文本程序代码,而是把复杂、繁琐的语言编程简化成图形,用线条把各种图形连接起来。在此以一个设备状态分类器设计作为例子来说明实现流程输入,该设备有8个输入分量,即温度、湿度等外部条件;而输出状态则有3种,分别为正常、偏小、偏大。这里采用12个训练样本,每个样本有8个分量,3类输出分别编码为(O 1),(1 0),(1 1),以下即为输入样本及标准输出数据(见图4、图5)。    BP神经网络隐层输入在LabVIEw中的实现。根据BP学习算法中式(1)编写相应的程序。其中x为输入样本;w为隐层输入权值,主要应用LabVIEw中的函数一数学一线性代数一矩阵A×B实现权值与输入样本的矩阵相乘,并通过For循环计算得到BP神经网络的隐层输人H(见图6)。    (2)BP神经网络隐层输出H的图形化程序。根据算法中的式(2)编写,由于在很多测试实践中参数间的关系是非线性的,这里主要应用Sigmoid型tansig函数作为隐层的传递函数,主要应用程序面板中函数一数学一数值及基本与特殊函数等数学控件实现(见图7)。    (3)BP神经网络输出层的输入及输出程序框图与隐层的类似,分别根据式(3)、式(4)编程即可实现,在此不再重复。    (4)网络误差函数E的图形化程序。根据算法中式(5)编写程序,其中:t为理想输出,y为网络输出。其中应用函数一数学一基本与特殊函数中的指数函数控件来实现(见图8)。    (5)BP神经网络各参数调整量的图形化程序根据上述学习算法中的式(6)和式(7),其中:x为网络输入样本;y,£分别为网络实际输出和期望输出;h为隐层输出;v为隐层输出权值。通过调用LabVIEw软件中数学计算控件,经过一系列数学计算,分别得到网络隐层输出权值调整量△v以及隐层输入权值调整量△w,如图9、图10所示。    (6)完整的学习算法的图形化程序。将以上各个程序模块综合在一起,可以得到完整的学习算法实现程序,如图11所示。    通过设定网络的输入样本z、输出期望t、隐层输入权值w,输出v的初始值,经过一系列的矩阵运算,获得调整后隐层权值w,v参数值。运行结果如图12所示,由图可以非常直观看出,网络输出与网络理想输出相当接近,说明网络训练的结果是满意的。3 结 语    在利用LabVIEw实现BP神经网络的计算,方法一通过直接调用Matlab程序,简单易行,只是事先需要装有Matlab5.O以上的版本。方法二运用图形化编程对BP神经网络进行仿真,具有形象、直观、便于使用和理解的优于传统文本编程语言的特点。

    时间:2009-07-14 关键词: LabVIEW bp神经网络

  • 模拟电路故障诊断的BP神经网络方法研究

    摘要:BP网络是模拟电路故障诊断中应用十分广泛的一种神经网络。针对传统BP算法的误差下降缓慢,调整时间长,甚至容易陷入局部极小点而不能自拔等局限性,提出用弹性算法与BP网络相结合的方法,并结合某型雷达装备的具体电路,运用该方法建模、仿真。实验结果表明,采用弹性算法结合后的BP网络误差收敛稳定,训练速度快,在克服传统BP算法的局限性上效果显著,为新型雷达装备的故障诊断和维修提供了一种方法,具有特定的实用意义。 关键词:BP神经网络;弹性算法;模拟电路;故障诊断     随着现代电子技术的飞速发展,大规模、超大规模集成电路越来越普及,常规的故障诊断方法如故障字典法、参数识别法、故障验证法等由于其局限性已不再适用。模拟电路的可靠性直接制约着整个电子设备或系统的可靠性,是一个系统能不能正常运行的关键。近年来,神经网络发展迅速,在各领域广泛应用。神经网络具有非线性信息处理能力,其强大的学习能力和并行处理能力为故障诊断提供了全新的理论方法和实现手段。其中BP神经网络由于具有良好的模式分类能力,尤其适用于故障诊断领域,因此对BP网络的研究有着重要的理论及现实意义。 1 神经网络故障诊断的系统设计     应用BP神经网络进行模拟电路故障诊断的方法一般是:在一定的测试激励下,将电路常见的各种故障状态及正常状态所对应的参数通过PSpice求出,进行数据预处理后作为BP网络的输入样本,对网络进行训练,然后在相同的激励下,检测电路实际输出,作为待诊断样本集提供给BP网络,网络输出即为对应的故障模式。系统设计框图如图1所示。 2 BP网络的传统算法     BP网络,即误差反传网络,是在1986年由Rumelhart和McCelland提出的,它是一种无反馈的前向网络,包括输入层、输出层和隐层。理论证明:具有单隐层结构的前馈网络可以映射任意连续函数,最常用的BP神经网络的结构是3层结构,即输入层、输出层和一个隐层。     误差反向传播过程就是通过使一个目标函数。最小化来完成的,BP网络的传统算法则是根据梯度下降法来调整权重系数的。     tk为输出层第忌个神经元的期望输出;Qk为实际输出;Oj为隐层第j个神经元的输出;Qi为输入层第i个神经元的输出。通过多次迭代后误差达到给定的标准,网络收敛到一组稳定的权值,即训练完成。但是这种标准的BP算法有局限性,由于是根据梯度下降法调整权值,若权值的改变量过大,虽然能够加快网络的训练过程,但结果可能会产生振荡;另外一种可能就是权值的改变量过小,因为S型函数具有饱和性,当输入较大时,Oj,Ok将处于0或1的饱和区,权值的改变将趋于0,但此时目标函数的值还很大,误差对权值的变化很不明显,误差下降缓慢,调整时间长,甚至陷入局部极小点而不能自拔,影响收敛速度,使训练难以收敛于给定误差。 3 传统BP算法的改进     基于上述传统BP算法的局限性,提出将弹性算法与BP神经网络相结合的方法,弹性算法只取偏导数的符号,而不考虑幅值,权值的更新方向是由偏导数的符号来决定的。若在两次连续的迭代中,目标函数对某个权值的偏导数的符号保持不变,则增大相应的更新值,若变号,则减小相应的更新值,其过程可表示为:     当目标函数与某个权值偏导数的符号与上一次不同时,则表明最近一次权值的更新值太大,算法已跳出一个局部最小值。通过这种方法调整权值参数,可以使变化步长在需要的时候增加,甚至在误差平面趋于平坦的时候也能增加。误差梯度一旦发生变化,相应的调整步长会减小,有效地防止了振荡。克服了BP网络误差下降缓慢,调整时间长,甚至容易陷入局部极小点等局限性,通过弹性算法与BP网络的结合来实现模拟电路的故障诊断。 4 实例分析     现以图2所示的某型雷达设备中的射频放大电路为例,选取5个测试点(out1~out5)的电压作为BP网络的输入信号,本文只考虑电阻和电容的硬故障,选择4种故障类型进行分析诊断,加上正常状态一共5种类型。输出状态使用n-1表示法,0为正常,1为故障。表1为测试数据。对故障样本数据进行归一化,将数据线性变换到0.1~0.9之间,即,xi为原始数据;xmax,xmini分别为变量的最大值和最小值,归一化处理后的数据如表2所示。     对于BP网络,在闭区间内的任意一个连续函数都可以用单隐层的BP网络逼近,即一个3层的BP网络可以完成任意m维到n维的映射。由于有5个测试点,所以BP网络的输入层为5个神经元,以归一化之后的数据作为BP网络的输入样本,输出层为4个神经元。隐层神经元数目的选择是一个十分复杂的问题,往往需要根据经验或者多次的实验来判定,因而不存在一个确切的表达式来确定。它的数目与问题的要求、输入/输出单元的数目都有着直接关系。隐层单元数目太多会导致学习时间过长、误差不一定最佳,也会导致容错性差、不能识别以前没有看到的样本,因此一定存在一个最佳的隐单元数。此处参照美国科学家Hebb提出的以下经验公式选取:。其中:n为输入单元数;m为输出单元数;a为[1,10]之间的常数。按照上式,,即h的取值为4~13。通过Matlab创建一个BP神经网络,设定训练次数为5 000,训练目标net.trainParam.goal=0.01,改变隐层单元的数目,当隐层单元数不同时,达到目标所用的训练次数,如表3所示。     根据表3,当隐层单元数为11时,训练次数最少,这样神经网络的结构就确定了,输入层5个节点,隐层11个节点,输出层4个节点,训练最大次数设定为5 000,训练误差为0.01,先采用传统算法训练网络,再采用弹性算法与BP网络结合的改进算法,网络训练误差曲线如图3、图4所示。           弹性算法不仅加快了收敛速度,防止了震荡,还避免了陷入局部极小值,从图3和图4可以看出,通过弹性算法与BP网络相结合以后,训练次数由原来的769次减少到11次,大大提高了神经网络的训练效率。用样本自身数据输入训练好的神经网络中,识别结果见表4。与故障模式对比分析可知,自身检测结果已经达到要求,即该网络已经训练好。下面检测网络的泛化能力,任取2组测试数据并进行归一化处理,结果如表5所示。     将归一化的数据作为神经网络的输入,得到测试数据的识别结果,如表6所示。     与故障模式对比可知,第一组对应的故障是R2短路,第二组对应的故障是R1开路。由此可以看出,训练好的网络不仅可以识别样本自身故障,而且还具有一定的泛化能力,经过弹性算法与BP网络的结合,取得了良好的效果,达到了预期的目标。 5 结语     本文针对传统BP算法误差下降缓慢,调整时间长,甚至陷入局部极小点而不能自拔等局限性,运用弹性算法与BP网络相结合的方法,结合某型雷达设备中的射频放大电路进行建模、仿真,用Matlab设计并用改进后的算法训练BP神经网络,仿真结果证明该方法对克服传统BP算法的局限性有显著效果,缩短了网络的训练次数,提高了训练效率,且诊断结果良好,为新型雷达装备的故障诊断提供了一种有效的方法,在对装备故障诊断维修上具有一定的实用意义。

    时间:2011-08-17 关键词: 模拟电路 方法研究 bp神经网络 故障诊断

  • BP神经网络图像压缩算法乘累加单元的FPGA设计

    0 引 言    神经网络(Neural Networks)是人工神经网络(Ar-tificial Neural Networks)的简称,是当前的研究热点之一。人脑在接受视觉感官传来的大量图像信息后,能迅速做出反应,并能在脑海中重现这些图像信息,这不仅与人脑的海量信息存储能力有关,还与人脑的信息处理能力,包括数据压缩能力有关。在各种神经网络中,多层前馈神经网络具有很强的信息处理能力,由于其采用BP算法,因此也称为BP神经网络。采用BP神经网络模型能完成图像数据的压缩处理。在图像压缩中,神经网络的处理优势在于:巨量并行性;信息处理和存储单元结合在一起;自组织自学习功能。    与传统的数字信号处理器DSP(Digital Signal Processor)相比,现场可编程门阵列(Field Programma-ble Gate Array,FPGA)在神经网络的实现上更具优势。DSP处理器在处理时采用指令顺序执行的方式,而且其数据位宽是固定的,因而资源的利用率不高,限制了处理器的数据吞吐量,还需要较大的存储空间。FPGA处理数据的方式是基于硬件的并行处理方式,即一个时钟周期内可并行完成多次运算,特别适合于神经网络的并行特点,而且它还可以根据设计要求配置硬件结构,例如根据实际需要,可灵活设计数据的位宽等。随着数字集成电路技术的飞速发展,FPGA芯片的处理能力得到了极大的提升,已经完全可以承担神经网络数据压缩处理的运算量和数据吞吐量。图像压缩是信息传输和存储系统的关键技术,然而如何进行FPGA设计,以实现给定的功能已经成为神经网络应用的关键。    基于以上原因,选择FPGA作为三层BP神经网络图像压缩算法的实现方式,提出了具体的一种实现方案,并对其中的重点单元进行了FPGA设计与仿真验证。1 BP神经网络图像压缩算法    一般习惯将单隐层前馈网称为三层前馈网,它包括输入层、隐含层和输出层。三层BP神经网络结构如图1所示,原始数据节点和重建数据节点构成节点数较大的外层(输入层和输出层),而中间的具有较小节点数的细腰层即构成压缩结果。其基本思想是强迫原始数据通过细腰型网络瓶颈,并期望在网络的瓶颈处能获得较为紧凑的数据表示,以达到压缩的目的。在网络的学习过程中,通过BP训练算法,调整网络的权重,使重建图像在均方误差意义上尽可能近似于训练图像。经过训练的网络即可用来执行数据压缩任务,网络输入层与隐含层之间的加权值相当于一个编码器,隐含层与输出层之间的加权相当于一个解码器。从输入端输入的原始图像数据经过神经网络的处理,在隐含层得到的输出数据就是原始图像的压缩编码,而输出层矢量即为解压后重建的图像数据。    BP神经网络用于图像编码的压缩比与输入层和隐含层的节点数有关:    压缩比一输入层节点数(n)/隐含层节点数(m)    因此一般来说采用不同数目的隐含层神经元就可实现同一图像的不同压缩比。    三层BP前馈网中输入向量X=x(x1,x2,…,xi,…,xn)T,隐含层输出向量Y=y(y1,y2,…,yi,…,ym)T,输出层输出向量O=O(O1,O2,…,Ok,…,Ol)T,期望输出向量d=d(d1,d2,…,dk,…,dl)T,输入层到隐含层的权值向量V=v(v1,v2,…,vj,…,vm)T,其中vj为隐含层第j个神经元对应的权值向量;隐含层到输出层的权值向量W=W(w1,w2,…,wk,…wl)T,其中wk为输出层第k个神经元对应的权值向量;隐含层的阈值向量θ=(θ1,θ2,…,θi,…,θm)T;输出层的阈值向量γ=(γ1,γ2,…,γk,…,γl)T。    (1)用小的随机数对每一层的权值和偏差初始化,以保证网络不被大的加权输入饱和,并进行以下参数的设定或初始化:期望误差最小值;最大循环次数;修正权值的学习速率;    (2)将原始图像分为4×4或8×8大小的块,选取其中一块的像素值作为训练样本接入到输入层,计算各层输出:        其中:f(·)为BP网络中各层的传输函数。    (3)计算网络输出与期望输出之间的误差,判断是否小于期望误差,是则训练结束,否则至下一步,其中反传误差的计算式为:        (4)计算各层误差反传信号;    (5)调整各层权值和阈值;    (6)检查是否对所有样本完成一次训练,是则返回步骤(2),否则至步骤(7);    (7)检查网络是否达到最大循环次数,是则训练结束,否则返回步骤(2)。    经过多次训练,最后找出最好的一组权值和阈值,组成三层前馈神经网络,用于该算法的FPGA设计。    其中,在数据预处理部分,首先将原始图像分成n×n的小块,以每一小块为单位进行归一化。归一化的目的,主要有以下两点:    (1)BP网络的神经元均采用Sigmoid转移函数,变换后可防止因净输入的绝对值过大而使神经元输出饱和,继而使权值调整进入误差曲面的平坦区;    (2)Sigmoid转移函数的输出在-1~+1之间,作为信号的输出数据如不进行变换处理,势必使数值大的输出分量绝对误差大,数值小的输出分量绝对误差小。网络训练时只针对输出的总误差调整权值,其结果是在总误差中占份额小的输出分量相对误差较大,对输出量进行尺度变化后这个问题可迎刃而解。    归一化后得到以每小块的灰度值为列向量组成的待压缩矩阵,将该矩阵存储在RAM里,然后以每一列为单位发送给先人先出寄存器FIFO(First Input FirstOutput);由FIFO将向量x1,x2,…,xn以流水(pipe-line)方式依次传人各乘累加器MAC(Multiply-Accu-mulate),相乘累加求和后,送入LUT(Lookup Table)得到隐层相应的节点值,这里LUT是实现Sigmoid函数及其导函数的映射。    在整个电路的设计中,采用IP(Intellectual Prop-erty)核及VHDL代码相结合的设计方法,可重载IP软核,具有通用性好,便于移植等优点,但很多是收费的,比如说一个高性能流水线设计的MAC软核,所以基于成本考虑,使用VHDL语言完成MAC模块的设计,而RAM和FIFO模块则采用免费的可重载IP软核,使整个系统的设计达到最佳性价比。在压缩算法的实现中,乘累加单元是共同部分,也是编码和译码器FPGA实现的关键。2.2 乘累加器MAC的流水线设计及其仿真    流水线设计是指将组合逻辑延时路径系统地分割,并在各个部分(分级)之间插人寄存器暂存中间数据的方法。流水线缩短了在一个时钟周期内信号通过的组合逻辑电路延时路径长度,从而提高时钟频率。对于同步电路,其速度指同步电路时钟的频率。同步时钟愈快,电路处理数据的时间间隔越短,电路在单位时间内处理的数据量就愈大,即电路的吞吐量就越大。理论而言,采用流水线技术能够提高同步电路的运行速度。MAC电路是实现BP神经网络的重要组成部分,在许多数字信号处理领域也有着广泛应用,比如数字解调器、数字滤波器和均衡器,所以如何提高MAC的效率和运算速度具有极高的使用价值。本方案采用的MAC设计以四输入为例。    四输入的MAC电路必须执行四次乘法操作和两次加法操作,以及最后的两次累加操作。如果按照非流水线设计,完成一次对输入的处理,需要这三步延迟时间的总和,这会降低一个高性能系统的效率。而采用流水线设计,则可以避免这种延迟,将MAC的操作安排的像一条装配线一样,也就是说,通过这种设计它可以使系统执行的时钟周期减小到流水线中最慢步骤所需的操作时间,而不是各步骤延迟时间之和,如图3所示。    在第一个时钟边沿,第一对数据被存储在输入寄存器中。在第一个时钟周期,乘法器对第一对数据进行乘法运算,同时系统为下一对数据的输入作准备。在第二个时钟边沿,第一对数据的积存储在第一个流水线寄存器,且第二对数据已经进入输入寄存器。在第二个时钟周期,完成对第一对数据积的两次加法操作,而乘法器完成第二对数据的积运算,同时准备接收第三队数据。在第三个时钟边沿,这些数据分别存放在第二个流水线寄存器,第一个流水线寄存器,以及输入寄存器中。在第三个时钟周期,完成对第一对数据和之前数据的累加求和,对第二对数据的两次加法操作,对第一对数据的乘法运算,并准备接收第四对数据。在第四个始终边沿,累加器中的和将被更新。    在本设计方案中,测试仿真平台选用的FPGA芯片为ALTERA公司CycloneⅡ系列的EP2C8芯片,它采用90 nm的制造工艺,拥有8 256个逻辑单元,36个M4K随机只读存储器,2个数字锁相环,以及18个硬乘法器等丰富资源。仿真工具使用业界流行的MentorGraphics公司的仿真软件Modelsim 6.1f。对设计进行验证时,常见的方法是在模拟时施加输入激励信号,然后“读”该设计的输出信号,它的主要缺点是随着模拟器的不同而不同。为了克服此缺点,采用的测试方法是用VHDL编写一个测试模型发生器,称为Testbench,它的优点是通用性好,灵活性强,可以随时更改输入激励,已得到不同的仿真结果。在对该MAC模块进行测试的过程中,涉及输入数据的转化问题,如前所述,在本神经网络中,输入数据归一化后,集中在-1~+1之间,所以处理时必须进行转化,最后采用16位补码形式的定点二进制表示法,由于在求和中可能会产生溢出,还必须包含一个溢l出状态信号。输入数据转换16位补码的仿真波形如图4所示。    16位补码转换原输入实数的仿真波形如图5所示。    在完成了对输入、输出数据的转换之后,编写Testbench(测试台)程序,对基于流水线设计的四输入MAC进行行为级仿真,仿真波形如图6所示。    综上所述,在基于流水线的乘法设计中,虽然每一步操作后都加入了寄存器,消耗了更多的资源,但却可以将系统延时降低到最慢步骤所需要的时间,极大地提高了同步电路的运算速度。3 结 语    介绍了基于三层前馈BP神经网络的图像压缩算法,提出了基于FPGA的实现验证方案,详细讨论了实现该压缩网络组成的重要模块MAC电路的流水线设计。在对BP神经网络的电路设计中,对传输函数及其导函数的线性逼近也是近来研究的热点之一,本文使用的压缩查找表虽然能够满足设计要求,但仍然消耗了大量资源。该研究结果对整个压缩解压缩算法的实现以及多层神经网络的相关研究工作提供了参考。

    时间:2009-11-12 关键词: FPGA 算法 bp神经网络 图像压缩

  • BP神经网络的电路最优测试集的生成设计

    1 引言   人工神经网络是基于模仿生物大脑的结构和功能而构成的一种信息处理系统。国际著名 的神经网络专家Hecht Nielsen 给神经网络的定义是:“神经网络是一个以有向图为拓扑结构的动态系统,它通过对连续或断续式的输入作状态响应而进行信息处理”。神经网络系统[1,2] 是由大量的、同时也是很简单的处理单元(或称神经元),通过广泛地互相连接而形成的复杂网络系统。神经网络具有的超高维性、强非线性等动力学特性,使其具有原则上容错、结构拓扑鲁棒、联想、推测、记忆、自适应、自学习、并行和处理复杂模式等功能,带来了提 供更佳诊断性能的潜在可能性。  目前神经网络应用在模拟电路上主要是神经网络故障字典法。把模拟电路的故障诊断看成是一个分类问题,利用神经网络的分类功能来诊断故障。在测前把神经网络训练成一部故障字典,字典的信息蕴含在网络的连接权值中,只要输入电路的测量特征,就可以从其输出 查出故障。目前用于模拟电路故障诊断的神经网络主要有BP 神经网络和SOM 神经网络两 种类型。BP 是一种多层网络误差反向传播网络,SOM 神经网络一种自组织特征映射神经网络(Self-organizing Feature Map)。本文采用标准BP 神经网络来实现对最优测试集的生成。  2 基于神经网络的最优测试集的生成实现设计  BP 神经网络对最优测试集的生成事先没有标准的样本,只有设定的约束条件,对目标 问题的求解是一个反复比较选择、自我建立并不断更新其样本库的过程。  (1)神经元激活函数  激活函数又称传递函数。对于模拟电路故障诊断,神经元激活函数可以采用对称的 sigmoid 函数y(x)=1/(1+e-x)-0.5,也可以采用非对称的sigmoid 函数y(x)=1/(1+e-x)。  (2)输入层  输入层从电路拓扑结构接受各种状态信息提取。神经网络的输入节点数应与输入特征的 维数相同,输入节点与电路的节点数一一对应。  (3)输出层  输出层输出诊断结果。输出结点数与预期节点选择数目相同,每个输出结点与目标一一对应。当神经网络用于选择时,若所有输出结点的输出值均非空,则认为本次生成最多数目 的节点;若有几个输出结点的输出值为0,则认为生成了较少的测试节点。  (4)隐层数  BP 网络的输入结点数和输出结点数是由实际问题本身决定的。隐层用于对信息进行处理和转化。网络结构设计的难点和重点在于隐层结构的设计,具体是指隐层数目和各隐层的神经元数目。确定隐层的结构很大程度上决定着网络质量。隐层用于对信息进行处理和转化。 隐层的层数取决于问题的特点。Funahashi 证明了对于任何在闭区间内的一个连续函数都可 以用单隐层BP 网络逼近,因而一个三层BP 网络可以完成任意的n 维到m 维的映射,说明了单隐层的可行性[4],但并不确定是最合理的。本文采用最常用的单隐层BP 网络构造神经 网络。  (5)隐结点数  隐层结点数的选择非常重要,隐节点数与问题的复杂程度有关,不存在一个理想的解析 式。隐结点的数目与问题的要求、输入、输出数目有关。隐结点数目太多会导致学习时间过 长,误差不一定最佳,数目太少则可能会使网络训练不出来,网络的学习和联想能力降低。  除了一些参考选择公式外,还可以先放入足够多的隐结点,通过学习将作用甚微的隐结点逐 步剔除直到不可收缩为止;或者反向添加至合理数目为止。 神经网络故障诊断系统的训练方法如下:  (1)权初值确定  系统是非线性的,不合适的权初始值会使学习过程陷入局部最优,甚至不收敛。权一般取随机数,而且权值要小,这样可使初始权要在输入累加时使每个神经元的状态值尽可能接近于零,保证每个神经元都在它们的传输函数导数最大的地方进行,这样就不至于一开始就落在误差平坦区上。本文的神经网络故障诊断系统中,网络初始值均取在闭区间[-0.1,0.1] 内均匀分布的随机数。  (2)样本输入方式  批处理方式存在局部最优,在线输入方式容易引起权值调节的振荡现象。避免振荡往往 根据样本集的特点进行多次尝试,局部最优可以通过修改网络输出误差来缓解。本文样本输 入采用批处理方式。  (3)误差函数的选择 神经网络训练容易出现局部最优,因此本文设计网络不要求输出误差很小,通过适当增 加训练时间来提高准确度。  3 BP 网络在最优测试集上的应用  (1)分析电路,构造网络结构 对电路中的各节点支路进行分析,建立改进的关联矩阵。取得用于选择的测试向量。根 据测试向量维数和目标要求数来选择网络各层的结点数。(2)输入特征向量抽取 取电路节点对支路的关联信息作为神经网络的输入特征。由于各节点的关联信息相差可 能会比较大,神经网络输入特征的各分量量限也不同。     其中xi 是输入特征的第i 个分量,vi 是同类关联信息的平均值,这样使输入特征的各分 量量限基本相同,而且仍然可以表征原输入特征。  (3)输出特征值设定  输出特征维数取决于输出的表示方法和要识别或分类的数目,当电路有M 个待监测节 点时,电路状态有M 类,本文把无节点输出做为输出节点坐标为0,输出特征维数选择为M, 输出特征分量与输出节点一一对应。  (4)训练样本集的选择  同故障字典的样本集选择不同,最优测试集的训练样本一开始时不存在的,是在制定的 约束条件下,不断反复运算的动态过程,是一个自我学习更新的过程。因此本网络将样本集 训练融合到网络的学习过程中。  4 仿真结果  本文所选择的目标电路模型为实际某设备的使用组件。电路板属于较为典型的模拟电路 板,电路板的原理图如图1。  对电路板进行仿真试验,得到结果如表1,其指标衡量如表2。  运用神经网络方法得到的种群中的个体元素仍比较分散,说明神经网络在自主学习训练 下要将当前的最优解解出的能力相对较弱一些,表1 中给出的结果是应用神经网络多次运算 得到的出现频率较高的解。  在设定生成较少的测设点数量时,应用神经网络能够解出点集,但各项指标与使用进化 规划算法的解相比相对较差,整体效果类似于陷入“早熟”。在设定生成较多的测试点数量时,应用神经网络来对目标点集的查找解算较为困难,对目标求解的明晰性不强,目标集(样本集)内的元素不趋同,求解精度不高。  应用传统的 BP 神经网络解决TSP 或集覆盖等问题时,可行解获得的效率低,网络较难 收敛到可行解。随着问题的复杂化,传统的BP 神经网络方法搜索到严格最优解或近似最优 解的困难加大,容易陷入局部最优。求解速度较慢,网络特性相对不够稳定。  5 结论  本文应用神经网络对模拟电路最优测试集生成上进行了初步实现。仿真结果说明当电路结构变得复杂以后,神经网络的训练和识别所需要的时间都比较长,运算时间大大增加,甚至在限定的最大时间内出现求不出参考解的情况。目前,应用进化规划算法进行最优测试集的生成对复杂电路结构求解问题上显示出其优越性,在设定的时间内求解精度高,在设定的 精度下运算时间短。  本文作者创新点:在复杂电路结构的求解问题上,应用进化规划算法进行最优测试集的 生成,在设定的时间内求解精度高,在设定的精度下运算时间短。

    时间:2010-02-03 关键词: 测试 电路 bp神经网络

  • BP神经网络的电路最优测试集的生成设计

    1 引言   人工神经网络是基于模仿生物大脑的结构和功能而构成的一种信息处理系统。国际著名 的神经网络专家Hecht Nielsen 给神经网络的定义是:“神经网络是一个以有向图为拓扑结构的动态系统,它通过对连续或断续式的输入作状态响应而进行信息处理”。神经网络系统[1,2] 是由大量的、同时也是很简单的处理单元(或称神经元),通过广泛地互相连接而形成的复杂网络系统。神经网络具有的超高维性、强非线性等动力学特性,使其具有原则上容错、结构拓扑鲁棒、联想、推测、记忆、自适应、自学习、并行和处理复杂模式等功能,带来了提 供更佳诊断性能的潜在可能性。   目前神经网络应用在模拟电路上主要是神经网络故障字典法。把模拟电路的故障诊断看成是一个分类问题,利用神经网络的分类功能来诊断故障。在测前把神经网络训练成一部故障字典,字典的信息蕴含在网络的连接权值中,只要输入电路的测量特征,就可以从其输出 查出故障。目前用于模拟电路故障诊断的神经网络主要有BP 神经网络和SOM 神经网络两 种类型。BP 是一种多层网络误差反向传播网络,SOM 神经网络一种自组织特征映射神经网络(Self-organizing Feature Map)。本文采用标准BP 神经网络来实现对最优测试集的生成。   2 基于神经网络的最优测试集的生成实现设计   BP 神经网络对最优测试集的生成事先没有标准的样本,只有设定的约束条件,对目标 问题的求解是一个反复比较选择、自我建立并不断更新其样本库的过程。   (1)神经元激活函数   激活函数又称传递函数。对于模拟电路故障诊断,神经元激活函数可以采用对称的 sigmoid 函数y(x)=1/(1+e-x)-0.5,也可以采用非对称的sigmoid 函数y(x)=1/(1+e-x)。   (2)输入层   输入层从电路拓扑结构接受各种状态信息提取。神经网络的输入节点数应与输入特征的 维数相同,输入节点与电路的节点数一一对应。   (3)输出层   输出层输出诊断结果。输出结点数与预期节点选择数目相同,每个输出结点与目标一一对应。当神经网络用于选择时,若所有输出结点的输出值均非空,则认为本次生成最多数目 的节点;若有几个输出结点的输出值为0,则认为生成了较少的测试节点。   (4)隐层数   BP 网络的输入结点数和输出结点数是由实际问题本身决定的。隐层用于对信息进行处理和转化。网络结构设计的难点和重点在于隐层结构的设计,具体是指隐层数目和各隐层的神经元数目。确定隐层的结构很大程度上决定着网络质量。隐层用于对信息进行处理和转化。 隐层的层数取决于问题的特点。Funahashi 证明了对于任何在闭区间内的一个连续函数都可 以用单隐层BP 网络逼近,因而一个三层BP 网络可以完成任意的n 维到m 维的映射,说明了单隐层的可行性[4],但并不确定是最合理的。本文采用最常用的单隐层BP 网络构造神经 网络。   (5)隐结点数   隐层结点数的选择非常重要,隐节点数与问题的复杂程度有关,不存在一个理想的解析 式。隐结点的数目与问题的要求、输入、输出数目有关。隐结点数目太多会导致学习时间过 长,误差不一定最佳,数目太少则可能会使网络训练不出来,网络的学习和联想能力降低。   除了一些参考选择公式外,还可以先放入足够多的隐结点,通过学习将作用甚微的隐结点逐 步剔除直到不可收缩为止;或者反向添加至合理数目为止。 神经网络故障诊断系统的训练方法如下:   (1)权初值确定   系统是非线性的,不合适的权初始值会使学习过程陷入局部最优,甚至不收敛。权一般取随机数,而且权值要小,这样可使初始权要在输入累加时使每个神经元的状态值尽可能接近于零,保证每个神经元都在它们的传输函数导数最大的地方进行,这样就不至于一开始就落在误差平坦区上。本文的神经网络故障诊断系统中,网络初始值均取在闭区间[-0.1,0.1] 内均匀分布的随机数。   (2)样本输入方式   批处理方式存在局部最优,在线输入方式容易引起权值调节的振荡现象。避免振荡往往 根据样本集的特点进行多次尝试,局部最优可以通过修改网络输出误差来缓解。本文样本输 入采用批处理方式。   (3)误差函数的选择 神经网络训练容易出现局部最优,因此本文设计网络不要求输出误差很小,通过适当增 加训练时间来提高准确度。   3 BP 网络在最优测试集上的应用   (1)分析电路,构造网络结构 对电路中的各节点支路进行分析,建立改进的关联矩阵。取得用于选择的测试向量。根 据测试向量维数和目标要求数来选择网络各层的结点数。 (2)输入特征向量抽取 取电路节点对支路的关联信息作为神经网络的输入特征。由于各节点的关联信息相差可 能会比较大,神经网络输入特征的各分量量限也不同。      其中xi 是输入特征的第i 个分量,vi 是同类关联信息的平均值,这样使输入特征的各分 量量限基本相同,而且仍然可以表征原输入特征。   (3)输出特征值设定   输出特征维数取决于输出的表示方法和要识别或分类的数目,当电路有M 个待监测节 点时,电路状态有M 类,本文把无节点输出做为输出节点坐标为0,输出特征维数选择为M, 输出特征分量与输出节点一一对应。   (4)训练样本集的选择   同故障字典的样本集选择不同,最优测试集的训练样本一开始时不存在的,是在制定的 约束条件下,不断反复运算的动态过程,是一个自我学习更新的过程。因此本网络将样本集 训练融合到网络的学习过程中。   4 仿真结果   本文所选择的目标电路模型为实际某设备的使用组件。电路板属于较为典型的模拟电路 板,电路板的原理图如图1。   对电路板进行仿真试验,得到结果如表1,其指标衡量如表2。     运用神经网络方法得到的种群中的个体元素仍比较分散,说明神经网络在自主学习训练 下要将当前的最优解解出的能力相对较弱一些,表1 中给出的结果是应用神经网络多次运算 得到的出现频率较高的解。   在设定生成较少的测设点数量时,应用神经网络能够解出点集,但各项指标与使用进化 规划算法的解相比相对较差,整体效果类似于陷入“早熟”。在设定生成较多的测试点数量时,应用神经网络来对目标点集的查找解算较为困难,对目标求解的明晰性不强,目标集(样本集)内的元素不趋同,求解精度不高。   应用传统的 BP 神经网络解决TSP 或集覆盖等问题时,可行解获得的效率低,网络较难 收敛到可行解。随着问题的复杂化,传统的BP 神经网络方法搜索到严格最优解或近似最优 解的困难加大,容易陷入局部最优。求解速度较慢,网络特性相对不够稳定。   5 结论   本文应用神经网络对模拟电路最优测试集生成上进行了初步实现。仿真结果说明当电路结构变得复杂以后,神经网络的训练和识别所需要的时间都比较长,运算时间大大增加,甚至在限定的最大时间内出现求不出参考解的情况。目前,应用进化规划算法进行最优测试集的生成对复杂电路结构求解问题上显示出其优越性,在设定的时间内求解精度高,在设定的 精度下运算时间短。   本文作者创新点:在复杂电路结构的求解问题上,应用进化规划算法进行最优测试集的 生成,在设定的时间内求解精度高,在设定的精度下运算时间短。

    时间:2011-11-26 关键词: 测试 电路 bp神经网络

  • 基于虚拟仪器和BP神经网络液压系统故障诊断

    摘要 针对液压系统故障诊断中存在的检测和分析判断困难、耗时费力且准确度不高等诸多问题,提出了一种基于虚拟仪器和BP神经网络技术的液压系统远程故障诊断系统的设计。利用虚拟仪器数据采集、分析和处理能力以及其开放性特点,实现了对液压系统故障的实时远程监测判断。利用BP神经网络技术对历史监测数据的分析判断,实现了对液压系统将来工作状态的预测,发现潜在故障,做好预防措施。该方法具有良好的软件交互界面,操作简单,准确度高。 关键词 液压系统;虚拟仪器;BP神经网络;故障诊断     液压系统在工程机械中占有重要的地位,其性能的好坏直接影响和决定整机的性能和品质。液压传动具有重量轻、体积小、可实现无级变速、易于实现载荷控制和动力传输等优点,因而在工程中得到了广泛应用。因此保证液压系统正常稳定的工作是保证工程机械正常工作状态的必备条件。但液压系统的工作介质是流体,它本身存在连续性和静压传递的均布性,且工作在各元件和封闭管路内,故很难判断液压系统故障的因果关系。一旦出现故障,单凭感官、经验和传统的检测方法来判断,相当困难并且准确率不高,故障的分析和排除比较困难。文中提出了一种基于虚拟仪器和BP神经网络技术的液压系统远程故障诊断方法。虚拟仪器和BP神经网络技术的引入,能实时远程监测液压系统的工作状态,收集当前液压系统各参数数据,通过数据融合分析判断系统工况,并预测将来的工况走向,发现潜在故障,真正达到预防为 主的目的,保证液压系统处于正常稳定工作状态。 1 虚拟仪器和BP神经网络技术 1.1 虚拟仪器技术     虚拟仪器(Virtual Instrument,VI)是现代测控技术和计算机技术相结合的产物。它本质上是一个开放型的结构,由通用计算机、数字信号处理器或其它CPU来提供信号处理、存储和显示功能,由数据采集板卡、GPIB或VXI总线接口板进行信号的获取与控制,实现仪器的功能。虚拟仪器是软件和硬件相结合的产物,其基本思想和核心内容是借助仪器设备完成数据采集和预处理以及仪器控制功能。图1为虚拟仪器的基本构成图。     与传统仪器相比,虚拟仪器具有如下特点:     (1)测量精度高、可重复性好。由于虚拟仪器减少了硬件的使用,因此减少了测试误差,同时测试可重复性进一步提高。     (2)测量速度快。由于测量输入信号只需一个量化的数据模块,就可通过数据处理器将信号特性计算出来,因此可缩短测量时间,提高测量速度。     (3)缩短了系统组建的时间,降低仪器硬件开销,同时也降低了系统故障率。     (4)实现了用户自定义测量功能,可测量传统物理仪器不能测量的对象。     (5)易于扩展。为提高系统性能,可方便地加入或更换仪器模块,有利于测试系统扩展。     随着计算机及网络技术的发展,利用网络技术,进行网络化测控将成为虚拟仪器技术发展的重点。将虚拟仪器和网络技术结合起来,使虚拟仪器拓展到网络测控应用环境中去,对于丰富测控手段、提高测控效率、充分合理地利用有效资源都有着很好的作用。 1.2 BP神经网络技术     BP神经网络是采用BP算法进行训练的网络,BP算法是应用广泛的神经网络算法,具有较强的非线性拟合能力,可以用来预测非线性时间序列数据的发展趋势。该网络具有1个输入层、1个输出层和至少1个隐藏层。增加隐藏层的层数不一定能提高网络的精度和表达能力,一般情况下,选用1个隐藏层即可。BP算法是非循环多级网络的训练算法,其学习过程由正向传播和反向传播组成。输入值经过非线性变换从输入层经隐藏单元逐层处理,并传向输出层,每一层神经元的状态将影响到下一层神经元状态。如果在输出层不能得到期望的输出值,则转入反向传播,通过修改各神经元权值以及阀值,使误差信号最小。     通过压力、流量和温度传感器等测得的相关数据,经数据融合,进行滤波,剔除噪声,得到训练集和测试集。以训练集为学习样本,采用BP算法修正神经网络的权值和阀值,直到满足精度要求为止。若训练后的神经网络仍不能使用,必须使用附加样本进行性能验证。若不能满足要求,则需要重新训练网络,所以神经网络的训练是一个反复的过程。经训练和测试后的BP神经网络就可以用来对液压系统将来的工作状况进行预测,发现潜在故障,做好预防,减少损失。 2 液压系统故障诊断原理     液压元件和液压系统性能监测中,常见的监测指标有压力、温度、流量、转速及其他响应类型的参数。工作中若这些参数偏离了预定值,则系统有可能出现故障。所以液压系统产生故障的实质就是这些检测参数的异常变化。当液压系统发生故障时,必然是系统中某一回路的某些元件有故障,进一步可断定液压回路的检测参数已经偏离了预定值。因此,对系统参数进行在线检测十分必要。在液压系统中需要检测的主要参数有压力和流量,同时还有油温和液位等。对于压力、流量和温度等,可采用动态的在线检测,能及时反映出系统的运行状态和故障情况。典型的液压系统故障检测与诊断原理如图3所示。 3 液压设备远程故障诊断系统 3.1 硬件结构     如图4所示,硬件结构的设计包括传感器的选型、信号调理接口电路的设计制造、A/D和D/A卡的选型和连接等。首先,传感器将液压系统物理量转变成电信号,然后通过信号调理接口电路进行滤波、放大等处理,产生的模拟量,经A/D卡转换成数字量,通过PC机I/O接口进入底层设备驱动模块。客户端计算机软件系统对采集的数据进行分析处理,远程计算机通过网络接口对系统进行实时监测。 3.2 软件结构     软件是虚拟仪器的核心部分,本系统使用LabVIEW构建测试系统的软件平台。     LabVIEW是一种图形化编程语言,通过对用户图形界面的操作即可实现对所需仪器的编程,并有直观的图形显示,界面友好、操作简单。利用LabVIEW提供的开发环境生成逼真的虚拟仪器面板,实现各功能模块的功能。软件的设计主要由以下几个功能模块来实现。     (1)数据采集模块。数据采集主要由数据采集子Ⅵ来完成,这个子VI主要由AI Config,AI Start,AIRead等3个VI组成,可以方便地进行采集频率、采集点数、采集通道、采集电压上下限及缓存大小等参数设置。     (2)数据存储模块。数据存储是液压设备远程故障诊断系统的关键环节。数据存储可以作为后续数据分析的数据来源和历史数据以备查询。     (3)故障诊断模块。故障诊断是指对采集到的液压系统各参数数据进行信号分析、统计分析、模态分析等处理,通过人工智能专家诊断系统对液压系统进行故障诊断。同时对BP神经网络进行训练,以得到满足精度要求的权值和阀值,根据以往监测到的历史数据对系统将来工作状态进行预测,及时发现潜在故障。     (4)远程控制模块。Web Server技术将VI的前面板窗口以网页的形式发布到互联网上,将这样的VI前面板窗口嵌入到一个网页当中,可以实现在网页中的远程虚拟仪器。用户可以用极为简单的方式直接在本地的客户端计算机上打开并操作位于远程服务器端计算机上的VI面板,在网页中直接进行操作。     (5)帮助模块。主要提供实时帮助,如对数据进行编辑打印等,并提供软件的使用帮助说明。系统软件构成如图5所示。 3.3 误差处理     液压系统在工作过程中,液压油的温度不断升高,会使得传感器内部元件的温度随之升高而产生失真,从而影响到数据的真实性。因此必须在液压设备故障监测系统设计时考虑误差带来的影响,尽量减小误差这一不利因素。依据液压系统的特性,总结为两种数据的误差,即传感器误差和粗大误差。对于传感器误差,可根据各传感器内部特点采用微控制器配合温度传感器的智能化手段对其因温度产生误差做出补偿和校正。高效率的对粗大误差数据的剔除处理可以采用国际电工会议推荐的格拉布斯准则。在计算机内存中以10个单位作为一个堆栈,用于存储10个测量值。当一个新数据被送人到缓冲区之后,计算根据格拉布斯准则允许的最大偏离值的量表判断。当N=10时,有0.95置信概率的T的最大允许值为2.29。 4 结束语     系统以LabVIEW为开发环境,提出了一种综合神经网络和虚拟仪器技术的液压设备远程故障诊断方法,根据失效分析知识及推理规则建立了故障诊断模型,提高了故障诊断的可靠性和精确度。

    时间:2011-12-18 关键词: 虚拟仪器 bp神经网络 故障诊断 液压系统

  • matlab的BP神经网络例子程序

    1. BP神经网络的设计实例     例1. 采用动量梯度下降算法训练BP 网络。  训练样本定义如下:  输入矢量为      p =[-1 -2 3  1;-1  1 5 -3]  目标矢量为   t = [-1 -1 1 1]  解:本例的 MATLAB 程序如下:   close all   clear   echo on   clc   % NEWFF——生成一个新的前向神经网络   % TRAIN——对 BP 神经网络进行训练   % SIM——对 BP 神经网络进行仿真   pause          %  敲任意键开始   clc   %  定义训练样本   % P 为输入矢量   P=[-1,  -2,    3,    1;       -1,    1,    5,  -3];  % T 为目标矢量   T=[-1, -1, 1, 1];   pause;   clc   %  创建一个新的前向神经网络   net=newff(minmax(P),[3,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 = 1000;   net.trainParam.goal = 1e-3;   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   echo off  例2. 采用贝叶斯正则化算法提高 BP 网络的推广能力。在本例中,我们采用两种训练方法,即 L-M 优化算法(trainlm)和贝叶斯正则化算法(trainbr),用以训练 BP 网络,使其能够拟合某一附加有白噪声的正弦样本数据。其中,样本数据可以采用如下MATLAB 语句生成:  输入矢量:P = [-1:0.05:1];   目标矢量:randn(’seed’,78341223);   T = sin(2*pi*P)+0.1*randn(size(P));   解:本例的 MATLAB 程序如下:   close all   clear   echo on   clc   % NEWFF——生成一个新的前向神经网络   % TRAIN——对 BP 神经网络进行训练  % SIM——对 BP 神经网络进行仿真   pause          %  敲任意键开始   clc   %  定义训练样本矢量   % P 为输入矢量   P = [-1:0.05:1];   % T 为目标矢量   randn('seed',78341223); T = sin(2*pi*P)+0.1*randn(size(P));  %  绘制样本数据点   plot(P,T,'+');   echo off   hold on;   plot(P,sin(2*pi*P),':');          %  绘制不含噪声的正弦曲线   echo on   clc   pause   clc   %  创建一个新的前向神经网络   net=newff(minmax(P),[20,1],{'tansig','purelin'});   pause   clc   echo off   clc  disp('1.  L-M 优化算法 TRAINLM'); disp('2.  贝叶斯正则化算法 TRAINBR');   choice=input('请选择训练算法(1,2):');   figure(gcf);   if(choice==1)                       echo on               clc               %  采用 L-M 优化算法 TRAINLM       net.trainFcn='trainlm';               pause               clc               %  设置训练参数               net.trainParam.epochs = 500;               net.trainParam.goal = 1e-6;               net=init(net);              %  重新初始化                 pause               clc  elseif(choice==2)               echo on               clc               %  采用贝叶斯正则化算法 TRAINBR               net.trainFcn='trainbr';               pause               clc               %  设置训练参数               net.trainParam.epochs = 500;               randn('seed',192736547);               net = init(net);              %  重新初始化                 pause               clc           end       例2. % 调用相应算法训练 BP 网络  [net,tr]=train(net,P,T);  pause  clc  % 对 BP 网络进行仿真  A = sim(net,P);  % 计算仿真误差  E = T - A;  MSE=mse(E)  pause  clc  % 绘制匹配结果曲线  close all;  plot(P,A,P,T,'+',P,sin(2*pi*P),':');  pause;  clc  echo off          通过采用两种不同的训练算法,我们可以得到两种拟合结果。图中的实线表示拟合曲线,虚线代表不含白噪声的正弦曲线,“+”点为含有白噪声的正弦样本数据点。显然,经 trainlm 函数训练后的神经网络对样本数据点实现了“过度匹配”,而经 trainbr 函数训练的神经网络对噪声不敏感,具有较好的推广能力。            值得指出的是,在利用 trainbr 函数训练 BP 网络时,若训练结果收敛,通常会给出提示信息“Maximum MU reached”。此外,用户还可以根据 SSE 和 SSW 的大小变化情况来判断训练是否收敛:当 SSE 和 SSW 的值在经过若干步迭代后处于恒值时,则通常说明网络训练收敛,此时可以停止训练。观察trainbr 函数训练 BP 网络的误差变化曲线,可见,当训练迭代至 320 步时,网络训练收敛,此时 SSE 和 SSW 均为恒值,当前有效网络的参数(有效权值和阈值)个数为 11.7973。  例3 采用“提前停止”方法提高 BP 网络的推广能力。对于和例 2相同的问题,在本例中我们将采用训练函数 traingdx 和“提前停止”相结合的方法来训练 BP 网络,以提高 BP 网络的推广能力。 解:在利用“提前停止”方法时,首先应分别定义训练样本、验证样本或测试样本,其中,验证样本是必不可少的。在本例中,我们只定义并使用验证样本,即有  验证样本输入矢量:val.P = [-0.975:.05:0.975]  验证样本目标矢量:val.T = sin(2*pi*val.P)+0.1*randn(size(val.P))          值得注意的是,尽管“提前停止”方法可以和任何一种 BP 网络训练函数一起使用,但是不适合同训练速度过快的算法联合使用,比如 trainlm 函数,所以本例中我们采用训练速度相对较慢的变学习速率算法 traingdx 函数作为训练函数。 本例的 MATLAB 程序如下:  close all  clear  echo on  clc  % NEWFF——生成一个新的前向神经网络  % TRAIN——对 BP 神经网络进行训练  % SIM——对 BP 神经网络进行仿真  pause  % 敲任意键开始  clc  % 定义训练样本矢量  % P 为输入矢量  P = [-1:0.05:1];  % T 为目标矢量  randn('seed',78341223);  T = sin(2*pi*P)+0.1*randn(size(P));  % 绘制训练样本数据点  plot(P,T,'+');  echo off  hold on;  plot(P,sin(2*pi*P),':'); % 绘制不含噪声的正弦曲线  echo on  clc  pause  clc  % 定义验证样本  val.P = [-0.975:0.05:0.975]; % 验证样本的输入矢量  val.T = sin(2*pi*val.P)+0.1*randn(size(val.P)); % 验证样本的目标矢量  pause  clc  % 创建一个新的前向神经网络  net=newff(minmax(P),[5,1],{'tansig','purelin'},'traingdx'); pause  clc  % 设置训练参数  net.trainParam.epochs = 500;  net = init(net);  pause  clc  % 训练 BP 网络  [net,tr]=train(net,P,T,[],[],val);  pause  clc  % 对 BP 网络进行仿真  A = sim(net,P);  % 计算仿真误差  E = T - A;  MSE=mse(E)  pause  clc  % 绘制仿真拟合结果曲线  close all;  plot(P,A,P,T,'+',P,sin(2*pi*P),':');  pause;  clc  echo off           下面给出了网络的某次训练结果,可见,当训练至第 136 步时,训练提前停止,此时的网络误差为 0.0102565。给出了训练后的仿真数据拟合曲线,效果是相当满意的。 [net,tr]=train(net,P,T,[],[],val);  TRAINGDX, Epoch 0/500, MSE 0.504647/0, Gradient 2.1201/1e-006  TRAINGDX, Epoch 25/500, MSE 0.163593/0, Gradient 0.384793/1e-006  TRAINGDX, Epoch 50/500, MSE 0.130259/0, Gradient 0.158209/1e-006  TRAINGDX, Epoch 75/500, MSE 0.086869/0, Gradient 0.0883479/1e-006  TRAINGDX, Epoch 100/500, MSE 0.0492511/0, Gradient 0.0387894/1e-006  TRAINGDX, Epoch 125/500, MSE 0.0110016/0, Gradient 0.017242/1e-006  TRAINGDX, Epoch 136/500, MSE 0.0102565/0, Gradient 0.01203/1e-006  TRAINGDX, Validation stop.

    时间:2019-07-10 关键词: matlab bp神经网络

  • 基于改进BP神经网络的电加热炉炉温PID控制研究

      摘 要:以电加热炉为控制对象,提出一种基于BP神经网络的PID控制策略。针对BP网络学习速度的缓慢性及较差的泛化能力,受Fletcher-Reeves线性搜索方法的指引,对传统BP神经网络进行改进,改善算法在训练过程中的收敛特性。最后仿真结果证明了该控制策略的有效性。?   关键词:电加热炉;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误差估计器等。本文在此探讨通过变?   换梯度来加快网络训练的收敛速度的共轭梯度算法,利用这种算法改善收敛速度与收敛性能。改进共轭梯度算法在不增加算法复杂性的前提下可以提高收敛速度,并且可以沿共轭方向达到全局最优即全局极值点。它要求在算法进行过程中采用线性搜索,本文采用Fletcher-Reeves线性搜索方法,以保证算法的收敛速度。?   将改进共轭梯度法应用于BP网络的控制算法如下:?    由于电加热炉是温度参数的定值控制,且存在干扰和对象参数变化的情况,为验证改进BP神经网络PID控制的效果,分别对其跟踪设定值特性、及适应对象参数变化的能力进行仿真研究,并与基于传统BP神经网络PID控制器的控制效果进行比较分析。图3为单位阶跃响应曲线,图4为过程对象单位阶跃响应曲线是在控制器参数不变的情况下改变对象G(S)参数的仿真结果。(注:以下各图中实线或“I”均表示改进BP神经网络PID控制结果,虚线、点线或“T”表传统BP神经网络PID控制器的控制结果;A、B、C分别表示G(S)三种参数变化了的模型)?      从仿真结果看,改进BP神经网络PID控制器比传统BP神经网络PID控制器在控制性能上有了一定程度的提高,尤其是在系统稳定时间和抗干扰性方面的优化较为明显。这主要是因为在BP算法中采用了改进共轭梯度法,加快了BP算法的收敛速度,从而保证了系统稳定时间较短,又具有较好的泛化能力,因此,具有较强的抗干扰和适应参数变化的能力?      4 结论?      改进共轭梯度BP算法在不增加算法复杂度的情况下,通过梯度的共轭方向来寻求网络的全局最优值,从而避免网络陷入局部极小值。本文将其替代传统的BP算法构造智能PID控制器,并进行了以电加热炉为模型的控制系统仿真。结果表明,这种改进算法能够有效提高网络的训练速度,改善网络的收敛性能,避免网络陷入局部极小值,取得了良好的控制性能。?

    时间:2009-07-16 关键词: pid bp神经网络 炉温 电加热炉

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

     1. 引言      PID(比例-积分-微分)控制器作为最早实用化的控制器已有50多年历史,因其具有算法简单、鲁棒性好、可靠性高、直观性好等优点被广泛的应用于工业过程控制及运动控制中[1]。常规PID控制效果的优劣,不仅仅取决于控制系统模型的精确程度,还必须调整好三个参数的关系,而这种关系不一定是简单的线性组合。实际的工业过程及运动过程往往具有时变性、变参数、变结构等不确定性及很强的非线性,精确的数学模型难以建立,此外,常规PID还有实现在线调整困难,参数间相互影响,参数整定时间长等缺点,难以取得理想的控制效果。      随着控制理论的发展,将应用广泛的PID控制器与智能控制理论相结合[2]成为智能控制研究的新方向,神经网络算法具有逼近任意非线性表达能力,很强的自学习能力和概括推广能力,在解决高度非线性和不确定系统方面有很大的的潜能,应用神经网络,可以从复杂的PID三个参数组合中寻求最佳的线性组合,使神经网络和PID本质结合。从而使得控制器具有较好的自适应性,实现参数的自动实时调节,适应过程的变化,提高系统了的鲁棒性和可靠性。2. BP神经网络2.1 BP神经网络的构成及设计[3]      BP神经网络是一种具有三层或三层以上的神经网络,包括输入层、隐含层、输出层,上下层之间实现全连接,而每层神经元之间无连接。当一对学习样本提供给网络后,神经元的激活值从输入层经各中间层向输出层传播,在输出层的各神经元获得网络的输入响应。接下来,按照减少目标输出与实际误差的方向,从输出层经过各中间层逐层修正各连接权值,最后回到输入层,这种算法即BP算法。随着这种误差逆的传播修正不断进行,网络对输入模式响应的正确率也不断上升。(1)输入输出层的设计      输入层的设计可以根据需要求解的问题和数据表示方式确定,若输入信号为模拟波形,那么输入层可以根据波形的采样点数目撅腚输入单元的维数,也可以用一个单元输入,这是输入样本为采样的时间序列。输出层的维数可以根据使用者的要求确定。如果BP网络用作分类器,类别模式一共有m个,那么输出层神经元的个数为m或者。(2)隐层的设计      隐层单元的数目与问题的要求、输入/输出单元的数目都有直接的关系,隐单元的数目太多会导致学习时间过长、误差不一定最佳,也会导致容错性差、不能识别以前没有的样本等等,因此,一定存在一个最佳的隐单元数,通常用以下三个公式来选择最佳隐单元数:1),其中k为样本数,n为输入单元数。2),其中m为输出神经元数,n为输入单元数,a为[1,10]之间的常数。3),其中n为输入单元数。2.2 典型神经网络结构一个典型的三层神经网络结构如下图所示:图1  BP神经网络结构图      其中: 、 、…、 为 BP网络的输入; 、 、…、 为 BP网络的输出,对应PID控制器的三个参数;为输层到隐含层的连接权值;为隐含层到输出层的连接权值。通过神经网络的自学习、加权系数的调整,使神经网络输出对应于某种最优控制规律下的PID控制器参数。  图一中各参数之间的关系[4]如下:输入层:隐含层:     输出层:     取性能指标为:,按照梯度下降法修正网络的权值,使最小,修正方法如下:隐含层:      输出层:      3. 神经网络PID控制器及控制算法 1、BP神经网络PID控制器结构如下图所示:图2  神经网络控制器结构图      由图可知:控制器由两部分组成,分别为常规PID控制和神经网络,其中,常规PID直接对被控对象进行闭环控制,并且其控制参数Kp、Ki、Kd为在线调整方式;神经网络,根据系统的运行状态,调节PID控制器的参数,以期达到某种性能指标的最优化,使输出层神经元的输出对应于PID控制器的三个可调参数。通过神经网络的自学习、加权系数的调整,使神经网络输出对应于某种最优控制规律下的PID控制器参数。2、控制算法神经网络PID的控制算法[5]如下:(1).  确定神经网络的结构,即确定输入节点数和隐含层节点数,并给出各层加权系数的初值和,并选定学习速率 和惯性系数 ,令k =1;(2).  采样得到r(k)和y(k),计算当前时刻误差error(k)= r(k)-y(k);(3).  计算各神经网络的输入、输出,其输出层的输出即为PID控制器的三个控制参数Kp、Ki、Kd;(4).  计算 PID控制器的输出;(5).  进行神经网络学习,在线调整加权系数,实现 PID控制参数的自适应调整;(6).  令k=k+1,返回第(1)步。4. 仿真实例4.1 被控对象设被控对象的近似数学模型为:,所选的输入信号为一时变信号: 神经网络的结构选择4-5-3,学习速率为0.55,惯性系数为0.04,加权系数初始值为区间[-0.5,0.5]上的随机数,采样频率为1000Hz。Matlab仿真结果如图三所示:图3-1  输入输出曲线图3-2  误差曲线4.2 仿真结果分析      由仿真曲线可以看出,神经网络PID稳态误差小,解决了常规PID超调,抖动等问题,控制精度高,实现了对控制信号几乎相同的跟踪,具有较好的快速性和适应性。5. 结语      神经网络PID控制器实现了两种算法本质的结合,借助于神经网络的自学习,自组织能力,可实现PID参数的在线调整,控制器自适应性好;该算法不要求被控对象有精确的数学模型,扩大了应用范围,控制效果良好;在合理选择神经网络的结构的情况下,该算法有很强的泛化能力。基于以上优点,神经网络PID控制器具有很好的发展应用前景。

    时间:2010-05-13 关键词: 控制器 仿真 pid bp神经网络

  • 基于BP神经网络的一种传感器温度补偿方法

    摘要:简单介绍了硅压阻式传感器温度误差产生的原因及其特点,提出了一种利用BP神经网络对其温度误差及非线性误差进行补偿的方法。根据传感器温度误差的特点设计了一个多层的BP神经网络,其中传感器测试电路中四臂电桥的桥路电压和未经补偿的传感器的输出作为神经网络的两个输入。利用MatLab对该网络进行训练,得到了网络的权值和阀值。经过试验证明,该网络能够有效的补偿传感器的温度非线性误差,在-40~60℃范围内,使温度误差从原来的5.4%降到了0.2%。 关键词:温度补偿;硅压阻式;传感器;BP神经网络;电桥     传感器特别是硅压阻式传感器的温度误差在其总误差中占有很大的比重,温度补偿的好坏直接影响着传感器的总精度。温度误差的补偿方法有很多种,其中软件补偿是一种较常见的方法。由于传感器的温度误差是一种非线性误差,即各个温度点的补偿系数也应该呈非线性,这给补偿带来了一定的困难。常常采用的方法是选取几个温度点,求得补偿系数,其它温度点的补偿系数通过线性插值得到,这种方法实质上是一种将补偿系数分段线性化来拟合补偿系数的非线性曲线的方法。因此,要做到较高的补偿精度比较困难。而BP神经网络具有很强的曲线拟合能力,可以利用BP网络对传感器输出值进行处理,得到去除了温度误差的理想输出值。但是,单单从传感器的输出很难判断哪些是由输入压力所引起的输出,哪些是由于温度误差所带来的输出。所以,向BP网络引入一个反映温度变化的参数至关重要。而传感器桥路电压可以满足条件。因此,利用传感器的桥路电压和未经温度补偿的传感器输出一起作为神经网络的输入。试验证明,构建的BP神经网络能够使传感器的温度误差得到大大降低,使得传感器在-40~60℃温度范围内,非线性温度误差降低到0.2%。 1 BP神经网络硅压阻式传感器温度补偿 1.1 硅压阻式传感器的温度误差     硅压阻式传感器是用半导体材料制成的,而半导体材料对温度很敏感。因此,硅压阻式传感器的温度误差较大,并且其温度误差具有以下特点:首先,在相同压力下硅压阻式传感器的温度误差比其他材料传感器的要大;其次,它的温度误差是非线性的;再次,在进行温度补偿的过程中,很难区分温度误差引起的输出量的变化和压力变化引起的输出量的变化;此外,硅压阻传感器的温度误差有很大的分散性,甚至由同一制造商提供的同一型号传感器的误差幅度彼此之间也会有轻微的差异。这些特点给硅压阻式传感器的温度误差补偿带来了一定的困难。鉴于硅压阻传感器温度误差的特点,要对它进行补偿,首先必须找到一个能够反映温度变化的参量,这可以从传感器的测量电路中获得。     硅压阻式传感器的测量电路,由应变计组成的四臂电桥组成,如图1所示,四臂电桥中的4个电阻的阻值不仅会随压力的变化而变化,还会随温度的升高而增大。     假设温度为t0时,Rt=R2=R3=R4=R0,当温度、压力发生变化时,各电阻阻值可以用式(1)、(2)表示:     从式(4)可得,桥路电压Vb与压力产生的应变没有关系,仅与温度引起的附加应变有关。因此,可以利用它作为反映温度变化的参数,而不需另外增加一个温度传感器,这样做的好处是,直接利用压力传感器本身元件敏感温度的变化,从而避免由于外加温度传感器而导致测量温度和压阻传感器应变片实际温度存在差异给补偿带来误差,提高了补偿的精度,同时也节约了成本,简化了电路。     硅压阻式传感器虽然存在着很大的温度误差,但是在温度不变的情况下,传感器的输出呈现出很好的线性度和重复性,这就为用BP神经网络对它进行温度补偿提供了必要的条件。 1.2 BP神经网络算法     1986年Rumelhart,Hinton和Willians完整而简明地提出一种ANN的误差反相传播训练算法(简称BP算法)。目前,在人工神经网络的实际应用中,绝大部分的神经网络模型是采用BP网络和它的变形形式,它也是前向网络的核心部分,并体现了人工神经网络最精华的部分。     BP神经网络由输入层、输出层和多层隐含层组成,只要隐含层中有足够数量的神经元,它就可以用来逼近几乎任何一个函数。事实上,研究已表明,两层网络在其隐含层中使用S形传输函数,在输出层中使用线性传输函数,就几乎可以以任意精度逼近任何函数。三层BP神经网络的结构图如图2所示,任意层的BP神经网络具有类似的结构。     在多层网络中,某一层的输出成为下一层的输入。描述此操作的等式为:         这里,M是网络的层数。多层网络的BP算法是LMS(Least Mean Square,最小均方)算法的推广。算法的输入是一个网络正确行为的样本集合:         这里pQ是网络的输入,tQ是对应的目标输出。每输入一个样本,便将网络输出与目标输出相比较。算法将调整网络参数以使均方误差最小化。每一步对参数的调节见式(7)(8)。     式(6)为均方误差的期望。这里,均方误差的期望值被第k次迭代的均方误差所代替。       这里α是学习速度。 1. 3 BP神经网络的构建和训练     用BP神经网络对硅压阻式传感器进行温度补偿的原理图如图3所示,在MatLab中创建的是一个1-10-2-1的BP网络。     用BP神经网络对硅压阻式传感器实现温度补偿分成两部分,如图3所示。其中,P表示输入的压力;y表示未经温度补偿的传感器输出;Vb表示传感器测量电路的桥路电压;y'表示经过温度补偿的传感器输出。     BP神经网络隐层由Log-Simoid层和线性层两层组成。也就是说隐层的函数分别为:         传感器未经温度补偿的输出电压y和测量电路中的桥路电压Vb作为神经网络的两个输入参数,经过该网络后将得到除去了温度误差的输出结果。     表1所示分别为-40、-20、0、20、40℃下测定的传感器桥路电压、2 MPa时传感器输出,100 MPa满量程输出。鉴于0 MPa较难获得,则可以将2 MPa作为最小压力。硅压阻式传感器在一定温度下具有很好的线性度,因此各温度下根据两个压力点的输出很容易推算出20、40、60、80 MPa输入压力时的电压输出值。     选取常温20℃时的传感器输出作为目标值。这样就可以形成30个样本点,可以用式(10)表示。         其中Xi为输入样本,可以表示为(yi,Vbi),yi为-40、-20、0、20、40℃温度下测得的未进行温度补偿的传感器输出;Vbi为yi相应的电桥桥路电压值;yi’为目标值,即与yi相同压力下在20℃所测得的传感器输出,该压力下的补偿后的目标输出值。     采用L—M算法用MatLab对样本进行训练。得到值、阈值,训练过程如图4所示。     分别测量-40~60℃,2~100 MPa传感器输出和相应温度下的最小压力下的Vb值,将传感器输出经过BP神经网络进行温度补偿后得到的结果如表2所示。 2 结论     硅压阻式传感器经过BP神经网络补偿后,温度误差得到了大大的降低,在-40~60℃范围内,温度误差由原来的5.4%降到了0.2%,并且这个方法对其他类型的传感器的温度补偿同样适用,也可以应用于一些传感器输出的非线性校正。

    时间:2011-09-20 关键词: 传感器 方法 温度补偿 bp神经网络

  • 基于BP神经网络的数字式涡流传感器特性曲线拟合的实现

    摘要:为了正确反映数字式涡流传感器的实际特性,首先介绍了数字式涡流传感器的工作原理,然后从实测数据出发,提出了应用BP神经网络拟合其特性曲线的方法,运用MATLAB语言编程建立BP神经网络并进行训练和仿真,与现有最小二乘法进行对比。仿真结果表明,基于BP算法所得拟合曲线误差很小、收敛速度快且具有更高的拟合精度,比最小二乘法更具有实际意义。 关键词:BP神经网络;涡流传感器;曲线拟合;MATLAB语言     数字式涡流传感器工作在正常条件下,保持某些参数值恒定不变的前提下,线圈等效电感L就是位移d的单值函数。因此,传感器输出信号的频率f与微小位移信号d之间就会呈现正比例关系。若被测试件位移产生变化时,数字式涡流传感器频率f变化就直接反映被测试件位移d 的情况。     但是在实际中利用涡流传感器进行位移测量时,输入和输出特性曲线存在较为严重的非线性关系,影响到传感器的测量精度,为了提高传感器的测量精度,实际中经常通过计算机利用最小二乘法、查表法、线性插值等方法解决非线性问题。为准确反映数字式涡流传感器d-f间的非线性关系,实现精确测量,需要拟合出一条曲线尽可能逼近数字式涡流传感器实际的输入、输出特性。     笔者将BP(Back Propagation)神经网络算法引入到涡流传感器输入输出非线性特性曲线的拟合中,采用MATLAB语言编程建立神经网络,基于实验测得数据对数字式涡流传感器实际的非线性特性进行拟合,利用神经网络自身具有良好的非线性处理能力、自适应学习能力和容错性逼近得出最佳关系曲线。 1 数字式涡流传感器的工作原理 1.1 涡流传感器基本原理     若有一线圈中的铁心是由整块铁磁材料制成的,此铁心可以看成是由许多与磁通相垂直的闭合细丝所组成,因而形成了许多闭合的回路。当给线圈通入交变的电流时,由于通过铁心的磁通是随着电流做周期性变化的,所以在这些闭合回路中必有感应电动势产生。在此电动势的作用下,形成了许多漩涡形的电流,这种电流就称为电涡流。电涡流形成原理如图1所示。     当线圈中通过高频电流I时,线圈周围产生高频磁场,该磁场作用于金属体,但由于趋肤效应,不能透过具有一定厚度的金属体,而仅作用于金属表面的薄层内。在交变磁场的作用下金属表面产生了感应电流Ie,即为涡流。感应电流也产生一个交变磁场并反作用于线圈上,其方向与线圈原磁场方向相反。根据图1(b)所示的等效电路,按KVL可列出电路方程组如(1)式所示:     这两个磁场相互叠加,就改变了原来线圈的电感L,L的变化仅与金属导体的电阻率ρ、导磁率μ、激励电流强度I、频率f、线圈的几何形状r以及线圈与金属导体之间的位移d有关。当被测对象的材料一定时,ρ、μ为常数,仪表中的I、f、d也为定值,于是等效电感L就是位移d的单值函数。 1.2 测量原理     数字式涡流传感器的测量原理方框图如图2所示。     为了尽可能使数字式涡流传感器输出频率达到稳定,实验过程中选用性能稳定的集成LC振荡器MC1648。在探头接近破测试件时,因为探头线圈L和谐振电容器C构成谐振回路,谐振频率表达式如(5)式所示:         上式中L为探头线圈自感值,C为谐振电容器电容值。因为电感L是位移d的单值函数,所以传感器输出信号的频率f与被测试件的位移量d之间成正比。传感器输出信号经电压比较器和整形电路输出为符合TTL电平规范的脉冲数字信号,最后由计算机显示输出。 2 BP神经网络原理 2.1 人工神经元结构     人工神经元是人工神经网络中最基本组成单位。常用的人工神经元模型可用图3模拟。     当神经元j有多个输入xi(i=1,2,…,m)和单个输出yj时,输入和输出的关系如(6)式所示:         式中θj为阈值,wij为从神经元i到神经元j的连接权重因子,f(·)为传递函数或称为激励函数。 2.2 BP网络学习过程     BP算法是一种监督式的学习算法。BP神经网络算法的主要思想是:假设输入样本为P1,P2,…,Pn,目标样本为T1,T2,…,Tn,网络的输出为A1,A2,…,An。当输出与目标样本产生误差之后,利用误差反向传播回去进行调整权值,尽可能使输出A1,A2,…,An与目标样本T1,T2,…,Tn相近,使误差达到最小值,权值调整结束。BP算法是由两部分组成:信息的正向传递与误差的反向传播。在正向传播过程中,输入信息从输入经隐含层逐层计算传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层没有得到期望输出,则计算输出层的误差变化值,然后转向反向传播,通过网络将误差信号沿原来的连接通路反传回来修改各神经元的权值直至达到期望目标。 3 BP神经网络的MATLAB设计     设计一个BP网络需要确定神经元的特性和网络的输入层、隐层、输出层以及各层之间的传输函数。 3.1 网络层数     反向传播网络是基于BP误差传播算法的多层前馈网络。多层BP网络不仅有输入节点、输出节点,而且还有一层或多层隐含节点。一个三层的BP网络理论上可逼近任意的非线性映射,为避免网络规模过大,隐含层层数不宜多,因此文中在实现对于数字式涡流传感器实验数据曲线拟合时,采用三层的BP网络就可以满足需要。三层BP网络的拓扑结构如图4所示,包括输入层、隐含层和输出层,层与层之问采用全连接方式。各神经元与下一层所有的神经元联结,同一层单元之间不存在相互连接,用箭头表示信息的流动。 3.2 输入层、输出层的节点数     BP网络的输入层的神经元数由输入数据变量个数确定。     本文以数字式涡流传感器的输入(被测位移量)作为输入节点,输入层的节点数为1;以数字式涡流传感器的输出(输出频率f)作为输出节点,输出层的节点数为1。 3.3 训练函数的选择     考虑到LM(Levenberg Marquardt)算法是一种利用标准的数值优化技术的快速算法,该方法是一种将最陡下降法和牛顿法相结合的算法,可以克服神经网络收敛速度慢、易陷入局部极小值的缺点,并且在网络参数相对较少的情况下具有收敛速度极快、稳定性能强等优点,因此本文采用trainlm(LM)算法函数对网络进行训练,大大减少了网络训练的迭代次数。 3.4 传输函数     BP网络传递函数,又称为激活函数必须是连续可微的,通常采用S型的对数函数logsig、双曲正切函数tansig或线性函数purelin。前两种为非线性函数,分别将X∈(-∞,+∞)的输入压缩为Y∈[-1,1]和Y∈[0,1]的输出,因此,对本文的非线性拟合问题,输入层和隐层采用非线性传递函数tansig,输出层采用线性函数purelin,以保持输出的范围。 3.5 隐层的节点数     隐含层神经元数目是根据网络收敛性能好坏来确定的。     目前对于隐含层数目的确定没有严格的规定。一个公认的指导原则是样本点的偏差在允许范围条件下用最平滑的函数去逼近未知的非线性映射。隐含层神经元个数过少可能训练不出网络,即网络的鲁棒性差,抗噪声能力不强,不能辨识以前没有遇到的模式;但是隐含层神经元个数过多,又会使学习时间过长,误差不一定最小,出现过度吻合问题。因此通常采用“试凑法”,通过比较网络输出误差与期望误差之间的拟合程度,选择仿真效果最好时所选择的隐含层节点数。一般对于三层网络隐含层节点数可以根据(7)式所示的经验公式大致确定最佳隐含层单元的数目。         式中M为输入层节点个数,N为输出层节点个数,H为隐含层输入个数。由此隐含层节点数应该在3~12这个范围之内,训练次数为2 000,训练误差为0.000 1。在学习率初定为0.1且不变的情况下对网络进行训练。经过试验,不同隐含层节点数的训练情况如表1所示,得到最好的隐含层节点个数为11。     如图5所示,隐层节点数为11时的网络训练过程误差变化情况,可以看出,网络经初始化,利用函数trainlm对网络进行23次训练后,网络就达到了目标误差的要求。训练过程中,目标误差随着训练次数增大逐渐减小,直至达到所规定的期望误差0.000 1停止训练。 4 仿真研究     完成系统硬件连接,并对系统进行调试,通过实验测得某数字式涡流传感器系统输出电压和被测位移量之间对应关系的一组数据如表2所示。由实验数据可知:d—f变化趋势在被测试件位移量较小时基本上成线性关系;但是在被测试件位移量较大时,线性度较差,呈现非线性关系,这主要因为影响传感器特性的因素有很多;被测试件表面平整度、表面磁效应、表面镀层、表面尺寸以及传感器的安装和工作温度等诸多因素都会对涡流传感器的特性产生影响。为了验证BP神经网络对于位移一频率关系拟合的正确性,本文采用最小二乘算法进行仿真对比研究。最小二乘算法拟合后残差平方和的大小决定了多项式拟合的效果,为了尽可能降低各测量点的残差平方和的数值,要合理选择拟合的阶次。拟合阶次的选择既要兼顾拟合曲线的光滑程度,又要注重考虑真实反映传感器输入、输出之间的变化规律。利用MATIAB语言编写最小二乘算法程序。误差准则为:目标误差rose(均方误差)的计算公式如(8)式所示:         上述两式中N为样本长度。     取m=6阶,最小二乘算法拟合结果如(10)式所示:     为了提高神经网络的训练速度,文中将实验测得数据进行归一化处理,将所收集的数据映射到指定的区间[0,1]之中,根据上述过程利用MATLAB语言编程建立BP神经网络、并对网络初始化、进行网络训练和仿真测试。基于BP神经网络和最小二乘算法拟合曲线如图6所示,仿真结果对比如表3所示。数字式涡流传感器特性曲线拟合效果如图6所示。 5 结论     仿真结果表明,只要实验测得数据足够多,就可利用所建BP神经网络实现涡流传感器输入和输出之间的非线性映射,从而得到涡流传感器的特性曲线。基于MATLAB建立BP神经网络拟合数字式涡流传感器的特性曲线的程序设计简单,且具有较强非线性处理能力和函数逼近能力,网络运算速度快、性能稳定。

    时间:2012-10-27 关键词: 传感器 数字式 bp神经网络 涡流

发布文章

技术子站

更多

项目外包

更多

推荐博客