基于BP神经网络的发动机故障诊断方法与流程

文档序号:19184704发布日期:2019-11-20 01:22阅读:684来源:国知局
基于BP神经网络的发动机故障诊断方法与流程

本发明涉及一种发动机故障诊断方法,尤其涉及一种基于bp神经网络的发动机故障诊断方法。



背景技术:

随着人工智能、机器算法的不断发展,基于人工神经网络的故障检测方法比传统诊断方法越来越多地应用于解决复杂故障诊断问题。对于发动机这种复杂结构来说,在不结合神经网络之前,故障诊断困难大工序多。而应用神经网络对数据进行训练以求快速的得到处理结果,预测故障效果较好。特别是针对发动机的故障诊断这样复杂而繁琐的问题,传统方法不能减少工序,而采取神经网络的方法则可以快速定位和预测问题点。然而对于一个神经网络拓扑结构来说,输入输出都是系统自己定义的,但其中的隐含层的节点数却是难以确定的。用穷举法应对小的数据尚且可以,一旦数据量大了,这个方法有诸多弊端。对于现有的黄金分割法和二分法相对于穷举法来说是减轻了很多工作量,但它们存在收敛速度慢,效率不高的缺点。对于二分法来说,由于区间收敛取点,所带来的验证点增加的问题,无法避免;而黄金分割法的迭代步数则无法保证精简。故本发明提出的方法可以有效避免二者的冲突。



技术实现要素:

发明目的:针对以上问题,本发明提出一种基于bp神经网络的发动机故障诊断方法,提高了确定bp神经网络隐含层的最佳节点数的效率,节省了计算资源,从而能够明显提高发动机故障诊断的效率以及准确率。

技术方案:本发明所采用的技术方案是一种基于bp神经网络的发动机故障诊断方法,该方法包括以下步骤:

(1)采集发动机故障数据,列出发动机故障原因;其中发动机故障原因包括喷油故障、油量消耗异常、针阀卡死和出油阀失效。

(2)确定bp神经网络模型的最佳隐含层节点数,建立bp神经网络模型;其中所述的确定bp神经网络模型的最佳隐含层节点,包括以下过程:

(21)对已有的发动机故障原始数据进行归一化处理;

(22)利用隐含层节点数确定的经验公式计算隐含层节点数的出现区间,经验公式为:

(m1+m2)/2≤m1≤(m1+m2)+10

其中,m1为输入层节点数,m2为输出层节点数,n1为隐含层节点数;

(23)采用平方分数法确定最佳的隐含层节点数。其中,平方分数法确定最佳的隐含层节点数包括以下过程:

(31)给定最终的不确定区间长度λ>0,以及步骤(22)中获得的隐含层节点数的出现区间[a1,b1],根据来确定迭代的最小次数n,然后计算,u1=a1+(1-f1)(b1-a1),v1=a1+f1(b1-a1),区间中点标志位

(32)比较u1、v1大小,若u1<v1,则维持步骤(31)的u1、v1计算值,若u1>v1,则令u1=a1+f1(b1-a1),v1=a1+(1-f1)(b1-a1)。令参数k的初始值为1,进入迭代计算。

(33)比较e(uk)、e(vk)、e(mid)三者的值,若e(mid)最小,则收敛区间为[uk,vk]。否则转步骤(34)。

(34)若e(uk)>e(vk),则收敛区间为[uk,bk],转步骤(35),否则,收敛区间为[ak,vk],转步骤(36),其中e为数据输出误差;

(35)令ak+1=uk和bk+1=bk,进一步令uk+1=vk和vk+1=ak+1+(1-fn+1-k)(bk+1-ak+1),比较uk+1、vk+1大小,若uk+1<vk+1,则维持二者的计算值,若uk+1>vk+1,则调换二者的值。判断k是否达到n,若k=n,则转步骤(38);否则计算e(vk+1)且转至步骤(37)。

(36)令ak+1=ak和bk+1=vk,进一步令vk+1=uk和vk+1=ak+1+(1-fn+1-k)(bk+1-ak+1),若k=n,转步骤(38);否则计算e(uk+1)且转至步骤(37);

(37)令k=k+1,转步骤(33);

(38)令un=un-1和vn=un-1+ε,其中ε为计算精度,ε>0。若e(un)>e(vn),则令an=vn和bn=bn-1,否则若e(un)≤e(vn),令an=an-1和bn=un,停止,则最终的隐含层最佳节点数落在了区间[an,bn]中;

(39)当计算出的区间[an,bn]中只包含有一个整数值时,以上步骤即可确定出最后的节点数,即,将该整数值确定为隐含层的节点数。但如果存在大于一个的可取整数值在最佳区间[an,bn]内,则可采用穷举法作为补充,根据输出数据误差的最低点确定最佳隐含层节点数。

(3)根据已有的故障数据训练bp神经网络模型;采用matlab进行训练,输出层的传输函数采用purelin函数,隐含层的传输函数采用s型函数,训练过程采用l-m算法。

(4)利用训练得到的bp神经网络模型,对采集的发动机数据进行分析,确定数据所对应的故障原因。

有益效果:与现有技术相比,本发明的优点是:(1)由神经网络对发动机故障诊断数据进行训练,得到一个高效的训练结果,由此就可以对发动机的故障诊断快速定位,比起以往的方法更高效,节省了大量的时间和人工成本;(2)在建立bp神经网络的过程中,采用平方分数法进行隐含层节点的确定,这与以往的穷举法、黄金分割法、二分法相比,有着收敛速度快,减少计算量的优点。特别是在面对数据量大的时候,本发明的平方分数法有着明显的优势;(3)区间中点标志位的加入进一步加快了区间收敛的速度,通过对比验证,此方法有效的避免了二分法验证点多和黄金分割法迭代步数多的问题,结合了两者的优点;(4)采用输入层的传输函数为purelin,隐含层的传输函数为s型函数,训练过程采用收敛速度快且能有效避免陷入局部最小化的l-m算法,能够进一步增加收敛速度,提高故障分析的效率;(5)优化了发动机故障诊断中的输出数据以及对应的输入数据,提高诊断的准确性。

附图说明

图1是本发明所述的bp神经网络三层拓扑结构示意图;

图2是在不同隐含层节点数下的误差折线图。

具体实施方式

下面结合附图和实施例对本发明的技术方案作进一步的说明。

本发明所述的一种基于bp神经网络的发动机故障诊断方法,适用于输入、输出的因素量较大的情况,该方法包括以下步骤:

(1)采集发动机故障数据,列出发动机故障原因。

本例中,某发动机故障诊断系统有x1~x8,8个输入,t1~t4,4个输出,对应4个不同发动机故障的物理含义如表1所示。其中发动机故障原因包括喷油故障、油量消耗异常、针阀卡死和出油阀失效。本例中所述的这四个输出因素在发动机故障诊断应用中有较好的诊断效果。其中,对应的故障数据包括最大及次最大喷油压力、油耗传感器的波形参数、针阀位置传感器的波形数据、出油阀传感器的波形数据以及起喷压力(出油阀开启压力)。

表1

(2)确定bp神经网络模型的隐含层节点数,建立bp神经网络模型。

bp神经网络三层拓扑结构如图1所示,包括输入层、隐含层和输入层。其输入层和输出层分别是步骤(1)中的发动机故障数据和发动机故障原因。隐含层的节点数

确定该bp神经网络隐含层节点数的方法包括以下步骤:

(21)在一个发动机系统中的输入输出数据,为了消除指标间量纲的影响并且保证网络学习的稳定性,将原始数据进行归一化处理。在数据归一化处理过程中,根据公式x1=(ymax-ymin)*(x-xmin)/(xmax-xmin)+ymin,其中xmin为样本数据中最小值,xmax为样本数据中最大值,ymax和ymin分别取1和-1,经过处理的数据均映射到[-1,1]之间,在matlab中是通过“mapminmax”函数实现的。如下表2所示的,就是发动机故障诊断数据归一化处理后的结果。

表2

(22)利用隐含层节点数确定的经验公式计算隐含层节点数频繁出现的区间,经验公式为:

(m1+m2)/2≤m1≤(m1+m2)+10

其中,m1为输入层节点数,m2为输出层节点数,n1为隐含层节点数。这样就可以得到隐含层节点数频繁出现的区间,在此基础上再进一步确定一个准确的节点数个数。在本例发动机故障诊断中,输入层节点数m1=8,输出层节点数m2=4,则可以由经验公式可以得到一个隐含层节点数频繁出现的区间[6,22]。

(23)采用平方分数法进一步确定隐含层节点数。所述平方分数法的基本形式为cn=n2,cn+1=(n+1)2,而最终得到的数列平方分数法是用来确定隐含层节点数的方法,是由斐波那契数列和黄金分割法得到的启发,再通过结合一维搜索的概念设计出来用于确定节点数的新方法。所述平方分数法确定隐含层节点数的具体步骤如下:

(31)给定最终的不确定区间长度λ>0,以及步骤(22)中获得的初始区间[a1,b1],根据来确定迭代的最小次数n,然后计算u1=a1+(1-f1)(b1-a1),v1=a1+f1(b1-a1),区间中点标志位

(32)比较u1、v1大小,若u1<v1,则维持步骤(31)的u1、v1计算值,若u1>v1,则令u1=a1+f1(b1-a1),v1=a1+(1-f1)(b1-a1)。令参数k的初始值为1,进入迭代计算。

(33)比较e(uk)、e(vk)、e(mid)三者的值,若e(mid)最小,则收敛区间为[uk,vk]。否则转步骤(34)。

(34)若e(uk)>e(vk),则收敛区间为[uk,bk],转步骤(35),否则,收敛区间为[ak,vk],转步骤(36),其中e为数据输出误差,其中e的计算公式为:数据输出误差e=输出数据(t)-输入数据(x)经神经网络训练后得到的输出数据(t’);

(35)令ak+1=uk和bk+1=bk,进一步令uk+1=vk和vk+1=ak+1+(1-fn+1-k)(bk+1-ak+1),比较uk+1、vk+1大小,若uk+1<vk+1,则维持二者的计算值,若uk+1>vk+1,则调换二者的值。判断k是否达到n,若k=n,则转步骤(38);否则计算e(vk+1)且转至步骤(37)。

(36)令ak+1=ak和bk+1=vk,进一步令vk+1=uk和vk+1=ak+1+(1-fn+1-k)(bk+1-ak+1),若k=n,转步骤(38);否则计算e(uk+1)且转至步骤(37);

(37)令k=k+1,转步骤(33);

(38)令un=un-1和vn=un-1+ε,其中ε为计算精度,ε>0。若e(un)>e(vn),则令an=vn和bn=bn-1,否则若e(un)≤e(vn),令an=an-1和bn=un,停止,则最终的隐含层最佳节点数落在了区间[an,bn]中;

(39)以上步骤即可算出最后的节点数。但在最佳区间[an,bn]内,穷举法可作为补充,根据输出数据误差的最低点确定最佳隐含层节点数。

根据上述平方分数法确定隐含层节点数,本例中取不确定区间长度λ=0.5,根据步骤(22)中得到的a1=6,b1=22,则cn+1≥32,确定最小迭代次数n=5。进入迭代计算,在经过多次迭代计算以后,最终得到最佳隐含层节点数为13。如果由第三次迭代中得到第三次收敛区间[12,13],根据隐含层节点数为正整数的条件,在第三次区间中采用穷举法,则无需再进一步验证k>3的步骤,也可以得到最佳隐含层节点数为13。如下表3所示,取误差最小值对应的隐含层节点数,即min{e(12),e(13)},通过对比得到最佳的隐含层节点数为13。

表3

为了防止在区间[6,10]和[18,22]之间出现数据的突变,故增加了一个验证点6和22,最后依然得出最佳隐含层节点数为13。不同隐含层节点数对应的误差折线图如图2所示。

(3)根据已有的故障数据训练bp神经网络模型。采用具有合理算力的处理器,利用采集到的故障数据对步骤(2)中建立的bp网络模型进行训练。计算软件可以采用matlab,在使用matlab对数据进行bp网络训练时,输入层的传输函数为purelin,隐含层的传输函数为s型函数,训练过程采用收敛速度快且能有效避免陷入局部最小化的l-m算法,学习率设置的是0.05,目标误差0.0001。

(4)利用训练得到的bp神经网络模型,对采集的发动机数据进行分析,确定数据所对应的故障原因。以采集的发动机数据作为输入,通过上述步骤所建立的bp神经网络模型进行分析计算,根据模型的输出来确定故障原因。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1