Simulation ensembles: Monte-Carlo sampling

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

การตอบสนองของระบบต่อสถานการณ์ต่าง ๆ

  • กระบวนการที่ไม่กำหนดแน่ทำให้การตอบสนองของระบบแปรผัน
  • วิดีโอก่อนหน้า: เรียนรู้การสร้างโมเดลกระบวนการที่ไม่กำหนดแน่
  • อธิบายลักษณะการแพร่กระจายของความไม่แน่นอนในโมเดล
  • ศึกษาการตอบสนองของระบบต่อสถานการณ์ต่าง ๆ

ช่วยสนับสนุนในด้านต่าง ๆ ได้แก่

  • การวางแผนขยายธุรกิจ
  • การทดสอบความเครียด (stress test)
  • การเตรียมรับมือกับสถานการณ์รุนแรง
การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

Monte Carlo sampling

  • สุ่มตัวอย่างซ้ำหลายครั้ง
  • สร้างโมเดลระบบโดยปรับเปลี่ยนทีละน้อย
  • ตรวจสอบการตอบสนองของระบบต่อการเปลี่ยนแปลง

พื้นที่พารามิเตอร์เมื่อจำนวนตัวอย่างเพิ่มขึ้น

กราฟแสดงผลจากตัวอย่าง Monte Carlo 100 ครั้ง ยังไม่เห็นรูปแบบของผลลัพธ์โมเดลอย่างชัดเจน

กราฟแสดงผลจากตัวอย่าง Monte Carlo 1500 ครั้ง เริ่มเห็นรูปแบบของผลลัพธ์โมเดลบ้าง แต่ยังไม่ชัดเจน

กราฟแสดงผลจากตัวอย่าง Monte Carlo 5000 ครั้ง ผลลัพธ์โมเดลแสดงรูปแบบที่ชัดเจน มีโครงสร้างแบบตาราง

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

Monte Carlo sampling: การสำรวจกระบวนการ

ตัวอย่าง: การรัน Monte Carlo เพื่อทำความเข้าใจช่วงของผลลัพธ์จาก event generator ที่อิงการแจกแจงแบบปกติ (Gaussian)

import random as rd
import numpy as np
import matplotlib.pyplot as plt

# Generating samples: Gaussian distribution
duration_sample = [rd.gauss(25, 5) 
for i in range(5000)]

# Plotting
plt.scatter(duration_sample, np.r_[0:5000], 
marker='.', c=duration_sample, cmap='CMRmap')
plt.xlabel("Duration [min]")
plt.ylabel("Monte Carlo Runs")

การแสดงผลลัพธ์ กราฟแสดงการสุ่มตัวอย่าง Monte Carlo สำหรับระยะเวลาที่สร้างจากการแจกแจงแบบ Gaussian

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

Monte Carlo sampling: โมเดล Discrete-event

วัตถุประสงค์หลัก

  • สำรวจความไม่แน่นอนของโมเดล
  • ที่เกิดจากกระบวนการที่ไม่กำหนดแน่
  • อธิบายลักษณะของความไม่แน่นอน
  • สนับสนุนการตัดสินใจ

แผนภาพแสดงระบบที่มี 4 สถานะ โดยกระบวนการต่าง ๆ เปลี่ยนสถานะเหล่านั้น เนื่องจากระยะเวลาของแต่ละกระบวนการมีความแปรผันทุกครั้งที่ทำซ้ำ จึงทำให้จำนวนความเป็นไปได้ของสถานะระบบโมเดลเพิ่มขึ้นตามลำดับของกระบวนการ

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

Monte Carlo sampling: โมเดล Discrete-event

  • ความไม่แน่นอนในระยะเวลาของแต่ละกระบวนการแพร่กระจายผ่านระบบ

  • ส่งผลให้เส้นทางของโมเดลแตกต่างกัน

  • เรียกว่า Response Envelope

ตัวอย่าง:

n_trajectories = 50

process_1 = {"Name": "Raw_material", 
             "OperationTime": 20, 
             "MaxDelayTimePercent": 10}
process_2 = {"Name": "Unloading", 
            "OperationTime": 15, 
            "MaxDelayTimePercent": 5}

กราฟแสดง response envelope ของกิจกรรมการผลิตที่ประกอบด้วยกระบวนการต่อเนื่องหลายขั้นตอน

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

มาฝึกกันเถอะ!

การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

Preparing Video For Download...