💥💥💞💞欢迎来到本博客❤️❤️💥💥




🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


⛳️座右铭:行百里者,半于九十。



💥1 概述

本文提出了一种使用在线演进方法进行动态系统故障识别的方法论。所提出的方法分为三个阶段:预处理、处理和后处理。我们方法的核心部分是处理过程本身,在这个过程中,我们使用一种名为AutoCloud的在线学习演进算法来对不同类型的故障进行聚类。该提议已经通过在试验规模上进行的实际水平控制过程的数据进行验证。获得的结果表明我们的提议对于动态系统的故障识别是合适的。

介绍
工业过程的故障检测和诊断(FDD)技术在过去几十年中受到关注,而在过去几年中,越来越多的研究表明了该领域的相关性(Precup等,2015年)。这种兴趣很大程度上是由于工业过程的复杂性增加,以满足市场需求,提高生产连续性和过程可靠性,同时要在更严格的环境和安全限制下运行(Bezerra等,2016年)。例如,根据研究,人为操作错误导致工业环境中约70%至90%的事故(Venkatasubramanian等,2003年,Wang和Guo,2013年)。

因此,故障检测和识别技术的实施旨在保证现代工业过程的效率和质量,因为检测是识别是否发生故障的任务,而故障识别是指确定工业过程操作可能遭受的各种故障类型、位置和检测时间(Precup等,2015年)。

FDD基本上可以采用两种方法:基于模型和基于数据,其中基于模型的方法是从过程动态知识中发展而来,而基于数据的方法基本上使用过程变量的数据。更近期的研究采用了基于数据的方法,因为它们不依赖于增强模型来描述过程动态,并且目前可以获得数据。

目前,大多数基于数据的FDD方法都使用一些机器学习技术。最早采用机器学习技术的基于数据的FDD方法采用离线学习策略,例如神经网络(Ayoubi,1994年,Sorsa等,1991年)。更近期的方法使用了更复杂的神经网络模型,例如Zhao等人(2018年)采用了一种称为长短期记忆(LSTM)的递归神经网络,同时结合了一种称为批量归一化(BN)的重参数化技术(Ioffe和Szegedy,2015年)。

这些采用离线策略的研究在整个数据集事先可用时表现出良好的结果。然而,工业环境中的数据通常不是完全事先可用的。通常情况下,这些数据是持续获取的,需要进行处理以及时识别故障,避免诸如工作事故、意外停机、设备寿命缩短和环境问题等不良后果。处理连续获得的数据的另一个问题是,它们在理论上具有无限的大小,这使得难以进行离线训练的存储和处理变得困难。

因此,最近的研究更加专注于使用在线无监督学习策略进行FDD应用,因为这些策略更适合于在实际场景中,不是所有可能的故障都是事先已知的情况。值得强调的是,通过将新的在线样本选择标准纳入增量学习,可以实现在线学习。

在具有在线学习的模糊方法方面,Lemos等人(2013年)讨论了一种基于增量聚类过程生成模糊规则的方法,用于描述检测到的新操作状态,而Liu等人(2019年)则提出了一种基于在线学习的Fisher判别分析(FDA)技术。在Rodríguez-Ramos等人(2018年)中,采用的方法结合了面向密度的模糊C均值(DOCFM)、核模糊C均值(KFCM)和优化算法,用于工业过程的故障检测,采用在线学习方式,但仍然需要进行故障检测的离线训练阶段。在另一个结合离线和在线学习策略的例子中,Silva等人(2020年)使用了基于案例推理(CBR)技术结合人工免疫系统(AIS)来进行电机运行的故障检测和诊断。

聚类算法应该最大程度地增加同一聚类中样本之间的相似性,并最小化不同聚类中样本之间的相似性,考虑到一些相似性度量。通常,这些算法反映了数据集中的隐含模式。通过获取数据中隐含的与FDD问题相关的模式,可以识别不同类型的故障。根据Hou和Xiao(2017年)的说法,传统聚类方法(如K均值、归一化切割(NCuts)和DBSCAN(基于密度的空间聚类应用与噪声))在FDD中的局限性在于需要关于数据集的信息的先验知识,例如聚类数量、邻域半径、最小聚类大小等。此外,这些方法无法适应数据集的变化。

动态系统故障诊断的不断演进方法研究

摘要

随着工业过程的复杂性不断增加,动态系统故障诊断技术的重要性日益凸显。本文提出了一种使用在线演进方法进行动态系统故障识别的方法论,该方法分为预处理、处理和后处理三个阶段,核心在于使用一种名为AutoCloud的在线学习演进算法对不同类型的故障进行聚类。通过实际水平控制过程的数据验证,结果表明该方法对于动态系统的故障识别是合适的。

1. 引言

工业过程的故障检测和诊断(FDD)技术在过去几十年中受到广泛关注。这种兴趣很大程度上是由于工业过程的复杂性增加,以满足市场需求,提高生产连续性和过程可靠性,同时要在更严格的环境和安全限制下运行。例如,人为操作错误导致工业环境中约70%至90%的事故。因此,故障检测和识别技术的实施旨在保证现代工业过程的效率和质量。

2. 动态系统故障诊断方法概述

FDD基本上可以采用两种方法:基于模型和基于数据。

  • 基于模型的方法:从过程动态知识中发展而来,通过建立动态系统的数学模型,根据模型对系统状态进行预测和评估,从而实现故障诊断。主要包括参数估计法、状态估计法和系统辨识法等。然而,建立准确的模型难度较大,且模型可能无法适应系统的动态变化。
  • 基于数据的方法:不依赖于系统数学模型,直接从系统输入和输出数据中提取特征,利用机器学习、深度学习等技术进行故障诊断。随着大数据和人工智能技术的快速发展,基于数据的方法在诊断精度和自动化程度上有了显著提升。

3. 在线演进方法在动态系统故障诊断中的应用

3.1 方法论概述

本文提出的方法分为三个阶段:预处理、处理和后处理。

  • 预处理阶段:对采集到的原始数据进行清洗、去噪、归一化等处理,提高数据质量。
  • 处理阶段:使用AutoCloud在线学习演进算法对不同类型的故障进行聚类。该算法能够适应数据集的变化,无需关于数据集的先验知识,如聚类数量、邻域半径等。
  • 后处理阶段:对聚类结果进行进一步分析和处理,以识别故障类型、位置和检测时间。

3.2 AutoCloud算法原理

AutoCloud算法是一种基于在线学习的聚类算法,其核心思想是通过增量学习来适应数据集的变化。算法在处理新数据时,会根据新数据与现有聚类中心的相似性来决定将其分配到哪个聚类或创建新的聚类。这种增量学习的方式使得算法能够实时更新聚类结果,从而适应动态系统的故障变化。

3.3 实验验证与结果分析

通过在实际水平控制过程的数据上进行验证,结果表明AutoCloud算法能够有效地对不同类型的故障进行聚类,且聚类结果具有较高的准确性和稳定性。与传统的聚类算法相比,AutoCloud算法无需关于数据集的先验知识,且能够适应数据集的变化,因此在动态系统故障诊断中具有更大的优势。

4. 动态系统故障诊断的挑战与未来趋势

4.1 挑战

  • 数据质量问题:工业系统运行数据可能存在噪声、缺失等质量问题,影响故障诊断效果。
  • 故障特征提取困难:动态系统故障特征不明显,难以提取。
  • 实时性要求:动态系统需要实时诊断,对算法的计算效率要求较高。

4.2 未来趋势

  • 结合机器学习和深度学习技术:利用机器学习和深度学习技术提高模型对复杂故障的识别能力。例如,基于卷积神经网络(CNN)和循环神经网络(RNN)的深度学习模型在图像识别和时间序列分析方面取得了显著成果,可以应用于动态系统故障诊断中。
  • 边缘计算技术的应用:边缘计算将数据处理能力部署在系统本身,减少了数据传输的需求,提升了诊断的实时性和低延迟性。通过将智能算法部署在边缘设备,结合边缘计算的能力,能够实现高效的故障诊断。
  • 多传感器数据融合:通过融合多种传感器数据,能够更全面地分析动态系统的运行状态,提高故障诊断的准确性和可靠性。

📚2 运行结果

2.1 第一种故障场景

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_聚类

编辑

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_聚类_02

编辑

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_故障诊断_03

编辑

2.2 第二种故障场景

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_故障诊断_04

编辑

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_数据_05

编辑

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_故障诊断_06

编辑

2.3 第三种故障场景

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_故障诊断_07

编辑

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_聚类_08

编辑

【故障诊断】动态系统故障诊断的不断演进方法研究(Python代码实现)_数据_09

编辑

部分代码:

#Processing
for t in data_f:teste.run(np.array(t))
#Result
result_f = teste.classIndex
result_filter_time = filterTime.filterTime(result_f,80,80)
plt.figure(figsize=(10,18)) 
sns.set(style= 'whitegrid' )
plt.subplot(311)
plt.xlabel("Time (s)")
plt.ylabel("Value")
plt.plot(data_f[:,0])
plt.plot(data_f[:,1])
plt.legend(["Normalized Pressure","Normalized Level"])
plt.title('a)')
plt.subplot(312)
plt.xlabel("Time (s)")
plt.ylabel("# group")
plt.plot(result_f)
plt.title('b)')
plt.ylim(-0.2,6.2)
plt.subplot(313)
plt.xlabel("Time (s)")
plt.ylabel("# group")
plt.ylim(-0.2,6.2)
plt.plot(result_filter_time)
plt.title('c)')
plt.savefig('result_third_scenario.png')
plt.show()
target = np.concatenate((np.zeros(5360),np.ones(1290),np.zeros(6135),2*np.ones(1100),np.zeros(6162),3*np.ones(2300),np.zeros(5707),4*np.ones(1600),np.zeros(6111)),axis=0)
print("------------------------- Result Third Fault Scenario------------------------- ")
print("Supervised metrics evaluation:")
print(classification_report(target,result_filter_time))
print("Unsupervised metric evaluation:")
print("Adjusted Rand Index:")
print(metrics.adjusted_rand_score(target,result_filter_time))
print("Homogeneity:")
print(metrics.homogeneity_score(target,result_filter_time))
print("Completeness:")
print(metrics.completeness_score(target,result_filter_time))
print("Measure v:")
print(metrics.v_measure_score(target,result_filter_time))

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Python代码、数据、文章下载