Náhodný les podporovaný termodynamickou simulací: Vysvětlitelná diagnostika poruch pro komponenty spalovací komory lodních dieselových motorů

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

Abstrakt

Tradiční metody inteligentní diagnostiky poruch lodních dieselových motorů často trpí špatnou schopností generalizace kvůli nedostatku tréninkových vzorků poruch a nízkou vysvětlitelností, protože nedostatečně integrují apriorní znalosti o mechanismech selhání. K řešení těchto problémů tento článek navrhuje metodu Náhodného lesa podporovaného termodynamickou simulací (TSRF) .

Tato metoda odhaluje charakteristiky vývoje poruch prostřednictvím termodynamické simulace a integruje je jako apriorní znalosti do návrhu modelu inteligentní diagnostiky poruch. Nejprve bylo vyvinuto pět termodynamických modelů poruch jemným doladěním základních parametrů systému pro simulaci významných znaků různých poruch. Následně byly na základě výsledků numerické simulace identifikovány potenciální termodynamické indikátory charakterizující degradaci komponent spalovací komory.

Výběr příznaků byl proveden výpočtem hodnot SHapley Additive exPlanations (SHAP), přičemž byly zachovány pouze proměnné s významnou korelací se stavem poruchy. Nakonec byl stav zdraví spalovací komory vyhodnocen pomocí vybraných parametrů. Experimentální výsledky ukazují, že navržená metoda TSRF vykazuje vynikající klasifikační výkon s průměrnou přesností 99,07 % na datové sadě poruch.

Klíčová slova:
Lodní dieselový motor Diagnostika poruch Vysvětlitelná AI Hodnoty SHAP

Motivace výzkumu

V oblasti námořního inženýrství a prognostiky a řízení stavu (PHM) čelí průmysl dvěma dlouhodobým úskalím:

  • Nedostatek dat: Lodní dieselové motory (zejména hlavní motory zaoceánských lodí) jsou srdcem lodi. Vážná porucha na moři může vést ke ztrátě pohonu, uvíznutí nebo dokonce k námořní katastrofě. Proto jsou jejich bezpečnostní faktory při návrhu extrémně vysoké a pravděpodobnost vážných poruch je ze své podstaty velmi nízká. Námořní průmysl navíc uplatňuje přísné systémy preventivní údržby (např. plánované generální opravy podle provozních hodin). Naprostá většina opotřebitelných dílů je nuceně vyměněna dříve, než skutečně selže a vygeneruje data o poruše. To vede k nadbytku dat o bezporuchovém stavu a raném opotřebení, ale k extrémnímu nedostatku reálných dat o úplném selhání nebo vážných závadách.
  • Problém "černé skříňky": Vzhledem k tomu, že modely hlubokého učení obvykle postrádají transparentnost, je pro inženýry obtížné jim důvěřovat, pokud nedokážou vysvětlit fyzikální příčiny poruchy. V lodním průmyslu, který je přísně regulován klasifikačními společnostmi, je tato netransparentnost kritická. Pokud AI chybně diagnostikuje (nebo přehlédne) zadírání pístu nebo prasknutí klikového hřídele a systém nedokáže zpětně vysledovat, zda chyba pramení ze zkreslení dat, vady algoritmu nebo driftu senzoru, je tato nemožnost zpětné vysledovatelnosti při vyšetřování námořních nehod nepřijatelná.

K řešení těchto výzev jsme navrhli metodu TSRF. Spojením fyzikálně založených mechanistických modelů s pokročilými technikami vysvětlitelnosti a využitím vysoce věrných simulačních modelů k řešení problému nedostatku dat zajišťujeme, že diagnostická rozhodnutí jsou v souladu se základními termodynamickými principy.


Metodika

Pracovní postup této studie zahrnuje následující čtyři hlavní fáze (jak je znázorněno na obrázku):

  1. Termodynamické modelování: Místo spoléhání se pouze na fyzické zkušební stolice jsme vytvořili vysoce věrný jednorozměrný termodynamický model šestiválcového lodního dieselového motoru. Model byl přísně kalibrován na základě skutečných provozních dat, přičemž chyba simulace byla udržena pod 5 %.
  2. Injektáž poruch: Na základě kalibrovaného modelu jsme simulovali pět specifických poruch spalovací komory (jako jsou praskliny hlavy válce, ablace pístu atd.) jemným doladěním fyzikálních parametrů, čímž jsme vytvořili datovou sadu pokrývající různé stupně skutečných poruch motoru.
  3. Výběr příznaků založený na SHAP: Použili jsme hodnoty SHAP ke kvantitativní identifikaci klíčových příznaků a vybrali 14 kritických parametrů, které dominují diagnostickému rozhodování.
  4. Klasifikační diagnostika: Pomocí této fyzikálně rozšířené datové sady jsme natrénovali klasifikátor náhodného lesa (RF) a dosáhli vysoce přesné diagnostiky poruch.
Structure of TSRF method combining Thermodynamic Simulation and Random Forest for Explainable AI

Obr. 1: Architektura metody TSRF.


Detaily termodynamického modelování

Pro zajištění vysoké věrnosti jsme vytvořili jednorozměrný simulační model dieselového motoru. Tento mechanistický model vyvažuje fyzikální přesnost a výpočetní efektivitu potřebnou pro generování datové sady.

Topologie modelu

Systém motoru je diskretizován jako síť kapalinových potrubí a funkčních komponent:

  • Jádrová pohonná jednotka: Řadová konfigurace, šest válců, dvoutakt.
  • Vzduchový systém: Sací/výfukové potrubí (PL1, PL2) je propojeno složitou sítí trubek.
  • Přeplňovací systém: Turbodmychadlo (TC1) spojené s mezichladičem (CO1).

Kalibrace a validace

Před provedením injektáže poruch byl základní model přísně kalibrován na základě naměřených dat.

  • Zdroj dat: Skutečná provozní data lodi získaná prostřednictvím modulu sběru dat (DCM).
  • Validace: Odchylky klíčových parametrů (jako výkon, teplota výfukových plynů) byly přísně kontrolovány v rozmezí chyby ±5 % .
1-D thermodynamic simulation model

Obr. 2: Schéma jednorozměrného termodynamického modelu dieselového motoru.

Model Validation Results

Obr. 5: Modul sběru dat (DCM).

Mechanismus injektáže poruch

Vzhledem k tomu, že jednorozměrné modely nemohou přímo reprezentovat 3D strukturální vady, přijali jsme metodu fenomenologického mapování pro převod mechanismů fyzikální degradace na ekvivalentní posuny termodynamických parametrů.

Typ poruchy Fyzikální mechanismus Implementace modelování
F1: Prasklina hlavy válce Omezené vedení tepla. Zvýšení povrchové teploty hlavy válce ($T_H$) na 346 °C.
F2: Ablace pístu Ztráta materiálu a selhání těsnění. Zvýšení teploty pístu ($T_P$) + mírný profuk plynů (blow-by) (0,01 kg/s).
F3: Opotřebení vložky Zvětšení vrtání v důsledku opotřebení. Zvětšení vrtání + silný profuk plynů (0,03 kg/s).
F4: Opotřebení pístních kroužků Únik plynu. Úprava hmotnostního průtoku profuku (0,02 kg/s).
F5: Zapečení kroužků Zvýšené tření a selhání těsnění. Změna průměru vrtání + zvýšení teploty vložky + profuk plynů.

Analýza vysvětlitelnosti

Hlavní inovace této studie spočívá v přesunu pozornosti z "Co je to za poruchu?" na "Proč byla tato porucha diagnostikována?". Tuto schopnost jsme demonstrovali na analýze opotřebení pístních kroužků (F4):

  • Lokální vysvětlení (Vodopádový graf): Vodopádový graf rozebírá konkrétní predikční logiku. Model například předpověděl "opotřebení kroužků", protože tepelný tok profuku (P06) a hmotnostní průtok profuku (P07) vykazovaly specifické hodnoty, čímž se zvýšila pravděpodobnost predikce této poruchy. To je v souladu s fyzikálními zákony: opotřebení kroužků ničí těsnost, což vede k úniku plynu (profuku).
  • Globální vysvětlení (Včelí graf): Globální analýza odhaluje obecné zákonitosti, které se model naučil. Zjistili jsme, že nízká hodnota tlaku výfukových plynů před turbínou (P11) je silným indikátorem opotřebení kroužků. Z fyzikálního hlediska je to konzistentní: opotřebované kroužky vedou k úniku plynu z válce, čímž se snižuje energie dostupná pro pohon turbíny.
SHAP Analysis,including Waterfall plot, beeswarm plot, interaction plot and dependence plot

Obr. 11: Analýza poruchy opotřebení pístních kroužků (F4) na základě hodnot SHAP: (a) Vodopádový graf; (b) Včelí graf; (c) Interakční graf; (d) Graf závislosti.

Zobrazit kód vizualizace SHAP (Python)

Pokud vás zajímají detaily implementace výše uvedených grafů, zde je ukázkový kód pro generování vodopádového, včelího, interakčního a závislostního grafu.👇

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()

Hlavní body výzkumu

Věříme, že tato práce přinesla následující klíčové příspěvky do tohoto oboru:

  • Vytvoření parametrizovaných modelů pro pět typických poruch komponent spalovací komory lodních dieselových motorů.
  • Ověření účinnosti metody SHAP porovnáním s několika metodami výběru příznaků.
  • Poskytnutí nového pohledu na vysvětlitelnou diagnostiku poruch spojením metod založených na datech s termodynamickými mechanistickými modely.

Citace

Pokud shledáte tuto práci užitečnou pro váš výzkum, zvažte prosím přečtení následujícího článku 😊

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},
}

Standardní formát

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.