Termodinamik Simülasyon Destekli Rastgele Orman: Gemi Dizel Motoru Yanma Odası Bileşenleri İçin Açıklanabilir Arıza Teşhisi

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

Özet

Geleneksel gemi dizel motoru akıllı arıza teşhis yöntemleri, arıza eğitim örneklerinin eksikliği nedeniyle genellikle zayıf genelleme yeteneğinden muzdariptir ve arıza mekanizmaları hakkındaki ön bilgileri yeterince entegre etmedikleri için düşük açıklanabilirliğe sahiptir. Bu sorunları ele almak için, bu makale bir Termodinamik Simülasyon Destekli Rastgele Orman (TSRF) yöntemi önermektedir.

Bu yöntem, termodinamik simülasyon yoluyla arıza gelişim özelliklerini ortaya çıkarır ve bunları akıllı arıza teşhis modelinin tasarımına ön bilgi olarak entegre eder. İlk olarak, farklı arızaların belirgin özelliklerini simüle etmek için sistemin temel parametrelerinde ince ayar yapılarak beş termodinamik arıza modeli geliştirilmiştir. Ardından, sayısal simülasyon sonuçlarına dayanarak, yanma odası bileşenlerinin bozulmasını karakterize eden potansiyel termodinamik göstergeler belirlenmiştir.

Özellik seçimi, SHapley Additive exPlanations (SHAP) değerleri hesaplanarak gerçekleştirilmiş ve yalnızca arıza durumuyla anlamlı bir korelasyona sahip değişkenler korunmuştur. Son olarak, seçilen parametreler kullanılarak yanma odasının sağlık durumu değerlendirilmiştir. Deneysel sonuçlar, önerilen TSRF yönteminin, arıza veri setinde %99,07'ye varan ortalama doğrulukla mükemmel sınıflandırma performansı sergilediğini göstermektedir.

Anahtar Kelimeler:
Gemi dizel motoru Arıza teşhisi Açıklanabilir Yapay Zeka SHAP değerleri

Araştırma Motivasyonu

Gemi mühendisliği ve Prognostik ve Sağlık Yönetimi (PHM) alanında, endüstri iki uzun vadeli darboğazla karşı karşıyadır:

  • Veri Kıtlığı: Gemi dizel motorları (özellikle okyanus gemilerinin ana makineleri) geminin kalbidir. Denizde ciddi bir arıza, tahrik kaybına, karaya oturmaya veya hatta deniz felaketlerine yol açabilir. Bu nedenle, tasarımdaki güvenlik faktörleri son derece yüksektir ve ciddi arıza olasılığı doğası gereği çok düşüktür. Ayrıca, denizcilik endüstrisi katı önleyici bakım sistemleri (çalışma saatlerine dayalı planlı revizyonlar gibi) uygular. Aşınan parçaların büyük çoğunluğu, gerçekten arızalanıp arıza verisi üretmeden önce zorunlu olarak değiştirilir. Bu durum, bol miktarda sağlık verisi ve erken aşınma verisi olmasına rağmen, tam arıza veya ciddi arızalarla ilgili gerçek verilerin aşırı eksikliğine yol açar.
  • "Kara Kutu" Sorunu: Derin öğrenme modelleri genellikle şeffaflıktan yoksun olduğundan, mühendislerin bir arızanın fiziksel nedenlerini açıklayamamaları durumunda onlara güvenmeleri zordur. Klas kuruluşları tarafından sıkı bir şekilde düzenlenen denizcilik endüstrisinde bu belirsizlik kritiktir. Yapay zeka, piston sarmasını veya krank mili kırılmasını yanlış teşhis ederse (veya kaçırırsa) ve sistem hatanın veri yanlılığından mı, algoritma kusurundan mı yoksa sensör sapmasından mı kaynaklandığını izleyemezse, bu izlenemezlik deniz kazası soruşturmalarında kabul edilemez.

Bu zorlukların üstesinden gelmek için TSRF yöntemini önerdik. Fizik tabanlı mekanistik modelleri gelişmiş açıklanabilirlik teknikleriyle birleştirerek ve veri kıtlığı sorununu çözmek için yüksek doğruluğa sahip simülasyon modellerini kullanarak, teşhis kararlarının temel termodinamik ilkelerine uymasını sağlıyoruz.


Metodoloji

Bu çalışmanın iş akışı aşağıdaki dört ana aşamayı içermektedir (şekilde gösterildiği gibi):

  1. Termodinamik Modelleme: Yalnızca fiziksel test tezgahlarına güvenmek yerine, altı silindirli bir gemi dizel motorunun yüksek doğruluklu tek boyutlu termodinamik modelini oluşturduk. Model, gerçek çalışma verilerine dayanarak titizlikle kalibre edilmiş ve simülasyon hatası %5'in altında tutulmuştur.
  2. Arıza Enjeksiyonu: Kalibre edilmiş modele dayanarak, fiziksel parametrelerde ince ayar yaparak beş spesifik yanma odası arızasını (silindir kapağı çatlağı, piston aşınması vb.) simüle ettik ve böylece gerçek motor arızalarının çeşitli derecelerini kapsayan bir veri seti oluşturduk.
  3. SHAP Tabanlı Özellik Seçimi: Temel özellikleri nicel olarak belirlemek için SHAP değerlerini kullandık ve teşhis kararına hükmeden 14 kritik parametreyi seçtik.
  4. Sınıflandırma Teşhisi: Bu fiziksel olarak zenginleştirilmiş veri setini kullanarak, bir Rastgele Orman (RF) sınıflandırıcısını eğittik ve yüksek hassasiyetli arıza teşhisi elde ettik.
Structure of TSRF method combining Thermodynamic Simulation and Random Forest for Explainable AI

Şekil 1: TSRF yöntemi mimarisi.


Termodinamik Modelleme Detayları

Yüksek doğruluk sağlamak için tek boyutlu bir dizel motor simülasyon modeli oluşturduk. Bu mekanistik model, fiziksel hassasiyet ile veri seti oluşturma için gereken hesaplama verimliliği arasında bir denge kurar.

Model Topolojisi

Motor sistemi, akışkan boru hatları ve fonksiyonel bileşenlerden oluşan bir ağ olarak ayrıklaştırılmıştır:

  • Çekirdek Güç Ünitesi: Altı silindirli, iki zamanlı sıralı konfigürasyon.
  • Hava Sistemi: Emme/egzoz manifoldları (PL1, PL2) karmaşık bir boru ağıyla birbirine bağlanmıştır.
  • Takviye Sistemi: Turboşarj (TC1), intercooler (CO1) ile birleştirilmiştir.

Kalibrasyon ve Doğrulama

Arıza enjeksiyonunu gerçekleştirmeden önce, temel model ölçülen verilere dayanarak titizlikle kalibre edilmiştir.

  • Veri Kaynağı: Veri Toplama Modülü (DCM) aracılığıyla elde edilen gerçek gemi işletim verileri.
  • Doğrulama: Temel parametrelerin (güç, egzoz sıcaklığı gibi) sapmaları kesinlikle ±%5 hata aralığında kontrol edilmiştir.
1-D thermodynamic simulation model

Şekil 2: Dizel motorun tek boyutlu termodinamik modelinin şeması.

Model Validation Results

Şekil 5: Veri Toplama Modülü (DCM).

Arıza Enjeksiyon Mekanizması

Tek boyutlu modeller 3B yapısal kusurları doğrudan temsil edemediğinden, fiziksel bozulma mekanizmalarını eşdeğer termodinamik parametre kaymalarına dönüştürmek için fenomenolojik bir haritalama yöntemi benimsedik.

Arıza Tipi Fiziksel Mekanizma Modelleme Uygulaması
F1: Silindir Kapağı Çatlağı Isı iletiminin engellenmesi. Silindir kapağı yüzey sıcaklığının ($T_H$) 346°C'ye yükseltilmesi.
F2: Piston Aşınması (Ablation) Malzeme kaybı ve sızdırmazlık hatası. Piston sıcaklığının ($T_P$) artırılması + hafif karter gazı kaçağı (Blow-by) (0.01 kg/s).
F3: Gömlek (Liner) Aşınması Aşınma nedeniyle silindir çapının büyümesi. Çapın büyümesi + ciddi karter gazı kaçağı (0.03 kg/s).
F4: Segman (Ring) Aşınması Gaz kaçağı. Karter gazı kütle debisinin ayarlanması (0.02 kg/s).
F5: Segman Sıkışması Sürtünme artışı ve sızdırmazlık hatası. Silindir çapı değişimi + gömlek sıcaklığı artışı + karter gazı kaçağı.

Açıklanabilirlik Analizi

Bu çalışmanın temel yeniliklerinden biri, odağı "Arıza nedir?" sorusundan "Neden bu arıza teşhis edildi?" sorusuna kaydırmasında yatmaktadır. Bu yeteneği piston segmanı aşınması (F4) analizi ile gösterdik:

  • Yerel Açıklama (Şelale Grafiği): Şelale grafiği, spesifik tahmin mantığını ayrıştırır. Örneğin, model "segman aşınması" tahmininde bulundu çünkü karter gazı ısı akışı (P06) ve karter gazı kütle debisi (P07) belirli değerler gösterdi ve bu da bu arızanın tahmin olasılığını artırdı. Bu, fiziksel yasalarla tutarlıdır: segman aşınması sızdırmazlığı bozar ve gaz kaçağına (Blow-by) neden olur.
  • Küresel Açıklama (Arı Kovanı Grafiği): Küresel analiz, modelin öğrendiği genel yasaları ortaya çıkarır. Türbin öncesi egzoz basıncının (P11) düşük değerinin, segman aşınması için güçlü bir gösterge olduğunu bulduk. Fiziksel olarak bu tutarlıdır: aşınmış segmanlar silindirden gaz kaçağına neden olur ve böylece türbini çalıştırmak için mevcut enerjiyi azaltır.
SHAP Analysis,including Waterfall plot, beeswarm plot, interaction plot and dependence plot

Şekil 11: SHAP değerlerine dayalı piston segmanı aşınması (F4) arıza analizi: (a) Şelale Grafiği; (b) Arı Kovanı Grafiği; (c) Etkileşim Grafiği; (d) Bağımlılık Grafiği.

SHAP Görselleştirme Kodunu Görüntüle (Python)

Yukarıdaki grafiklerin uygulama detaylarıyla ilgileniyorsanız, işte şelale, arı kovanı, etkileşim ve bağımlılık grafikleri oluşturmak için örnek kod.👇

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

Araştırmada Öne Çıkanlar

Bu çalışmanın alana aşağıdaki temel katkıları sağladığına inanıyoruz:

  • Gemi dizel motoru yanma odası bileşenlerinin beş tipik arızası için parametreli modellerin oluşturulması.
  • SHAP yönteminin etkinliğinin, çoklu özellik seçimi yöntemleriyle karşılaştırılarak doğrulanması.
  • Veri odaklı yöntemleri termodinamik mekanistik modellerle birleştirerek açıklanabilir arıza teşhisi için yeni bir perspektif sağlanması.

Atıf

Bu çalışmayı araştırmanız için yararlı bulursanız, lütfen aşağıdaki makaleyi okumayı düşünün 😊

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

Standart Format

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.