เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสุ่มตัวอย่างแบบ Monte Carlo สำหรับแบบจำลอง Discrete-Event

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

ได้มีการพัฒนาแบบจำลอง Discrete-Event ของกระบวนการในโรงงานขึ้นมาแล้ว และตอนนี้คุณต้องการรันการวิเคราะห์การสุ่มตัวอย่างแบบ Monte Carlo เพื่อสำรวจสถานการณ์ต่าง ๆ กระบวนการผลิตสรุปไว้ในตารางด้านล่าง โดยข้อมูลถูกเก็บไว้ในลิสต์ของ dictionary ชื่อ processes ซึ่งมีหนึ่ง dictionary ต่อหนึ่งกระบวนการ โดย key ของ dictionary นี้ตรงกับหัวคอลัมน์ในตาราง แพ็กเกจต่อไปนี้ถูกอิมพอร์ตไว้ให้แล้ว: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd และ time

ตารางแสดงชื่อกระบวนการและสถิติระยะเวลา ได้แก่ ค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน

ลูปการสุ่มตัวอย่างแบบ Monte Carlo จะสร้างชุดของเส้นทางกระบวนการที่เป็นไปได้ ดังแสดงในรูปด้านล่าง เส้นทาง Monte Carlo สำหรับสถานการณ์กระบวนการต่าง ๆ

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

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

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ตั้งค่าลูป for หลักสำหรับการสุ่มตัวอย่างแบบ Monte Carlo โดยรันจำนวน n_trajectories รอบ โดยใช้ตัวแปรชั่วคราว t
  • ใช้การแจกแจงแบบ Gaussian จากแพ็กเกจ random เพื่อประมาณระยะเวลาของกระบวนการแบบสุ่มเทียม

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

n_trajectories = 100

# Run a Monte-Carlo for-loop for n_trajectories samples
____

    for p in range(len(processes)):
        proc_p = processes[p]

        # Random gauss method to pseudo-randomly estimate process duration
        process_duration = ____(proc_p["Average_Duration"], proc_p["Standard_Deviation"])
        time_record[p + 1] = time_record[p] + process_duration

    df_disc = pd.DataFrame({cNam[0]: process_line_space, cNam[1]: time_record})
    fig = sns.lineplot(data=df_disc, x=cNam[0], y=cNam[1], marker="o")  # Step_10
    fig.set(xlim=(0, len(processes) + 1))
    plt.plot()
plt.grid()
plt.show()
แก้ไขและรันโค้ด