離散イベントモデルのためのモンテカルロサンプリング
壁掛け時計を製造する工場を想像してください。時計は人気が高まり、需要が生産能力を上回っています。工場は数カ月にわたりフル稼働しており、今後の投資や拡張を計画し、より良い経営判断ができるよう、工場の振る舞いやボトルネックをより深く理解したいと考えています。
工場プロセスの離散イベントモデルは作成済みで、これからシナリオ探索のためにモンテカルロサンプリング分析を実行します。製造プロセスは以下の表に要約されており、情報は各プロセスにつき 1 つの辞書からなる辞書のリスト processes に保存されています。この辞書のキーは表の列見出しに対応します。次のパッケージはすでにインポートされています:numpy as np、matplotlib.pyplot as plt、seaborn as sns、random、pandas as pd、time。

モンテカルロのサンプリングループは、下図のように、起こり得るプロセス軌跡の系列を生成します。

この演習はコースの一部です
Pythonで学ぶ離散事象シミュレーション
演習の手順
n_trajectories個のサンプルについて、ダミー変数tを用いたメインのモンテカルロサンプリング用 for ループを設定します。- プロセスの所要時間を疑似乱数で見積もるため、
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()