Simulatie-ensembles: Montecarlo-steekproeven

Discrete Event Simulation in Python

Diogo Costa (PhD, MSc)

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

Systeemrespons op verschillende scenario's

  • Niet-deterministische processen veroorzaken variatie in systeemrespons
  • Vorige video: geleerd hoe je niet-deterministische processen modelleert
  • Onzekerheidspropagatie in model karakteriseren
  • Systeemrespons op verschillende scenario's bestuderen

Dit helpt bij

  • Plannen van bedrijfsuitbreidingen
  • Uitvoeren van stresstests
  • Voorbereiden op extreme situaties
Discrete Event Simulation in Python

Montecarlo-steekproeven

  • Herhaald willekeurig steekproeven
  • Modelleer systeem met kleine wijzigingen
  • Bekijk systeemrespons op verandering

Parameter-ruimte bij meer samples

Plot met resultaten van 100 Montecarlo-samples. Patronen in de modelresultaten zijn niet zichtbaar.

Plot met resultaten van 1500 Montecarlo-samples. Sommige patronen in de modelresultaten zijn nu zichtbaar maar nog beperkt.

Plot met resultaten van 5000 Montecarlo-samples. De modelresultaten tonen nu duidelijke patronen, met een rasterstructuur.

Discrete Event Simulation in Python

Montecarlo-steekproeven: Procesanalyse

Voorbeeld: Montecarlo-run om het bereik van outputs te begrijpen van een eventgenerator op basis van een normale (Gauss-)verdeling

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

Resultaten plotten Plot met Montecarlo-steekproeven voor duurwaarden op basis van de normale verdeling.

Discrete Event Simulation in Python

Montecarlo-steekproeven: Discrete-eventmodellen

Doel

  • Onzekerheid in het model verkennen
  • Ontstaat uit niet-deterministische processen
  • Onzekerheid karakteriseren
  • Besluitvorming ondersteunen

Diagram van een systeem met vier toestanden, waar processen de toestanden veranderen. Door variatie in de duur van elke herhaling neemt het aantal mogelijke systeemsituaties toe door de procesreeks.

Discrete Event Simulation in Python

Montecarlo-steekproeven: Discrete-eventmodellen

  • Onzekerheid in elke procestijd verspreidt zich door het systeem

  • Leidt tot verschillende modeltrajecten

  • Dit heet de response envelope

Voorbeeld:

n_trajectories = 50

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

Plot van de response envelope van een productie-activiteit met een reeks sequentiële processen.

Discrete Event Simulation in Python

Laten we oefenen!

Discrete Event Simulation in Python

Preparing Video For Download...