Случайный лес с поддержкой термодинамического моделирования: Объяснимая диагностика неисправностей компонентов камеры сгорания судовых дизелей

Congcong Luo a , Minghang Zhao a,* , Xuyun Fu a , Shisheng Zhong a , Song Fu b , Kai Zhang c , Xiaoxia Yu d
a Department of Mechanical Engineering, Harbin Institute of Technology, Weihai, Weihai 264209, China
b School of Mechatronics Engineering, Harbin Institute of Technology, Harbin 150001, China
c School of Mechanical Engineering, Southwest Jiaotong University, Chengdu 610031, China
d School of Mechanical Engineering, Chongqing University of Technology, Chongqing 400054, China

Аннотация

Традиционные методы интеллектуальной диагностики неисправностей судовых дизельных двигателей часто страдают от недостаточной обобщающей способности из-за нехватки обучающих выборок с неисправностями, а также от низкой интерпретируемости, поскольку они недостаточно интегрируют априорные знания о механизмах отказов. Для решения этих проблем в данной статье предлагается метод Случайного леса с поддержкой термодинамического моделирования (TSRF) .

Данный метод выявляет характеристики развития неисправностей с помощью термодинамического моделирования и интегрирует их в качестве априорных знаний в структуру модели интеллектуальной диагностики. Сначала были разработаны пять термодинамических моделей неисправностей путем точной настройки базовых параметров системы для имитации значимых признаков различных отказов. Затем, на основе результатов численного моделирования, были определены потенциальные термодинамические индикаторы, характеризующие деградацию компонентов камеры сгорания.

Отбор признаков проводился путем расчета значений SHapley Additive exPlanations (SHAP), при этом сохранялись только те переменные, которые имеют значимую корреляцию с состоянием неисправности. Наконец, оценка состояния здоровья камеры сгорания проводилась с использованием отобранных параметров. Экспериментальные результаты показывают, что предложенный метод TSRF демонстрирует отличную классификационную производительность, достигая средней точности 99,07% на наборе данных с неисправностями.

Ключевые слова:
Судовой дизельный двигатель Диагностика неисправностей Объяснимый ИИ Значения SHAP

Мотивация

В области морской инженерии и управления прогнозированием и состоянием (PHM) отрасль сталкивается с двумя давними проблемами:

  • Дефицит данных: Судовые дизельные двигатели (особенно главные двигатели океанских судов) являются сердцем судна. Серьезная поломка в море может привести к потере хода, посадке на мель или даже катастрофе. Поэтому при проектировании в них закладываются чрезвычайно высокие коэффициенты запаса прочности, и вероятность серьезных отказов сама по себе очень низка. Кроме того, в судоходной отрасли действуют строгие системы профилактического обслуживания (например, плановый ремонт по часам наработки). Подавляющее большинство изнашиваемых деталей принудительно заменяются до того, как они действительно выйдут из строя и сгенерируют данные об отказе. Это приводит к наличию большого объема данных о нормальной работе и раннем износе, но к крайней нехватке реальных данных о полных отказах или серьезных неисправностях.
  • Проблема «Черного ящика»: Поскольку модели глубокого обучения обычно непрозрачны, инженерам трудно доверять им, если невозможно объяснить физические причины неисправности. В судоходной отрасли, строго регулируемой классификационными обществами, эта непрозрачность критична. Если ИИ ошибочно диагностирует (или пропустит) задир поршня или поломку коленчатого вала, и система не сможет отследить, является ли ошибка следствием смещения данных, дефекта алгоритма или дрейфа датчика, такая невозможность отслеживания неприемлема при расследовании морских аварий.

Для решения этих задач мы предложили метод TSRF. Объединяя физические механистические модели с передовыми методами объяснимости и используя высокоточные имитационные модели для решения проблемы нехватки данных, мы гарантируем, что диагностические решения соответствуют фундаментальным принципам термодинамики.


Методология

Рабочий процесс данного исследования включает следующие четыре основных этапа (см. рисунок):

  1. Термодинамическое моделирование: Вместо того чтобы полагаться исключительно на физические испытательные стенды, мы построили высокоточную одномерную термодинамическую модель шестицилиндрового судового дизельного двигателя. Модель была строго откалибрована на основе реальных эксплуатационных данных, с погрешностью моделирования менее 5%.
  2. Внедрение неисправностей: На основе откалиброванной модели мы смоделировали пять специфических неисправностей камеры сгорания (таких как трещины в головке цилиндра, прогар поршня и т.д.) путем точной настройки физических параметров, создав набор данных, охватывающий различные степени реальных неисправностей двигателя.
  3. Отбор признаков на основе SHAP: Мы использовали значения SHAP для количественной идентификации ключевых признаков, отобрав 14 критических параметров, определяющих диагностическое решение.
  4. Классификационная диагностика: Используя этот физически обогащенный набор данных, мы обучили классификатор «Случайный лес» (RF) и добились высокоточной диагностики неисправностей.
Structure of TSRF method combining Thermodynamic Simulation and Random Forest for Explainable AI

Рис. 1: Архитектура метода TSRF.


Детали термодинамического моделирования

Для обеспечения высокой точности мы построили одномерную имитационную модель дизельного двигателя. Эта механистическая модель обеспечивает баланс между физической точностью и вычислительной эффективностью, необходимой для генерации наборов данных.

Топология модели

Система двигателя дискретизирована как сеть жидкостных трубопроводов и функциональных компонентов:

  • Основной силовой агрегат: Шестицилиндровая, двухтактная рядная конфигурация.
  • Газовоздушная система: Впускной/выпускной коллекторы (PL1, PL2) соединены сложной сетью трубопроводов.
  • Система наддува: Турбокомпрессор (TC1), соединенный с интеркулером (CO1).

Калибровка и валидация

Перед внедрением неисправностей базовая модель была строго откалибрована на основе измеренных данных.

  • Источник данных: Реальные эксплуатационные данные судна, полученные через модуль сбора данных (DCM).
  • Валидация: Отклонения ключевых параметров (таких как мощность, температура выхлопных газов) строго контролировались в пределах погрешности ±5% .
1-D thermodynamic simulation model

Рис. 2: Схема одномерной термодинамической модели дизельного двигателя.

Model Validation Results

Рис. 5: Модуль сбора данных (DCM).

Механизм внедрения неисправностей

Поскольку одномерные модели не могут напрямую отображать трехмерные структурные дефекты, мы применили метод феноменологического отображения для перевода механизмов физической деградации в эквивалентные смещения термодинамических параметров.

Тип неисправности Физический механизм Реализация моделирования
F1: Трещина ГБЦ Нарушение теплопроводности. Повышение температуры поверхности головки блока цилиндров ($T_H$) до 346°C.
F2: Прогар поршня Потеря материала и нарушение герметичности. Повышение температуры поршня ($T_P$) + незначительный прорыв газов (0.01 кг/с).
F3: Износ втулки Увеличение диаметра цилиндра из-за износа. Увеличение диаметра + сильный прорыв газов (0.03 кг/с).
F4: Износ колец Утечка газа. Регулировка массового расхода прорыва газов (0.02 кг/с).
F5: Залегание колец Увеличение трения и нарушение герметичности. Изменение диаметра цилиндра + повышение температуры втулки + прорыв газов.

Анализ интерпретируемости

Ключевая инновация данного исследования заключается в смещении фокуса с вопроса «Какая это неисправность?» на «Почему диагностирована эта неисправность?». Мы продемонстрировали эту возможность на примере анализа износа поршневых колец (F4):

  • Локальное объяснение (Каскадная диаграмма): Каскадная диаграмма раскрывает конкретную логику прогнозирования. Например, модель предсказала «износ поршневых колец», потому что тепловой поток прорыва газов (P06) и массовый расход прорыва газов (P07) имели определенные значения, что повысило вероятность прогнозирования этой неисправности. Это согласуется с физическими законами: износ колец нарушает герметичность, приводя к утечке газа (прорыву газов).
  • Глобальное объяснение (Диаграмма роя пчел): Глобальный анализ выявляет общие закономерности, усвоенные моделью. Мы обнаружили, что низкое значение давления выхлопных газов перед турбиной (P11) является сильным индикатором износа поршневых колец. С физической точки зрения это логично: изношенные кольца приводят к утечке газа из цилиндра, тем самым уменьшая энергию, доступную для привода турбины.
SHAP Analysis,including Waterfall plot, beeswarm plot, interaction plot and dependence plot

Рис. 11: Анализ неисправности износа поршневых колец (F4) на основе значений SHAP: (a) Каскадная диаграмма; (b) Диаграмма роя пчел; (c) Диаграмма взаимодействия; (d) Диаграмма зависимости.

Посмотреть код визуализации SHAP (Python)

Если вас интересуют детали реализации приведенных выше графиков, вот пример кода для создания каскадной диаграммы, диаграммы роя пчел, диаграммы взаимодействия и диаграммы зависимости.👇

import shap
import matplotlib.pyplot as plt
import numpy as np

# --- 0. Setup & Global Settings ---
plt.rcParams['font.family'] = 'Arial'
plt.rcParams['font.size'] = '24'
plt.rcParams['axes.unicode_minus'] = False

# Assumption: 'best_model' is your trained XGBoost/RF model
# Assumption: 'X_train' and 'X_test' are pandas DataFrames

# 1. Calculate SHAP values as Numpy Arrays (for Beeswarm, Dependence, Interaction)
explainer_tree = shap.TreeExplainer(best_model)
shap_values_numpy = explainer_tree.shap_values(X_train) 

# 2. Calculate SHAP values as Explanation Object (Specifically for Waterfall)
explainer_obj = shap.Explainer(best_model, X_test)
shap_values_obj = explainer_obj(X_test)


##################################################################
#                                                                #
#                      (a) Waterfall Plot                        #
#          Visualizes contribution for a single sample           #
#                                                                #
##################################################################

class_idx = 4  # Target class
sample_idx = 3 # Specific sample to explain

plt.figure()
shap.plots.waterfall(
    shap_values_obj[sample_idx, :, class_idx], 
    max_display=9, 
    show=False
)

# Customizing style
ax = plt.gca()
ax.set_xlabel(ax.get_xlabel(), fontsize=36)
ax.set_ylabel(ax.get_ylabel(), fontsize=36)
ax.spines['bottom'].set_linewidth(3)
plt.show()


##################################################################
#                                                                #
#                      (b) Beeswarm Plot                         #
#              Global summary of feature importance              #
#                                                                #
##################################################################

class_idx = 5
plt.figure(figsize=(10, 8))

shap.summary_plot(
    shap_values_numpy[..., class_idx], 
    X_train, 
    feature_names=X_train.columns, 
    plot_type="dot", 
    show=False, 
    cmap='Greys' # or 'plasma'
)

# Customize Color Bar
cbar = plt.gcf().axes[-1] 
cbar.set_ylabel('Parameter Value', fontsize=24)
cbar.tick_params(labelsize=20)
plt.show()


##################################################################
#                                                                #
#                     (c) Interaction Plot                       #
#          Visualizes interaction effects between features       #
#                                                                #
##################################################################

# Note: Calculation can be expensive
shap_interaction_values = explainer_tree.shap_interaction_values(X_test)
class_idx = 4

plt.figure()
shap.summary_plot(
    shap_interaction_values[..., class_idx], 
    X_test, 
    show=False, 
    max_display=6, 
    cmap='Greys' 
)

# Clean up subplots
axes = plt.gcf().axes
for ax in axes:
    ax.spines['bottom'].set_linewidth(2)
    ax.tick_params(axis="x", labelsize=18, width=2)
    ax.set_title(ax.get_title(), fontsize=14) 

plt.subplots_adjust(wspace=0.3, hspace=0.4)    
plt.show()


##################################################################
#                                                                #
#                     (d) Dependence Plot                        #
#           Feature relationship colored by interaction          #
#                                                                #
##################################################################

Feature_X = 'P06'  # Main feature
Feature_Y = 'P07'  # Interaction feature
class_idx = 4

shap.dependence_plot(
    Feature_X, 
    shap_values_numpy[..., class_idx], 
    X_train, 
    interaction_index=Feature_Y, 
    dot_size=100, 
    show=False
)

# Customize Axes
ax = plt.gca()
ax.tick_params(axis='both', which='major', labelsize=36, width=2)
ax.set_ylabel(f'SHAP value ({Feature_X})', fontsize=36)
ax.spines['bottom'].set_linewidth(3)
ax.spines['left'].set_linewidth(3)
plt.show()


##################################################################
#                                                                #
#            (e) Advanced Composite Plot (Beeswarm + Bar)        #
#      Combines Beeswarm (Bottom Axis) & Importance (Top Axis)   #
#                                                                #
##################################################################

class_idx = 5
fig, ax1 = plt.subplots(figsize=(10, 8))

# 1. Main Beeswarm Plot (on ax1)
shap.summary_plot(
    shap_values_numpy[..., class_idx], 
    X_train, 
    feature_names=X_train.columns, 
    plot_type="dot", 
    show=False, 
    color_bar=True, 
    cmap='Greys' # or 'plasma'
)

# Customize Color Bar
cbar = plt.gcf().axes[-1] 
cbar.set_ylabel('Parameter Value', fontsize=24)
cbar.tick_params(labelsize=20)

# Adjust layout to make room for the top axis
plt.gca().set_position([0.2, 0.2, 0.65, 0.65]) 

# 2. Feature Importance Bar Plot (on Top Axis ax2)
# Create a twin axis sharing the y-axis
ax2 = ax1.twiny() 

shap.summary_plot(
    shap_values_numpy[..., class_idx], 
    X_train, 
    plot_type="bar", 
    show=False
)

# Align position with the main plot
plt.gca().set_position([0.2, 0.2, 0.65, 0.65]) 

# Style the bars (Transparent & Light Color)
bars = ax2.patches
for bar in bars:
    bar.set_color('#CCE5FB') # Light blue background bars
    bar.set_alpha(0.4)       # Transparency

# Customize Axes Labels
ax1.set_xlabel(f'Shapley Value Contribution (F{class_idx})', fontsize=24, labelpad=5)
ax1.set_ylabel('Parameters', fontsize=24)
ax2.set_xlabel('Mean Shapley Value (Parameter Importance)', fontsize=24, labelpad=10)

# Move ax2 (Bar plot axis) to the top
ax2.xaxis.set_label_position('top') 
ax2.xaxis.tick_top()

# Ensure ax1 (dots) is drawn ON TOP OF ax2 (bars)
ax1.set_zorder(ax1.get_zorder() + 1) 
ax1.patch.set_visible(False) # Make ax1 background transparent

plt.show()

Основные моменты исследования

Мы считаем, что данная работа внесла следующий ключевой вклад в эту область:

  • Созданы параметризованные модели для пяти типичных неисправностей компонентов камеры сгорания судовых дизельных двигателей.
  • Подтверждена эффективность метода SHAP путем сравнения с несколькими методами отбора признаков.
  • Предложен новый взгляд на объяснимую диагностику неисправностей путем объединения методов, основанных на данных, с термодинамическими механистическими моделями.

Цитирование

Если вы находите эту работу полезной для вашего исследования, пожалуйста, ознакомьтесь со следующей статьей 😊

BibTeX

@article{luo2025thermodynamic,
  title     = {Thermodynamic simulation-assisted random forest: Towards explainable fault diagnosis of combustion chamber components of marine diesel engines},
  author    = {Luo, Congcong and Zhao, Minghang and Fu, Xuyun and Zhong, Shisheng and Fu, Song and Zhang, Kai and Yu, Xiaoxia},
  journal   = {Measurement},
  volume    = {251},
  pages     = {117252},
  year      = {2025},
  publisher = {Elsevier},
  doi       = {10.1016/j.measurement.2025.117252},
}

Стандартный формат

C. Luo, M. Zhao, X. Fu, S. Zhong, S. Fu, K. Zhang, X. Yu. Thermodynamic simulation-assisted random forest: Towards explainable fault diagnosis of combustion chamber components of marine diesel engines[J]. Measurement, 2025, 251: 117252.

Смотреть на ScienceDirect