旋转机械在运行中的故障率较高,使得故障诊断得到广泛重视。目前,常见的故障诊断方法主要包括振动信号分析,声学信号分析,轴承温度监测等。由于振动信号具有易于采集和分析的优点, 基于振动信号的故障诊断方法应用最为广泛。传统时频域的特征提取方法往往不能有效提取隐藏的故障特征,导致故障识别率降低。由于在不同位置发生故障时,故障冲击引起的系统响应不同,从而使得振动信号的混乱程度有所不同。基于熵值理论的分析方法可以不经过信号的分解或变换,直接度量信号的复杂度,完成不同故障的识别。故障诊断本质是一个分类问题,解决这类问题主要有两步:1.利用熵的方法从信号中提取信息,即信号的熵值为故障特征;2.基于提取的熵值,利用机器学习方法作为分类器进行识别。
支持向量机SVM是机器学习中非常优秀的算法,在解决小样本问题上具有出色的性能。然而,SVM的性能受其参数的影响。传统的依靠人工经验选取和网格试错法都难以很好地解决。群智能优化算法是一种很有吸引力的算法,可以在保持计算成本合理的情况下解决SVM参数的选择问题,提高SVM的分类性能和泛化能力。本文利用matlab自带的SVM分类器,省去了安装第三方工具箱的繁琐,避免了安装不成功的风险,通过群智能优化算法选择SVM合适参数,解决分类问题。
本期推出近似熵、样本熵、模糊熵、排列熵、散布熵共5种熵结合SVM进行故障诊断。表面上得到5种诊断方法,实际上这些熵随便排列组合就有几十种!!!
基于熵的故障诊断,知网上有很多,理论知识这里不在赘述。参考文献(已标注发表年份):
【1】近似熵:Pincus, and M. S. . "Approximate entropy as a measure of system complexity. " Proceedings of the National Academy of Sciences of the United States of America 88.6(1991):2297-2301
【2】样本熵:J. S. Richman and J. R. Moorman, “Physiological time-series analysis using approximate entropy and sample entropy,” American Journal of Physiology-Heart and Circulatory Physiology, vol. 278, no. 6, pp. H2039–H2049, Jun. 2000, doi: 10.1152/ajpheart.2000.278.6.H2039
【3】模糊熵:Chen, W. , et al. "Characterization of Surface EMG Signal Based on Fuzzy Entropy." IEEE transactions on neural systems and rehabilitation engineering: a publication of the IEEE Engineering in Medicine and Biology Society 2(2007):15.
【4】排列熵:C. Bandt and B. Pompe, “Permutation Entropy: A Natural Complexity Measure for Time Series,” Phys. Rev. Lett., vol. 88, no. 17, p. 174102, Apr. 2002, doi: 10.1103/PhysRevLett.88.174102.
【5】散布熵:M. Rostaghi and H. Azami, “Dispersion Entropy: A Measure for Time-Series Analysis,” IEEE Signal Process. Lett., vol. 23, no. 5, pp. 610–614, May 2016, doi: 10.1109/LSP.2016.2542881.
02. 实操
数据集
本文使用诊断任务中经典的凯斯西储大学CWRU数据集。随机选择了5类状态,选用DE端的振动数据,暂且命名为正常,故障1,故障2,故障3,故障4。设置每个样本长度为1024,每类状态共100个样本,总样本大小为:500*1024。即样本数*样本长度。
样本分割设置了重叠个数,可以随意选择重叠个数进行样本划分。非重叠即为重叠个数为0的情况,具体的原理如下:
非重叠:
重叠:
特征提取
总样本大小为:500*1024。计算每个样本的熵值,形成500*1的特征空间,将特征输入到后续的分类器中。这些熵可随便排列组合,那么特征空间就是500*n,n取决你选的特征个数。
SVM分类器
利用Matlab自带了SVM分类器fitcecoc函数用于多分类任务(类别数>2),利用fitcsvm用于二分类任务。详细信息请参考matlab的阅读文档:
https://www.mathworks.com/help/stats/fitcecoc.html
本文选择径向基核函数(RBF)作为SVM的核函数,因此,SVM待选择的参数有两个:惩罚系数C和核参数g。k折交叉验证的误差作为优化目标函数。
优化算法
以2023年发表在中科院1区SCI上的成吉思汗鲨鱼优化算法(Genghis Khan shark optimizer,GKSO)(源码),和受欢迎的灰狼优化算法(GWO)(源码)作为例子。前期也推出了多种统计指标(一网打尽优化算法的8种统计指标,助力提升论文录用率(附Matlab代码)),在SVM参数优化中继续使用。
诊断流程
基于近似熵、样本熵、模糊熵、排列熵、散布熵和优化支持向量机SVM的机械故障诊断流程图大致如下:
结果展示:
PE不同状态对比
混淆矩阵
分类结果图
箱型图boxplot
收敛曲线
多次运行结果保存在Optimal_results中。这里考虑快速验证代码和算法,仅运行了2次,可根据实际需要修改。