Random Forest assistito da simulazione termodinamica: Diagnostica spiegabile dei guasti per componenti della camera di combustione di motori diesel marini

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

Astratto

I metodi tradizionali di diagnostica intelligente dei guasti per motori diesel marini soffrono spesso di una scarsa capacità di generalizzazione dovuta alla mancanza di campioni di addestramento sui guasti, e di una scarsa spiegabilità poiché non integrano sufficientemente la conoscenza a priori sui meccanismi di guasto. Per affrontare questi problemi, questo articolo propone un metodo Random Forest Assistito da Simulazione Termodinamica (TSRF) .

Questo metodo rivela le caratteristiche di evoluzione dei guasti attraverso la simulazione termodinamica e le integra come conoscenza a priori nella progettazione del modello di diagnostica intelligente. In primo luogo, sono stati sviluppati cinque modelli termodinamici di guasto regolando finemente i parametri di base del sistema per simulare le caratteristiche significative di diversi malfunzionamenti. Successivamente, sulla base dei risultati della simulazione numerica, sono stati identificati potenziali indicatori termodinamici che caratterizzano il degrado dei componenti della camera di combustione.

È stata effettuata una selezione delle caratteristiche calcolando i valori SHapley Additive exPlanations (SHAP), conservando solo le variabili con una correlazione significativa con lo stato del guasto. Infine, lo stato di salute della camera di combustione è stato valutato utilizzando i parametri selezionati. I risultati sperimentali mostrano che il metodo TSRF proposto presenta eccellenti prestazioni di classificazione, con un'accuratezza media del 99,07% sul set di dati dei guasti.

Parole chiave:
Motore diesel marino Diagnostica dei guasti IA spiegabile Valori SHAP

Motivazione

Nel campo dell'ingegneria navale e del Prognostics and Health Management (PHM), l'industria deve affrontare due colli di bottiglia a lungo termine:

  • Scarsità di dati: I motori diesel marini (in particolare i motori principali delle navi oceaniche) sono il cuore della nave. Un guasto grave in mare può portare alla perdita di propulsione, incagliamento o addirittura naufragi. Pertanto, i loro fattori di sicurezza in fase di progettazione sono estremamente elevati e la probabilità di guasti gravi è intrinsecamente molto bassa. Inoltre, l'industria marittima applica rigorosi sistemi di manutenzione preventiva (come revisioni programmate in base alle ore di funzionamento). La stragrande maggioranza delle parti soggette a usura viene sostituita forzatamente prima che si guasti realmente e generi dati di guasto. Ciò porta a un'abbondanza di dati sulla salute e sull'usura precoce, ma a un'estrema mancanza di dati reali su guasti completi o malfunzionamenti gravi.
  • Il problema della "Scatola Nera": Poiché i modelli di deep learning mancano generalmente di trasparenza, è difficile per gli ingegneri fidarsi di essi se non possono spiegare le cause fisiche di un guasto. Nell'industria marittima, rigorosamente regolamentata dalle società di classificazione, questa opacità è critica. Se un'IA diagnostica erroneamente (o non rileva) un grippaggio del pistone o una rottura dell'albero motore, e il sistema non può tracciare se l'errore deriva da un bias nei dati, da un difetto dell'algoritmo o da una deriva del sensore, questa non tracciabilità è inaccettabile nelle indagini sugli incidenti marittimi.

Per affrontare queste sfide, abbiamo proposto il metodo TSRF. Fondendo modelli meccanicistici basati sulla fisica con tecniche avanzate di spiegabilità e utilizzando modelli di simulazione ad alta fedeltà per risolvere il problema della scarsità di dati, garantiamo che le decisioni diagnostiche siano conformi ai principi termodinamici fondamentali.


Metodologia

Il flusso di lavoro di questo studio comprende le seguenti quattro fasi principali (vedi figura):

  1. Modellazione termodinamica: Invece di affidarci esclusivamente a banchi prova fisici, abbiamo costruito un modello termodinamico unidimensionale ad alta fedeltà di un motore diesel marino a sei cilindri. Il modello è stato rigorosamente calibrato sulla base di dati operativi reali, mantenendo l'errore di simulazione al di sotto del 5%.
  2. Iniezione dei guasti: Sulla base del modello calibrato, abbiamo simulato cinque guasti specifici della camera di combustione (come crepe nella testata, ablazione del pistone, ecc.) regolando finemente i parametri fisici, generando così un set di dati che copre vari gradi di guasti reali del motore.
  3. Selezione delle caratteristiche basata su SHAP: Abbiamo utilizzato i valori SHAP per identificare quantitativamente le caratteristiche chiave, selezionando 14 parametri critici che dominano la decisione diagnostica.
  4. Diagnostica di classificazione: Utilizzando questo set di dati fisicamente aumentato, abbiamo addestrato un classificatore Random Forest (RF) e ottenuto una diagnostica dei guasti ad alta precisione.
Structure of TSRF method combining Thermodynamic Simulation and Random Forest for Explainable AI

Fig. 1: Architettura del metodo TSRF.


Dettagli della modellazione termodinamica

Per garantire un'alta fedeltà, abbiamo costruito un modello di simulazione di motore diesel unidimensionale. Questo modello meccanicistico bilancia la precisione fisica con l'efficienza computazionale necessaria per la generazione del set di dati.

Topologia del modello

Il sistema motore è discretizzato come una rete di condotti fluidi e componenti funzionali:

  • Unità di potenza centrale: Configurazione in linea, sei cilindri, due tempi.
  • Sistema aria: I collettori di aspirazione/scarico (PL1, PL2) sono collegati tramite una complessa rete di tubazioni.
  • Sistema di sovralimentazione: Turbocompressore (TC1) accoppiato a intercooler (CO1).

Calibrazione e validazione

Prima di procedere all'iniezione dei guasti, il modello base è stato rigorosamente calibrato sulla base di dati misurati.

  • Fonte dati: Dati operativi reali della nave acquisiti tramite il Modulo di Acquisizione Dati (DCM).
  • Validazione: Le deviazioni dei parametri chiave (come potenza, temperatura di scarico) sono state rigorosamente controllate entro un intervallo di errore del ±5% .
1-D thermodynamic simulation model

Fig. 2: Schema del modello termodinamico unidimensionale del motore diesel.

Model Validation Results

Fig. 5: Modulo di Acquisizione Dati (DCM).

Meccanismo di iniezione dei guasti

Poiché i modelli unidimensionali non possono rappresentare direttamente difetti strutturali 3D, abbiamo adottato un metodo di mappatura fenomenologica per tradurre i meccanismi di degrado fisico in spostamenti equivalenti dei parametri termodinamici.

Tipo di guasto Meccanismo fisico Implementazione della modellazione
F1: Crepa nella testata Conduzione termica ostacolata. Aumento della temperatura superficiale della testata ($T_H$) a 346°C.
F2: Ablazione del pistone Perdita di materiale e guasto della tenuta. Aumento della temperatura del pistone ($T_P$) + leggero trafilamento (blow-by) (0,01 kg/s).
F3: Usura della camicia Aumento dell'alesaggio dovuto all'usura. Aumento dell'alesaggio + forte trafilamento (0,03 kg/s).
F4: Usura delle fasce Perdita di gas. Regolazione della portata massica di trafilamento (0,02 kg/s).
F5: Incollaggio delle fasce Aumento dell'attrito e guasto della tenuta. Variazione del diametro dell'alesaggio + aumento della temperatura della camicia + trafilamento.

Analisi della spiegabilità

Un'innovazione centrale di questo studio risiede nello spostare l'attenzione da "Qual è il guasto?" a "Perché è stato diagnosticato questo guasto?". Abbiamo dimostrato questa capacità attraverso l'analisi dell'usura delle fasce elastiche (F4):

  • Spiegazione locale (Grafico a cascata): Il grafico a cascata scompone la logica di previsione specifica. Ad esempio, il modello ha previsto "usura delle fasce" perché il flusso termico di trafilamento (P06) e la portata massica di trafilamento (P07) presentavano valori specifici, aumentando così la probabilità di previsione di questo guasto. Ciò è coerente con le leggi fisiche: l'usura delle fasce distrugge la tenuta, causando perdite di gas (trafilamento).
  • Spiegazione globale (Grafico a sciame): L'analisi globale rivela le leggi generali apprese dal modello. Abbiamo scoperto che una bassa pressione di scarico pre-turbina (P11) è un forte indicatore di usura delle fasce. Fisicamente, ciò è coerente: le fasce usurate causano perdite di gas dal cilindro, riducendo così l'energia disponibile per azionare la turbina.
SHAP Analysis,including Waterfall plot, beeswarm plot, interaction plot and dependence plot

Fig. 11: Analisi del guasto di usura delle fasce (F4) basata sui valori SHAP: (a) Grafico a cascata; (b) Grafico a sciame; (c) Grafico di interazione; (d) Grafico di dipendenza.

Visualizza codice SHAP (Python)

Se sei interessato ai dettagli di implementazione dei grafici sopra, ecco un codice di esempio per generare i grafici a cascata, a sciame, di interazione e di dipendenza.👇

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

Punti salienti della ricerca

Riteniamo che questo lavoro abbia apportato i seguenti contributi chiave al settore:

  • Creazione di modelli parametrizzati per cinque guasti tipici dei componenti della camera di combustione nei motori diesel marini.
  • Validazione dell'efficacia del metodo SHAP attraverso il confronto con diversi metodi di selezione delle caratteristiche.
  • Fornitura di una nuova prospettiva per la diagnostica spiegabile dei guasti fondendo metodi basati sui dati con modelli meccanicistici termodinamici.

Citazione

Se trovi questo lavoro utile per la tua ricerca, ti preghiamo di leggere il seguente articolo 😊

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

Formato standard

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.