製造最適化:Search & Stop
前の演習で作成した壁掛け時計の工場モデルを使い、Monte Carlo サンプリングに基づく「Search & Stop」最適化手法を適用して、クリティカルなボトルネック工程を特定しましょう。
製造プロセスは下の表に要約されています。この情報は、各工程を1つの辞書で表し、それらを要素とする辞書のリスト processes に保存されています。各辞書のキーは表の列見出しに対応しています。

この演習でプロットを生成する plot_results() メソッドはあらかじめ読み込まれており、以下のとおりです。
def plot_results():
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')
plt.grid()
fig.set(xlim=(0, len(processes)))
fig.set(ylim=(0, 180))
fig.set(xticks=process_line_space)
plt.plot()
Monte Carlo サンプリングのループは、可能な工程トラジェクトリを複数生成し、希望する条件が満たされた時点で停止します。以下の図のようになります。

この演習はコースの一部です
Pythonで学ぶ離散事象シミュレーション
演習の手順
run_iが 0 に等しい、またはtotal_duration[run_i]が 85 時間を超えるあいだシミュレーショントラジェクトリを実行するループを設定します(停止条件:total_duration[run_i]が 85 時間以下)。- 関数
run_monte_carlo()に格納された Monte Carlo エンジンを実行します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
def run_monte_carlo():
run_i = 0
# While-loop with the stop condition
____
run_i += 1
env = simpy.Environment()
env.process(manufractoring_process(env))
env.run()
plot_results()
plt.show()
# Call the run_monte_carlo function
____