Random Forest ที่ช่วยด้วยการจำลองทางอุณหพลศาสตร์: การวินิจฉัยข้อบกพร่องที่อธิบายได้สำหรับส่วนประกอบห้องเผาไหม้ของเครื่องยนต์ดีเซลเรือ

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

บทคัดย่อ

วิธีการวินิจฉัยข้อบกพร่องอัจฉริยะสำหรับเครื่องยนต์ดีเซลเรือแบบดั้งเดิมมักประสบปัญหาความสามารถในการสรุปผลทั่วไปที่ไม่ดี เนื่องจากขาดแคลนตัวอย่างการฝึกฝนที่มีข้อบกพร่อง และความสามารถในการอธิบายต่ำ เนื่องจากไม่ได้บูรณาการความรู้ก่อนหน้าเกี่ยวกับกลไกความล้มเหลวอย่างเพียงพอ เพื่อแก้ไขปัญหาเหล่านี้ บทความนี้นำเสนอวิธีการ Random Forest ที่ช่วยด้วยการจำลองทางอุณหพลศาสตร์ (TSRF)

วิธีการนี้เปิดเผยลักษณะวิวัฒนาการของข้อบกพร่องผ่านการจำลองทางอุณหพลศาสตร์ และบูรณาการสิ่งเหล่านี้เป็นความรู้ก่อนหน้าในการออกแบบแบบจำลองการวินิจฉัยข้อบกพร่องอัจฉริยะ ขั้นแรก ได้พัฒนาแบบจำลองข้อบกพร่องทางอุณหพลศาสตร์ห้าแบบ โดยการปรับแต่งพารามิเตอร์พื้นฐานของระบบอย่างละเอียด เพื่อจำลองลักษณะเด่นของความล้มเหลวต่างๆ ต่อมา จากผลการจำลองเชิงตัวเลข ได้ระบุตัวบ่งชี้ทางอุณหพลศาสตร์ที่มีศักยภาพ ซึ่งแสดงถึงการเสื่อมสภาพของส่วนประกอบห้องเผาไหม้

การเลือกคุณลักษณะดำเนินการโดยการคำนวณค่า SHapley Additive exPlanations (SHAP) โดยเก็บเฉพาะตัวแปรที่มีความสัมพันธ์อย่างมีนัยสำคัญกับสถานะข้อบกพร่อง สุดท้าย สถานะสุขภาพของห้องเผาไหม้ได้รับการประเมินโดยใช้พารามิเตอร์ที่เลือก ผลการทดลองแสดงให้เห็นว่าวิธีการ TSRF ที่นำเสนอ แสดงประสิทธิภาพการจำแนกประเภทที่ยอดเยี่ยม โดยมีความแม่นยำเฉลี่ยสูงถึง 99.07% ในชุดข้อมูลข้อบกพร่อง

คำสำคัญ:
เครื่องยนต์ดีเซลเรือ การวินิจฉัยข้อบกพร่อง AI ที่อธิบายได้ ค่า SHAP

แรงจูงใจในการวิจัย

ในสาขาวิศวกรรมทางทะเลและการบริหารจัดการการพยากรณ์และสุขภาพ (PHM) อุตสาหกรรมกำลังเผชิญกับคอขวดระยะยาวสองประการ:

  • ความขาดแคลนข้อมูล: เครื่องยนต์ดีเซลเรือ (โดยเฉพาะเครื่องยนต์หลักของเรือเดินสมุทร) เป็นหัวใจของเรือ ความล้มเหลวร้ายแรงในทะเลอาจนำไปสู่การสูญเสียกำลังขับเคลื่อน การเกยตื้น หรือแม้แต่ภัยพิบัติทางทะเล ดังนั้น ปัจจัยความปลอดภัยในการออกแบบจึงสูงมาก และความน่าจะเป็นที่จะเกิดความล้มเหลวร้ายแรงนั้นต่ำมากโดยธรรมชาติ นอกจากนี้ อุตสาหกรรมการเดินเรือยังใช้ระบบการบำรุงรักษาเชิงป้องกันที่เข้มงวด (เช่น การยกเครื่องตามกำหนดเวลาตามชั่วโมงการทำงาน) ชิ้นส่วนที่สึกหรอส่วนใหญ่จะถูกเปลี่ยนโดยบังคับก่อนที่จะเสียหายจริงและสร้างข้อมูลข้อบกพร่อง สิ่งนี้นำไปสู่ความอุดมสมบูรณ์ของข้อมูลสุขภาพและข้อมูลการสึกหรอระยะแรก แต่ขาดแคลนข้อมูลจริงเกี่ยวกับความล้มเหลวโดยสมบูรณ์หรือข้อบกพร่องร้ายแรงอย่างยิ่ง
  • ปัญหา "กล่องดำ": เนื่องจากแบบจำลองการเรียนรู้เชิงลึก (Deep Learning) มักขาดความโปร่งใส จึงเป็นเรื่องยากสำหรับวิศวกรที่จะเชื่อถือหากไม่สามารถอธิบายสาเหตุทางกายภาพของข้อบกพร่องได้ ในอุตสาหกรรมการเดินเรือที่ถูกควบคุมอย่างเข้มงวดโดยสมาคมจัดชั้นเรือ ความทึบแสงนี้มีความสำคัญ หาก AI วินิจฉัยผิดพลาด (หรือพลาด) การติดขัดของลูกสูบหรือการแตกหักของเพลาข้อเหวี่ยง และระบบไม่สามารถติดตามได้ว่าข้อผิดพลาดเกิดจากความเอนเอียงของข้อมูล ข้อบกพร่องของอัลกอริทึม หรือการเลื่อนของเซ็นเซอร์ ความไม่สามารถติดตามได้นี้เป็นสิ่งที่ยอมรับไม่ได้ในการสอบสวนอุบัติเหตุทางทะเล

เพื่อตอบสนองต่อความท้าทายเหล่านี้ เราได้เสนอวิธีการ TSRF โดยการรวมแบบจำลองเชิงกลไกที่ใช้ฟิสิกส์เข้ากับเทคนิคความสามารถในการอธิบายขั้นสูง และใช้แบบจำลองการจำลองที่มีความแม่นยำสูงเพื่อแก้ปัญหาการขาดแคลนข้อมูล เรารับประกันว่าการตัดสินใจวินิจฉัยสอดคล้องกับหลักการพื้นฐานของอุณหพลศาสตร์


ระเบียบวิธีวิจัย

ขั้นตอนการทำงานของการศึกษานี้ประกอบด้วยสี่ขั้นตอนหลักดังต่อไปนี้ (ดังแสดงในรูป):

  1. การสร้างแบบจำลองทางอุณหพลศาสตร์: แทนที่จะพึ่งพาแท่นทดสอบทางกายภาพเพียงอย่างเดียว เราได้สร้างแบบจำลองทางอุณหพลศาสตร์หนึ่งมิติที่มีความแม่นยำสูงของเครื่องยนต์ดีเซลเรือหกสูบ แบบจำลองได้รับการสอบเทียบอย่างเข้มงวดตามข้อมูลการทำงานจริง โดยควบคุมข้อผิดพลาดของการจำลองให้ต่ำกว่า 5%
  2. การป้อนข้อบกพร่อง (Fault Injection): จากแบบจำลองที่สอบเทียบแล้ว เราจำลองข้อบกพร่องของห้องเผาไหม้ที่เฉพาะเจาะจงห้าประการ (เช่น รอยแตกของฝาสูบ การสึกกร่อนของลูกสูบ ฯลฯ) โดยการปรับแต่งพารามิเตอร์ทางกายภาพ เพื่อสร้างชุดข้อมูลที่ครอบคลุมระดับต่างๆ ของข้อบกพร่องของเครื่องยนต์จริง
  3. การเลือกคุณลักษณะตาม SHAP: เราใช้ค่า SHAP เพื่อระบุคุณลักษณะสำคัญในเชิงปริมาณ และเลือกพารามิเตอร์ที่สำคัญ 14 รายการที่ควบคุมการตัดสินใจวินิจฉัย
  4. การวินิจฉัยการจำแนกประเภท: การใช้ชุดข้อมูลที่ปรับปรุงทางกายภาพนี้ เราได้ฝึกฝนตัวจำแนกประเภท Random Forest (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)

กลไกการป้อนข้อบกพร่อง

เนื่องจากแบบจำลองหนึ่งมิติไม่สามารถแสดงข้อบกพร่องเชิงโครงสร้าง 3 มิติได้โดยตรง เราจึงใช้วิธีการทำแผนที่ปรากฏการณ์วิทยาเพื่อแปลกลไกการเสื่อมสภาพทางกายภาพเป็นการเปลี่ยนแปลงพารามิเตอร์ทางอุณหพลศาสตร์ที่เทียบเท่ากัน

ประเภทข้อบกพร่อง กลไกทางกายภาพ การนำไปใช้ในแบบจำลอง
F1: รอยแตกของฝาสูบ การนำความร้อนถูกขัดขวาง เพิ่มอุณหภูมิพื้นผิวฝาสูบ ($T_H$) เป็น 346°C
F2: การสึกกร่อนของลูกสูบ (Ablation) การสูญเสียวัสดุและความล้มเหลวของการปิดผนึก เพิ่มอุณหภูมิลุกสูบ ($T_P$) + การรั่วไหลของก๊าซ (Blow-by) เล็กน้อย (0.01 กก./วินาที)
F3: การสึกหรอของกระบอกสูบ (Liner) เส้นผ่านศูนย์กลางกระบอกสูบขยายใหญ่ขึ้นเนื่องจากการสึกหรอ เพิ่มขนาดกระบอกสูบ + การรั่วไหลของก๊าซรุนแรง (0.03 กก./วินาที)
F4: การสึกหรอของแหวน การรั่วไหลของก๊าซ ปรับอัตราการไหลของมวลก๊าซรั่วไหล (0.02 กก./วินาที)
F5: แหวนติดขัด แรงเสียดทานเพิ่มขึ้นและความล้มเหลวของการปิดผนึก เปลี่ยนเส้นผ่านศูนย์กลางกระบอกสูบ + เพิ่มอุณหภูมิกระบอกสูบ + การรั่วไหลของก๊าซ

การวิเคราะห์ความสามารถในการอธิบาย

นวัตกรรมหลักของการศึกษานี้อยู่ที่การเปลี่ยนความสนใจจาก "ข้อบกพร่องคืออะไร?" ไปเป็น "ทำไมข้อบกพร่องนี้จึงถูกวินิจฉัย?" เราแสดงให้เห็นถึงความสามารถนี้ผ่านการวิเคราะห์การสึกหรอของแหวนลูกสูบ (F4):

  • คำอธิบายเฉพาะที่ (Waterfall Plot): แผนภาพน้ำตกจะแยกแยะตรรกะการทำนายเฉพาะเจาะจง ตัวอย่างเช่น แบบจำลองทำนาย "การสึกหรอของแหวน" เนื่องจากกระแสความร้อนจากการรั่วไหล (P06) และอัตราการไหลของมวลจากการรั่วไหล (P07) แสดงค่าเฉพาะ ซึ่งเพิ่มความน่าจะเป็นในการทำนายข้อบกพร่องนี้ สิ่งนี้สอดคล้องกับกฎทางฟิสิกส์: การสึกหรอของแหวนทำลายการปิดผนึก ทำให้เกิดการรั่วไหลของก๊าซ (Blow-by)
  • คำอธิบายทั่วโลก (Beeswarm Plot): การวิเคราะห์ทั่วโลกเปิดเผยกฎทั่วไปที่แบบจำลองเรียนรู้ เราพบว่าค่าความดันไอเสียก่อนเทอร์ไบน์ (P11) ต่ำ เป็นตัวบ่งชี้ที่ชัดเจนของการสึกหรอของแหวน ในทางฟิสิกส์ สิ่งนี้สอดคล้องกัน: แหวนที่สึกหรอทำให้ก๊าซรั่วไหลออกจากกระบอกสูบ จึงลดพลังงานที่มีอยู่ในการขับเคลื่อนเทอร์ไบน์
SHAP Analysis,including Waterfall plot, beeswarm plot, interaction plot and dependence plot

รูปที่ 11: การวิเคราะห์ข้อบกพร่องการสึกหรอของแหวนลูกสูบ (F4) ตามค่า SHAP: (a) Waterfall Plot; (b) Beeswarm Plot; (c) Interaction Plot; (d) Dependence Plot

ดูโค้ดการแสดงภาพ SHAP (Python)

หากคุณสนใจรายละเอียดการนำไปใช้ของแผนภูมิข้างต้น นี่คือโค้ดตัวอย่างสำหรับสร้างแผนภูมิ Waterfall, Beeswarm, Interaction และ Dependence👇

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.

ดูที่ ScienceDirect