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

Connected

演習

SimPy を用いた離散事象モデルのモンテカルロサンプリング

それでは、同じモンテカルロサンプリング分析を、モデルの SimPy 版で構築してみましょう。SimPy モデルには、さまざまなプロセスをシミュレートするジェネレーター manufacturing_process と、モデルを複数回実行して、情報を NumPy 配列 time_record に保存する関数 run_monte_carlo があります。

結果をプロットするコードは前の演習で使ったものと似ていますが、ここでは 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")
    fig.set(xlim=(0, len(processes) + 1))
    plt.plot() 

モンテカルロサンプリングのループは、図のように、取り得るプロセスの軌跡を複数本生成します。 Monte Carlo trajectories for different process scenario.

指示

100 XP
  • process_duration を反映して待機し、yield します。
  • 現在時刻を time_record に保存します。
  • ダミー変数 t を用いて n_trajectories 回の for ループを回します。
  • SimPy の環境を作成し、プロセスを追加してモデルを実行します。