シミュレーションアンサンブル:モンテカルロサンプリング

Pythonで学ぶ離散事象シミュレーション

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

異なるシナリオへのシステム応答

  • 非決定論的プロセスがシステム応答にばらつきをもたらす
  • 前回:非決定論的プロセスのモデル化方法を学習した
  • モデルにおける不確実性の伝播を特徴付ける
  • 異なるシナリオに対するシステム応答を調べる

活用例

  • 事業拡大の計画
  • ストレステストの実施
  • 極端な状況への備え
Pythonで学ぶ離散事象シミュレーション

モンテカルロサンプリング

  • 繰り返しランダムサンプリング
  • 小さな変化を加えてシステムをモデル化
  • 変化に対するシステム応答を調べる

サンプル数増加に伴うパラメータ空間

100回のモンテカルロサンプル結果を示すグラフ。モデル結果のパターンは見られない。

1500回のモンテカルロサンプル結果を示すグラフ。パターンがわずかに見え始めているが、まだ限定的。

5000回のモンテカルロサンプル結果を示すグラフ。格子状の明確なパターンが現れている。

Pythonで学ぶ離散事象シミュレーション

モンテカルロサンプリング:プロセス調査

例:正規(ガウス)分布に基づくイベント生成器の出力範囲を調べるモンテカルロ実行

import random as rd
import numpy as np
import matplotlib.pyplot as plt

# Generating samples: Gaussian distribution
duration_sample = [rd.gauss(25, 5) 
for i in range(5000)]

# Plotting
plt.scatter(duration_sample, np.r_[0:5000], 
marker='.', c=duration_sample, cmap='CMRmap')
plt.xlabel("Duration [min]")
plt.ylabel("Monte Carlo Runs")

結果のプロット ガウス分布に基づいて生成された所要時間のモンテカルロサンプリングを示すグラフ。

Pythonで学ぶ離散事象シミュレーション

モンテカルロサンプリング:離散事象モデル

主な目的

  • モデルの不確実性を探索する
  • 非決定論的プロセスに起因する
  • 不確実性を特徴付ける
  • 意思決定を支援する

4つの状態を持つシステムの図。各プロセスの継続時間にばらつきがあるため、プロセスの連続を通じてシステム状態の可能性が増加する。

Pythonで学ぶ離散事象シミュレーション

モンテカルロサンプリング:離散事象モデル

  • 各プロセス期間の不確実性がシステム全体に伝播する

  • 異なるモデル軌跡が生じる

  • 応答エンベロープ と呼ばれる

例:

n_trajectories = 50

process_1 = {"Name": "Raw_material", 
             "OperationTime": 20, 
             "MaxDelayTimePercent": 10}
process_2 = {"Name": "Unloading", 
            "OperationTime": 15, 
            "MaxDelayTimePercent": 5}

一連の逐次プロセスを含む製造活動の応答エンベロープを示すグラフ。

Pythonで学ぶ離散事象シミュレーション

では、練習しましょう!

Pythonで学ぶ離散事象シミュレーション

Preparing Video For Download...