Simulationsensembles: Monte-Carlo-Sampling

Diskrete-Ereignis-Simulation mit Python

Diogo Costa (PhD, MSc)

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

Systemreaktion auf verschiedene Szenarien

  • Nichtdeterministische Prozesse verursachen Varianz in der Systemantwort
  • Vorheriges Video: Modellierung nichtdeterministischer Prozesse gelernt
  • Unsicherheitsfortpflanzung im Modell charakterisieren
  • Systemreaktion auf verschiedene Szenarien untersuchen

Das hilft bei

  • Planung von Geschäftserweiterungen
  • Durchführung von Stresstests
  • Vorbereitung auf Extremsituationen
Diskrete-Ereignis-Simulation mit Python

Monte-Carlo-Sampling

  • Wiederholtes Zufalls-Sampling
  • System mit kleinen Änderungen modellieren
  • Systemreaktion auf Änderungen prüfen

Parameterraum bei steigender Stichzahl

Diagramm mit Ergebnissen von 100 Monte-Carlo-Samples. Muster der Modellergebnisse sind nicht sichtbar.

Diagramm mit Ergebnissen von 1500 Monte-Carlo-Samples. Einige Muster der Modellergebnisse sind nun erkennbar, aber noch begrenzt.

Diagramm mit Ergebnissen von 5000 Monte-Carlo-Samples. Die Modellergebnisse zeigen nun klare Muster in Gitterstruktur.

Diskrete-Ereignis-Simulation mit Python

Monte-Carlo-Sampling: Prozessanalyse

Beispiel: Monte-Carlo-Lauf, um die Spannweite der Ausgaben eines Ereignisgenerators mit normaler (Gauß-)Verteilung zu verstehen

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")

Ergebnisse plotten Plot zeigt Monte-Carlo-Sampling für Dauern aus der Gauß-Verteilung.

Diskrete-Ereignis-Simulation mit Python

Monte-Carlo-Sampling: Diskrete-Ereignis-Modelle

Ziel

  • Modellunsicherheit erkunden
  • Entsteht durch nichtdeterministische Prozesse
  • Unsicherheit charakterisieren
  • Entscheidungen unterstützen

Diagramm eines Systems mit vier Zuständen, die durch Prozesse wechseln. Wegen variabler Prozessdauern bei jeder Wiederholung wächst die Zahl möglicher Systemzustände über die Prozessfolge.

Diskrete-Ereignis-Simulation mit Python

Monte-Carlo-Sampling: Diskrete-Ereignis-Modelle

  • Unsicherheit in jeder Prozessdauer pflanzt sich durchs System fort

  • Führt zu unterschiedlichen Modelltrajektorien

  • Genannt „Response Envelope“

Beispiel:

n_trajectories = 50

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

Diagramm mit dem Response Envelope einer Fertigungsaktivität mit einer Reihe sequentieller Prozesse.

Diskrete-Ereignis-Simulation mit Python

Lass uns üben!

Diskrete-Ereignis-Simulation mit Python

Preparing Video For Download...