الغابة العشوائية المدعومة بالمحاكاة الديناميكية الحرارية: تشخيص أعطال قابل للتفسير لمكونات غرفة الاحتراق في محركات الديزل البحرية

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 درجة مئوية.
F2: تآكل المكبس (Ablation) فقدان المواد وفشل الختم. زيادة درجة حرارة المكبس ($T_P$) + تسرب غاز خفيف (Blow-by) (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: (أ) مخطط الشلال؛ (ب) مخطط السرب؛ (ج) مخطط التفاعل؛ (د) مخطط الاعتماد.

عرض كود تصور SHAP (بايثون)

إذا كنت مهتمًا بتفاصيل تنفيذ الرسوم البيانية أعلاه، فإليك مثال للكود لإنشاء مخططات الشلال والسرب والتفاعل والاعتماد.👇

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.