การผสมผสานกระบวนการแบบ Deterministic และ Non-deterministic

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

Diogo Costa (PhD, MSc)

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

กระบวนการแบบ Deterministic และ Non-deterministic

แผนภาพแสดงลำดับกระบวนการของระบบ เริ่มจากกระบวนการแบบ Deterministic (Process A) ตามด้วยกระบวนการแบบ Non-deterministic (Process B) และสิ้นสุดด้วยกระบวนการแบบ Deterministic อีกครั้ง (Process C)

ตัวอย่าง: การจัดการการไหลของผู้โดยสารในสนามบิน

  • Non-deterministic: เวลาที่ผู้โดยสารมาถึงสนามบิน
  • Deterministic: การขนส่งกระเป๋าภายในสนามบินหลังจากเช็คอินแล้ว
การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

ตัวอย่าง: สายการประกอบในโรงงาน

กระบวนการแบบ Deterministic

  • การขนส่งวัตถุดิบไปยังโรงงาน
  • ขั้นตอนอัตโนมัติเต็มรูปแบบ
  • การตรวจสอบคุณภาพ
  • การบรรจุหีบห่อ
  • การขนส่งสินค้าไปยังลูกค้า

ตัวอย่าง: เครื่องเชื่อม

เวลาในการประมวลผล = ความยาวของแนวเชื่อม x ความเร็วของเครื่องเชื่อม

กระบวนการแบบ Non-deterministic

  • การสั่งซื้อวัตถุดิบ
  • การประกอบชิ้นส่วนซับซ้อนด้วยมือ

Scatter plot แสดงระยะเวลาของการประกอบด้วยมือที่ทำซ้ำหลายครั้ง

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

กระบวนการแบบ Deterministic

ตัวอย่าง: สายการประกอบที่มีการเชื่อม

  • กระบวนการแบบ Deterministic 2 ขั้นตอน
    welding_1

welding_2

  • welding_1

    • ชื่อกระบวนการ: Welding component A

    • เวลาในการประมวลผล: 5 ชั่วโมง

  • welding_2
    • ชื่อกระบวนการ: Welding component B
    • เวลาในการประมวลผล: length * hours_per_length

สร้าง dictionary สำหรับแต่ละกระบวนการ:

welding_1 = {
    "name": "Welding component A",
    "time_hours": 5
}

length = 20   # meters
hours_per_length = 0.2  # hours 

welding_2 = {
    "name": "Welding component B",
    "time_hours": length * hours_per_length
}
การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

กระบวนการแบบ Non-deterministic

ตัวอย่าง: สายการประกอบ

  • กระบวนการแบบ Non-deterministic 2 ขั้นตอน manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • ชื่อกระบวนการ: Manual Assembly A
    • เวลาในการประมวลผลเฉลี่ย: 80 ชั่วโมง

    • ค่าเบี่ยงเบนมาตรฐาน: 5 ชั่วโมง

  • manual_assembly_2
    • ชื่อกระบวนการ: Manual Assembly B"
    • เวลาในการประมวลผลเฉลี่ย: 20 ชั่วโมง
  • ค่าเบี่ยงเบนมาตรฐาน: 2 ชั่วโมง

สร้าง dictionary สำหรับแต่ละกระบวนการ:

manual_assembly_1 = {
    "name": "Manual Assembly A",
    "time_hours": 80,
    "std_hours": 5
}
manual_assembly_2 = {
    "name": "Manual Assembly B",
    "time_hours": 20,
    "std_hours": 2}
การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

สร้างการจำลองแบบ Event-based

ลำดับกระบวนการในการผลิต แผนภาพแสดงลำดับกระบวนการของกิจกรรมการผลิต ได้แก่ welding_1, manual_assembly_1, manual_assembly_2 และ welding_2 ตามลำดับ

โมเดล Discrete-event

# Initiate time-tracking variable
time = numpy.zeros(number_of_processes)

# Next-event time progression time[0] = 0 time[1] = time[0] + welding_1["time_hours"] time[2] = time[1] + rd.gauss(manual_assembly_1["time_hours"], manual_assembly_1["std_hours"]) time[3] = time[2] + rd.gauss(manual_assembly_2["time_hours"], manual_assembly_2["std_hours"]) time[4] = time[3] + welding_2["time_hours"] time[5] = time[4]
การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

หน่วยเวลาและการสำรวจโมเดล

  • หน่วยเวลา
    • ตรวจสอบให้หน่วยเวลาของทุกกระบวนการสอดคล้องกัน
การจำลองเหตุการณ์แบบไม่ต่อเนื่องด้วย Python

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

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

Preparing Video For Download...