Random Forest Berbantuan Simulasi Termodinamika: Diagnosis Kegagalan yang Dapat Dijelaskan untuk Komponen Ruang Bakar Mesin Diesel Kapal

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

Abstrak

Metode diagnosis kegagalan cerdas tradisional untuk mesin diesel kapal sering kali menderita kemampuan generalisasi yang buruk karena kurangnya sampel pelatihan kegagalan, dan kemampuan penjelasan yang rendah karena tidak cukup mengintegrasikan pengetahuan apriori tentang mekanisme kegagalan. Untuk mengatasi masalah ini, makalah ini mengusulkan metode Random Forest Berbantuan Simulasi Termodinamika (TSRF) .

Metode ini mengungkapkan karakteristik evolusi kegagalan melalui simulasi termodinamika dan mengintegrasikannya sebagai pengetahuan apriori ke dalam desain model diagnosis kegagalan cerdas. Pertama, lima model kegagalan termodinamika dikembangkan dengan menyempurnakan parameter dasar sistem untuk mensimulasikan karakteristik signifikan dari berbagai kerusakan. Selanjutnya, berdasarkan hasil simulasi numerik, indikator termodinamika potensial yang mencirikan degradasi komponen ruang bakar diidentifikasi.

Pemilihan fitur dilakukan dengan menghitung nilai SHapley Additive exPlanations (SHAP), hanya mempertahankan variabel yang memiliki korelasi signifikan dengan status kegagalan. Terakhir, status kesehatan ruang bakar dievaluasi menggunakan parameter yang dipilih. Hasil eksperimen menunjukkan bahwa metode TSRF yang diusulkan menunjukkan kinerja klasifikasi yang sangat baik, dengan akurasi rata-rata mencapai 99,07% pada dataset kegagalan.

Kata kunci:
Mesin diesel kapal Diagnosis kegagalan AI yang dapat dijelaskan Nilai SHAP

Motivasi Penelitian

Di bidang teknik kelautan dan Prognostik & Manajemen Kesehatan (PHM), industri menghadapi dua hambatan jangka panjang:

  • Kelangkaan Data: Mesin diesel kapal (terutama mesin utama kapal samudra) adalah jantung kapal. Kegagalan serius di laut dapat menyebabkan hilangnya tenaga penggerak, kandas, atau bahkan bencana maritim. Oleh karena itu, faktor keamanannya dalam desain sangat tinggi, dan kemungkinan kegagalan serius secara inheren sangat rendah. Selain itu, industri pelayaran menerapkan sistem pemeliharaan preventif yang ketat (seperti perbaikan terjadwal berdasarkan jam operasi). Sebagian besar suku cadang yang aus diganti secara paksa sebelum benar-benar gagal dan menghasilkan data kegagalan. Hal ini menyebabkan melimpahnya data kesehatan dan data keausan dini, tetapi sangat kekurangan data nyata tentang kegagalan total atau kerusakan serius.
  • Masalah "Kotak Hitam": Karena model deep learning biasanya kurang transparan, sulit bagi insinyur untuk mempercayainya jika mereka tidak dapat menjelaskan penyebab fisik dari suatu kegagalan. Dalam industri pelayaran yang diatur secara ketat oleh biro klasifikasi, ketidakjelasan ini sangat penting. Jika AI salah mendiagnosis (atau melewatkan) piston scuffing atau patahnya poros engkol, dan sistem tidak dapat melacak apakah kesalahan tersebut berasal dari bias data, cacat algoritma, atau penyimpangan sensor, maka ketidakmampuan melacak ini tidak dapat diterima dalam penyelidikan kecelakaan maritim.

Untuk mengatasi tantangan ini, kami mengusulkan metode TSRF. Dengan menggabungkan model mekanistik berbasis fisika dengan teknik penjelasan canggih dan menggunakan model simulasi fidelitas tinggi untuk memecahkan masalah kelangkaan data, kami memastikan bahwa keputusan diagnosis sesuai dengan prinsip dasar termodinamika.


Metodologi

Alur kerja studi ini mencakup empat fase utama berikut (seperti yang ditunjukkan pada gambar):

  1. Pemodelan Termodinamika: Alih-alih hanya mengandalkan test bench fisik, kami membangun model termodinamika satu dimensi fidelitas tinggi dari mesin diesel kapal enam silinder. Model ini dikalibrasi secara ketat berdasarkan data operasi nyata, dengan kesalahan simulasi dijaga di bawah 5%.
  2. Injeksi Kegagalan: Berdasarkan model yang dikalibrasi, kami mensimulasikan lima kegagalan spesifik ruang bakar (seperti retak kepala silinder, ablasi piston, dll.) dengan menyempurnakan parameter fisik, sehingga menghasilkan dataset yang mencakup berbagai tingkat kegagalan mesin nyata.
  3. Pemilihan Fitur Berbasis SHAP: Kami menggunakan nilai SHAP untuk mengidentifikasi fitur utama secara kuantitatif, memilih 14 parameter kritis yang mendominasi keputusan diagnosis.
  4. Diagnosis Klasifikasi: Menggunakan dataset yang diperkaya secara fisik ini, kami melatih pengklasifikasi Random Forest (RF) dan mencapai diagnosis kegagalan presisi tinggi.
Structure of TSRF method combining Thermodynamic Simulation and Random Forest for Explainable AI

Gbr. 1: Arsitektur metode TSRF.


Detail Pemodelan Termodinamika

Untuk memastikan fidelitas tinggi, kami membangun model simulasi mesin diesel satu dimensi. Model mekanistik ini menyeimbangkan antara akurasi fisik dan efisiensi komputasi yang diperlukan untuk pembuatan dataset.

Topologi Model

Sistem mesin didiskretisasi sebagai jaringan pipa fluida dan komponen fungsional:

  • Unit Daya Inti: Konfigurasi in-line, enam silinder, dua tak.
  • Sistem Udara: Manifold intake/exhaust (PL1, PL2) dihubungkan melalui jaringan perpipaan yang kompleks.
  • Sistem Boosting: Turbocharger (TC1) digabungkan dengan intercooler (CO1).

Kalibrasi dan Validasi

Sebelum melakukan injeksi kegagalan, model dasar dikalibrasi secara ketat berdasarkan data terukur.

  • Sumber Data: Data operasi kapal nyata yang diperoleh melalui Modul Akuisisi Data (DCM).
  • Validasi: Penyimpangan parameter utama (seperti daya, suhu gas buang) dikontrol secara ketat dalam rentang kesalahan ±5% .
1-D thermodynamic simulation model

Gbr. 2: Skema model termodinamika satu dimensi mesin diesel.

Model Validation Results

Gbr. 5: Modul Akuisisi Data (DCM).

Mekanisme Injeksi Kegagalan

Karena model satu dimensi tidak dapat secara langsung merepresentasikan cacat struktural 3D, kami mengadopsi metode pemetaan fenomenologis untuk menerjemahkan mekanisme degradasi fisik menjadi pergeseran parameter termodinamika yang setara.

Tipe Kegagalan Mekanisme Fisik Implementasi Pemodelan
F1: Retak Kepala Silinder Konduksi panas terhambat. Meningkatkan suhu permukaan kepala silinder ($T_H$) hingga 346°C.
F2: Ablasi Piston Kehilangan material dan kegagalan penyegelan. Meningkatkan suhu piston ($T_P$) + blow-by ringan (0.01 kg/s).
F3: Keausan Liner Pembesaran diameter bore akibat keausan. Peningkatan bore + blow-by parah (0.03 kg/s).
F4: Keausan Ring Kebocoran gas. Penyesuaian laju aliran massa blow-by (0.02 kg/s).
F5: Ring Lengket (Sticking) Peningkatan gesekan dan kegagalan penyegelan. Perubahan diameter bore + peningkatan suhu liner + blow-by.

Analisis Kemampuan Penjelasan

Inovasi inti dari studi ini terletak pada pengalihan fokus dari "Apa kegagalannya?" menjadi "Mengapa kegagalan ini didiagnosis?". Kami mendemonstrasikan kemampuan ini melalui analisis keausan ring piston (F4):

  • Penjelasan Lokal (Waterfall Plot): Waterfall plot membedah logika prediksi spesifik. Misalnya, model memprediksi "keausan ring" karena aliran panas blow-by (P06) dan laju aliran massa blow-by (P07) menunjukkan nilai tertentu, sehingga meningkatkan probabilitas prediksi kegagalan ini. Ini konsisten dengan hukum fisika: keausan ring merusak penyegelan, menyebabkan kebocoran gas (blow-by).
  • Penjelasan Global (Beeswarm Plot): Analisis global mengungkapkan hukum umum yang dipelajari oleh model. Kami menemukan bahwa nilai tekanan gas buang sebelum turbin (P11) yang rendah merupakan indikator kuat untuk keausan ring. Secara fisik, ini konsisten: ring yang aus menyebabkan kebocoran gas dari silinder, sehingga mengurangi energi yang tersedia untuk menggerakkan turbin.
SHAP Analysis,including Waterfall plot, beeswarm plot, interaction plot and dependence plot

Gbr. 11: Analisis kegagalan keausan ring piston (F4) berdasarkan nilai SHAP: (a) Waterfall plot; (b) Beeswarm plot; (c) Interaction plot; (d) Dependence plot.

Lihat Kode Visualisasi SHAP (Python)

Jika Anda tertarik dengan detail implementasi grafik di atas, berikut adalah contoh kode untuk menghasilkan waterfall, beeswarm, interaction, dan dependence plot.👇

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

Sorotan Penelitian

Kami percaya bahwa pekerjaan ini telah memberikan kontribusi utama berikut untuk bidang ini:

  • Membangun model terparameterisasi untuk lima kegagalan khas komponen ruang bakar mesin diesel kapal.
  • Memvalidasi efektivitas metode SHAP melalui perbandingan dengan beberapa metode pemilihan fitur.
  • Memberikan perspektif baru untuk diagnosis kegagalan yang dapat dijelaskan dengan menggabungkan metode berbasis data dengan model mekanistik termodinamika.

Kutipan

Jika Anda merasa pekerjaan ini bermanfaat untuk penelitian Anda, silakan pertimbangkan untuk membaca makalah berikut 😊

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

Format Standar

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.