1. 学ぶ
  2. /
  3. コース
  4. /
  5. Pythonで学ぶ離散事象シミュレーション

Connected

演習

製造最適化:Search & Stop

前の演習で作成した壁掛け時計の工場モデルを使い、Monte Carlo サンプリングに基づく「Search & Stop」最適化手法を適用して、クリティカルなボトルネック工程を特定しましょう。

製造プロセスは下の表に要約されています。この情報は、各工程を1つの辞書で表し、それらを要素とする辞書のリスト processes に保存されています。各辞書のキーは表の列見出しに対応しています。

Table with process names and their duration statistics, namely mean and standard deviation.

この演習でプロットを生成する 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 サンプリングのループは、可能な工程トラジェクトリを複数生成し、希望する条件が満たされた時点で停止します。以下の図のようになります。 Monte Carlo trajectories for different process scenario.

指示

100 XP
  • run_i が 0 に等しい、または total_duration[run_i] が 85 時間を超えるあいだシミュレーショントラジェクトリを実行するループを設定します(停止条件:total_duration[run_i] が 85 時間以下)。
  • 関数 run_monte_carlo() に格納された Monte Carlo エンジンを実行します。