• 基于机器学习和深度学习的C-MAPSS涡扇发动机剩余寿命RUL预测(Python,Jupyter Notebook环境)


    涡扇发动机全称为涡轮风扇发动机,是一种先进的空中引擎,由涡轮喷气发动机发展而来。涡扇发动机主要特点是首级压缩机的面积比涡轮喷气发动机大。同时,空气螺旋桨(扇)将部分吸入的空气从喷射引擎喷射出来,并将其向后推动,以达到推进的目的。

    涡扇发动机结构是一种特殊的引擎结构,它在涡轮喷气发动机的基础上再增加了 1-2 级低压(低速)涡轮,这些涡轮可以驱动一定数量的风扇,消耗掉一部分涡喷发动机(核心机)的燃气排气动能,从而进一步降低燃气排出速度,提高引擎的性能。从前至后,涡扇发动机由风扇,压气机,燃烧室,导向叶片,高压低压涡轮,加力燃烧室和尾喷管组成。

    目前大多数论文的实验中使用的数据集是美国国家航空航天局的 C-MAPSS 数据集。C-MAPSS 数据集是由模拟航空发动机的模拟软件生成。模拟发动机的结构图如下:

    主要部件有低压涡轮(low pressure turbine,LPT)、高压涡轮(high pressure turbine,HPT)、高压压气机(high pressure compressor,HPC)、低压压气机(low pressure compressor,LPC)、风扇(fan)、喷嘴(nozzle)、燃烧室(combustor)、低压转子转速(N1)和高压转子转速(N2)等。风扇在正常飞行条件下工作,将空气分流至内、外涵道。LPC 和 HPC 通过增温增压技术将高温、压力混合气体输送到 combustor。LPT 可以有效减少空气的流速,大大提高飞机煤油的化学能转换效率。而 HPT 则是利用高温、高压气体对涡轮叶片施加做功,从而产生机械能。N1、N2 和 nozzle 的应用大大提升了发动机的燃烧效率。

    监控涡扇发动机状况为21个传感器。由于传感器的单位不同,传感器记录的数值的量级也有所差异,位于10的-2次方到10的3次方之间。例如,燃烧室油气比数值的量级是10的-2次方;低压涡轮冷气流量数值的量级是10的1次方。表2-2描述了NASA的C-MAPSS数据集。由于不同的操作条件和故障模式,数据集可以分为四个子数据集,依次是FD001、FD002、FD003和FD004。每个子数据分为训练集和测试集,记录了发动机的3种操作设置和21个传感器数据。每个子数据集通过.txt文件单独保存。在.txt文件中,每一行记录了一个引擎某个时间刻的3种操作设置和21个传感器数据。关于故障模式和操作条件方面,FD001和FD002子数据集包含一种故障模式(高压压气机退化),FD003和FD004包含两种故障模式(高压压气机退化和风扇退化);FD001和FD003只有一种操作条件,FD002和FD004有六种操作条件。由于FD002和FD004子数据集引擎的操作环境复杂多变,FD002和FD004子数据集中RUL的预测更加困难。

    可见,涡扇发动机数据集包含大量的按时间顺序采集的传感器数据,这些数据包括发动机温度、压力、振动等多个方面的指标。并且涡扇发动机可能会出现多种故障模式。这适合用时间序列模型去对涡扇发动机的剩余使用寿命做预测。

    鉴于此,采用机器学习和深度学习对C-MAPSS涡扇发动机进行剩余使用寿命RUL预测,Python代码,Jupyter Notebook环境,方法如下:

    (1)VAR with LSTM

    (2)VAR with Logistic Regression

    (3)LSTM (Lookback=20,10,5,1)

    LSTM Lookback=10的结果如下:

    1. final_pred = []
    2. count = 0
    3. for i in range(100):
    4. j = max_cycles[i]
    5. temp = pred[count+j-1]
    6. count=count+j
    7. final_pred.append(int(temp))
    8. print(final_pred)
    9. fig = plt.figure(figsize=(18,10))
    10. plt.plot(final_pred,color='red', label='prediction')
    11. plt.plot(y_test,color='blue', label='y_test')
    12. plt.legend(loc='upper left')
    13. plt.grid()
    14. plt.show()
    15. print("mean_squared_error >> ", mean_squared_error(y_test,final_pred))
    16. print("root_mean_squared_error >> ", math.sqrt(mean_squared_error(y_test,final_pred)))
    17. print("mean_absolute_error >>",mean_absolute_error(y_test,final_pred))

    VAR with Logistic Regression结果:

    1. fig = plt.figure(figsize=(18,10))
    2. plt.plot(logistic_pred,color='red', label='prediction')
    3. plt.plot(y_test,color='blue', label='y_test')
    4. plt.legend(loc='upper left')
    5. plt.grid()
    6. plt.show()

    VAR with LSTM结果:

    1. fig = plt.figure(figsize=(18,10))
    2. plt.plot(lstm_pred,color='red', label='prediction')
    3. plt.plot(y_test,color='blue', label='y_test')
    4. plt.legend(loc='upper left')
    5. plt.grid()
    6. 完整代码可通过知乎学术咨询获得:
    7. https://www.zhihu.com/consult/people/792359672131756032?isMe=1
    8. plt.show()

    担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

  • 相关阅读:
    Yolov5代码解析(输入端、BackBone、Neck、输出端))
    HTML基本标签。
    如何防范 DAO 中的治理攻击?
    JAVA设计模式第十讲:SPI - 业务差异解决方案
    电商平台API接口采集电商平台淘宝天猫京东拼多多数据获取产品详情信息,销量,价格,sku案例
    2023国赛高教社杯数学建模C题思路分析
    使用 Python 和 Monai 来扩充您的数据集以进行肿瘤或器官分割
    使用yolov5训练自己的目标检测模型
    推荐系统方法梳理
    动手学深度学习pytorch版练习解答-3.6softmax回归的从零开始实现
  • 原文地址:https://blog.csdn.net/weixin_39402231/article/details/139698401