基于BP 神经网络的发动机故障诊断算法研究
2020-06-28林海涛朱宝全马小涵
林海涛 朱宝全 马小涵
(东北林业大学,黑龙江 哈尔滨150040)
1 概述
现代发动机涉及机械传动、电子技术、计算机控制、热力学等多门学科[1],一旦发生故障不易精确快速诊断。发动机故障诊断技术意义重大,对于使用者来讲,及时发现故障可以有效避免事故风险,提高发动机的运行条件和使用寿命,并能大大减小出现严重故障的检修费用[2];对于社会来讲,及早排除故障可以使发动机在更好工况运行,大大提高在经济工况区域工作的机会,而且对于减小排放污染也大有贡献[3]。现代智能化诊断技术既需要理论支撑,又需要技术支持[4]。在进行故障诊断之前需要对诊断对象有充分了解,根据目的选择合适的诊断方法,选用合适的仪器,提前做好计划方案。
发动机作为汽车的心脏,准确高效地进行发动机故障诊断对于保障汽车安全性、提高经济效益具有重大意义。传统诊断方法劳动强度大,效率低下,正确率不高,随着人工智能方法的发展,神经网络广泛应用于故障诊断方面,相关方面的理论研究也越来越成熟[5]。BP 神经网络只需要采集与故障工况相关的特征参数,神经网络即可自行学习,建立特征参数与故障工况的对应关系。本文介绍了发动机故障诊断的背景与发展,并进行了实验数据采集,提出了BP 神经网络进行故障诊断的方案,从中挑选最佳的BP 神经网络。
2 算法设计
基于BP 神经网络的发动机故障诊断算法整体流程如图所示。首先进行数据采集,并将数据分为训练样本和测试样本两个子集,并对两个数据集进行归一化等预处理,将训练样本放入BP 神经网络中进行不断训练,训练过程中不断调整网络参数,计算收敛情况和预测误差,当精度满足预期要求时,停止训练,输出训练后的BP 神经网络模型。
3 BP 神经网络诊断模型
本文网络层数选择为3。输入层节点数等于神经网络输入向量的维数,本文提取11 个特征参数作为网络输入向量,因此可确定网络输入层节点数为11,输出层节点数等于输出向量的维数,网络输出为9 种发动机工况,因此输出层节点数确定为8。
隐含层节点数,通常根据经验公式进行估计:
其中,m 和n 分别为输出层和输入层的神经元个数,a 是[0,10]之间的常数。
由于经验公式得到的只是一个范围,如果要确定最佳的隐含层节点数,可以在训练样本不变的条件下,比较不同隐含层节点数的性能好坏,从而选择出最佳值。根据公式(1),初步选取隐含层节点数[4,14]之间的整数,最后对比网络误差选取最佳值。
基于BP 神经网络的发动机故障诊断算法
BP 网络需要对迭代的初始值进行设置,初始值过大或过小都会对性能产生影响,初始值过大,可能会在极大程度上影响学习效率,通常设置一个接近于0 的随机数作为初始值。误差精度通常根据经验先选择一个合适的值,如果不能满足预期要求可以继续比较调整,初选误差精度为10-3。网络最大迭代次数设置为2000。
最终选用LM算法对网络学习训练,得到隐含层节点数为11 时网络误差最小,因此确定隐含层节点数为11。由于BP 神经网络改进训练算法有四种:动量BP 算法、VLBP 算法、拟牛顿算法和LM算法。本文定隐含层节点数为11,分别用不同训练算法比较优劣,结果显示选用LM算法网络误差最小,收敛速度最快。
4 结论
为提高发动机故障诊断的准确度和诊断效率,本文开展一种基于BP 神经网络的发动机故障诊断算法研究,本文针对故障诊断进行了BP 神经网络的设计,选用LM算法对网络学习训练,得到隐含层节点数为11 时网络误差最小,因此确定隐含层节点数为11。由于BP 神经网络改进训练算法有四种:动量BP算法、VLBP 算法、拟牛顿算法和LM算法。本文定隐含层节点数为11,分别用不同训练算法比较优劣,结果显示选用LM 算法网络误差最小,收敛速度最快,因此确定最佳的BP 神经网络方案为11-11-8 结构,采用LM算法的BP 神经网络。利用训练后的神经网络进行故障诊断,诊断正确率达到94%。