image

更智能的电子邮件,更高效的业务。自动标记、解析并即时响应询价、报价、订单等。

查看演示

利用生存分析增强飞机引擎的预测性维护

November 4, 2024
图像

The aviation industry relies heavily on predictive maintenance to keep operations smooth, safe, and cost-effective. One of the most effective tools for this is survival analysis, which estimates the Remaining Useful Life (RUL) of aircraft engines. Using historical maintenance and failure data, survival analysis can help MRO (Maintenance, Repair, and Overhaul) teams plan proactive maintenance before failures occur, potentially saving costs and improving aircraft uptime. In this article, we will walk through how to use survival analysis with Python’s Lifelines library to estimate engine RUL and make data-driven maintenance decisions.

介绍

为什么要用生存分析进行预测性维护?

生存分析起源于医疗保健领域,用于估计患者的生存时间,但它可以应用于任何需要预测“事件发生时间”的领域。在航空领域,“事件发生时间”可能指的是预测引擎故障发生的时间或下一次必要维护间隔。使用生存分析进行预测性维护提供了几个优势:

  1. 主动维修: 评估引擎寿命以防止计划外停机。
  2. 优化的维护间隔:根据实际使用情况和历史数据安排维护,而不是固定的间隔。
  3. 成本削减:通过在关键故障发生前采取措施,减少成本高昂的应急维修。

生存分析基础:Kaplan-Meier估计器

Kaplan-Meier估计器是生存分析中最常用的工具之一。它计算超过给定时间点的生存概率,并能处理被删失数据(例如,像故障这样的事件尚未发生的情况)。这对于MRO团队来说是理想的,因为他们可以估计仍在服役的引擎的生存概率,并预测未来的维护需求。

让我们深入研究代码!

第一步:设置您的环境

首先,确保你已经安装了必要的Python包。你需要安装pandas和lifelines库。

pip install pandas lifelines

步骤2:使用Kaplan-Meier估计器计算生存概率

我们现在可以使用 lifelines 库中的 Kaplan-Meier 估计器来分析引擎的生存概率。这个估计器将有助于预测引擎持续运作超过特定小时数的可能性。

from lifelines import KaplanMeierFitter import matplotlib.pyplot as plt
# 实例化KaplanMeierFitter模型
kmf = KaplanMeierFitter()

# 使用数据拟合模型
kmf.fit(durations=engine_df['Operating_Hours'], event_observed=engine_df['Event'])
# 绘制生存函数 plt.figure(figsize=(10, 6)) kmf.plot_survival_function() plt.title("发动机寿命的Kaplan-Meier生存估计") plt.xlabel("运行时间") plt.ylabel("生存概率") plt.grid() plt.show()

生存函数图为我们清晰地展示了随着运行时间的增加,生存概率是如何下降的。曲线上的每一个下降代表了一个观察到的故障,而平稳的部分则代表没有发生故障的时期。

步骤3:解读Kaplan-Meier结果

Kaplan-Meier 曲线显示了引擎超过特定运行时间的存活概率。例如,如果曲线在 3,000 小时显示出 0.8 的存活概率,这意味着有 80% 的机会引擎会持续运行超过 3,000 小时。这些洞察使得 MRO 团队能够在达到关键故障点之前安排维护。

步骤4:估算预测性维护的平均生存时间

平均存活时间提供了大多数引擎需要维护或可能失败的估计时间。这可以指导维护间隔的决策。

# 获取平均存活时间(预期寿命)mean_survival_time = kmf.median_survival_time_
print(f"预计中位存活时间:{mean_survival_time}小时")

这个结果告诉我们预计有50%的发动机在运行多少小时后需要维护。

步骤5:高级场景 – 比较引擎类型

如果您的数据集包含多种引擎类型,您可以比较这些组之间的生存曲线。例如,我们可以添加一个用于引擎类型的列,并比较不同类型的生存估计。

# 更新数据集,为比较引擎添加发动机类型 engine_df['Engine_Type'] = ['A', 'A', 'B', 'B', 'A', 'A', 'B', 'B', 'A', 'B']
# 实例化Kaplan-Meier模型
kmf_a = KaplanMeierFitter()
kmf_b = KaplanMeierFitter()

# 为发动机类型A拟合并绘制生存函数 plt.figure(figsize=(10, 6)) kmf_a.fit(engine_df[engine_df['Engine_Type'] == 'A']['Operating_Hours'], event_observed=engine_df[engine_df['Engine_Type'] == 'A']['Event'], label='发动机类型 A') kmf_a.plot_survival_function() # 为发动机类型B拟合并绘制生存函数 kmf_b.fit(engine_df[engine_df['Engine_Type'] == 'B']['Operating_Hours'], event_observed=engine_df[engine_df['Engine_Type'] == 'B']['Event'], label='发动机类型 B') kmf_b.plot_survival_function() plt.title("Kaplan-Meier生存估计按发动机类型") plt.xlabel("运行小时") plt.ylabel("生存概率") plt.legend() plt.grid() plt.show()

比较不同引擎类型的生存曲线可以揭示某一类型是否通常比另一类型更耐用,帮助维修、维护和大修(MRO)团队决定采购、优先分配资源或根据引擎特性调整维护间隔。

步骤6:使用生存分析来提出维护建议

通过生存分析,我们可以根据生存概率而不是固定的时间表来设置维护间隔。例如,如果生存概率在4000小时显著下降,可以在此时间前后安排维护,以最小化故障风险。

# 计算在特定时间的生存概率 time_point = 4000 survival_prob_at_time_point = kmf.predict(time_point)
print(f"在 {time_point} 小时运行时间的生存概率:{survival_prob_at_time_point:.2f}")

这个结果提供了在特定时间的生存概率,帮助您确定关键的维护点。如果概率低,理想情况下应在这个阈值之前进行维护。

结论

生存分析为MRO团队提供了强大的洞察力,用于主动的、数据驱动的维护规划。通过估计发动机的剩余使用寿命,我们可以避免意外故障,并优化维护任务的时机。虽然我们在这里展示了Kaplan-Meier估计器,但生存分析还包括更高级的技术(如Cox比例风险模型)用于复杂的预测性维护场景。

关键要点

  1. 主动维护: 评估引擎寿命以防止意外故障。
  2. 数据驱动的决策:根据实际引擎使用情况和存活概率来做出维护决策。
  3. 成本优化:通过避免被动维修和优化零部件采购来减少成本。

预测性维护在航空业是一个游戏规则改变者,它允许航空公司和MRO团队提高效率和可靠性。在ePlaneAI,我们专注于利用先进的ML模型,如生存分析,来转变MRO操作并保持您的飞机在空中。

0comments
Latest Articles

航空维修趋势可能在不确定的情况下获得动力

飞机的服役时间越来越长,供应链如同火药桶,技术也在一夜之间不断革新。探索日益增长的维护趋势,以及它们对于努力保持飞行和盈利的运营商的意义。

一位身穿牛仔夹克、头戴帽子的机械师抬头看着一架老旧飞机的引擎,展现了在不断变化的行业需求中航空维修的人性化一面。

矢量数据库。解锁航空业的非结构化智能。

向量数据库索引高维嵌入向量,以支持对非结构化数据的语义搜索,这与使用关键字精确匹配的传统关系或文档存储不同。向量存储管理表示文本或图像语义的密集数字向量(通常为 768-3072 维),而不是表格或文档。在查询时,数据库使用近似最近邻 (ANN) 搜索算法找到查询向量的最近邻。例如,基于图的索引(如分层可导航小世界 (HNSW))构建分层邻近图:较小的顶层用于粗略搜索,较大的底层用于细化(见下图)。搜索“跳”到这些层 - 快速定位到一个集群,然后再详尽地搜索本地邻居。这在召回率(找到真正的最近邻)和延迟之间进行了权衡:提高 HNSW 搜索参数 (efSearch) 会增加召回率,但会增加查询时间。

图像

供应链门户。一个卖家。多个买家。完全控制。

航空供应链门户本质上是一个为航空供应商及其客户量身定制的私人电子商务平台。它专为航空公司、MRO 和零部件分销商设计,将库存、采购和供应商协作集中到一个安全的系统中。实际上,OEM 或零部件分销商会“贴牌”此门户,并邀请其认可的买家(航空公司、MRO 等)登录。这些买家可以看到完整的零部件目录(从卖家的 ERP 实时同步),并且可以像在大型在线市场上一样搜索、筛选和比较商品。然而,与公开的公共交易所不同,这个门户是私有的——平台上只有一家供应商(有许多买家),使公司能够完全控制定价、库存和用户访问。

图像

库存人工智能。预测每个航空零件的需求。

库存AI的数据工程和准备

有效的库存AI始于强大的数据管道。所有来自企业系统和外部来源的相关数据都必须经过汇总、清理和转换,以供AI使用。这包括库存数据(历史销售额、当前库存水平、零件属性)和需求驱动因素(市场趋势、维护计划、促销等)。通过将内部ERP记录与外部因素(例如行业趋势或季节性模式)相结合,该模型可以全面了解需求影响因素。数据管道中的关键步骤通常包括:

  • 数据提取与集成:从 ERP 系统(例如 SAP、Oracle、Quantum)和其他来源(供应商数据库、市场数据)提取数据。该平台支持与各种航空系统的自动连接,确保数据顺畅流入。例如,历史使用情况、交货时间和未完成订单会与外部数据(例如全球机队利用率或宏观经济指标)合并。
  • 数据转换与清理:数据采集后,需要进行清理和标准化。这包括处理缺失值、规范化单位(例如飞行小时数、周期数),以及将数据结构化为有意义的特征。可以应用自定义转换和数据仓库自动化来准备 AI 就绪的数据集。目标是创建一个统一的数据模型,用于捕捉库存状态(现有数量、位置、成本)和上下文变量(例如需求协变量、供应商交付周期)。
  • 数据加载至云端:准备好的数据将被加载至可扩展的云数据平台。在我们的架构中,Snowflake 被用作中央云数据仓库,可以接收批量或实时数据流,并处理海量交易数据。Snowflake 的即时弹性特性支持按需扩展存储和计算能力,因此即使是海量的 ERP 数据集和预测功能也能高效处理。这个基于云端的存储库是所有下游分析和机器学习的唯一真实来源。
  • 业务定制微调:关键的准备步骤是将数据和模型参数与每家航空企业的细微差别进行匹配。每家航空公司或维护、维修和大修 (MRO) 都可能拥有独特的消费模式、交付周期限制和服务水平目标。库存人工智能系统会根据客户的历史数据和业务规则对其模型进行“微调”,从而有效地学习客户的需求节奏和库存策略。这可能涉及使用公司部分数据校准预测模型,或调整优化约束条件(例如关键 AOG 部件的最低库存水平)。通过根据业务定制人工智能,预测和建议将变得更加准确,并与客户的运营更加相关。

持续数据更新:库存 AI 并非一次性分析,而是持续学习。数据管道会定期更新(例如每日或每小时),将新的交易数据(销售、发货、询价等)输入模型。这确保 AI 始终根据最新的库存和需求状态做出决策。自动化数据质量检查和监控机制可以捕捉输入数据中的异常,避免垃圾数据导致错误的预测。总而言之,云端集成、干净数据的坚实基础,使 AI 模型能够发挥最佳性能,并适应不断变化的情况。

图像
More Articles
Ask AeroGenie