離散事件模型的 Monte Carlo 取樣
想像一間生產掛鐘的工廠。由於產品越來越受歡迎,需求已經超過產能。工廠連續數月滿載運轉。你希望更了解其運作行為與瓶頸,方便做出更有根據的管理決策,並規劃未來的投資與擴產。
工廠流程的離散事件模型已建立。現在你要執行 Monte Carlo 取樣分析,來探索不同情境。下表摘要了製造流程;這些資訊已儲存在名為 processes 的字典 list 中,每個流程對應一個字典。字典的鍵名稱對應到表格的欄位標題。以下套件已為你匯入:numpy as np、matplotlib.pyplot as plt、seaborn as sns、random、pandas as pd,以及 time。

Monte Carlo 取樣的迴圈會產生一系列可能的流程軌跡,如下圖所示。

本練習屬於課程
Python 的離散事件模擬
練習說明
- 設定主要的 Monte Carlo 取樣 for 迴圈,使用虛擬變數
t,取樣次數為n_trajectories。 - 使用
random套件的 Gaussian 分佈來偽隨機估計流程所需時間。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
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()