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 groei/uitbreiding
  • Uitvoeren van stresstests
  • Voorbereiden op extreme situaties
Discrete Event Simulation in Python

Montecarlo-steekproeven

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

Parameter-ruimte naarmate samples toenemen

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

Plot met 1500 Montecarlo-samples. Sommige patronen in de modelresultaten worden zichtbaar maar blijven beperkt.

Plot met 5000 Montecarlo-samples. De modelresultaten tonen nu duidelijke patronen in een rasterstructuur.

Discrete Event Simulation in Python

Montecarlo-steekproeven: Procesonderzoek

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

import random as rd
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
  • Ontstaan door niet-deterministische processen
  • Onzekerheid karakteriseren
  • Besluitvorming ondersteunen

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

Discrete Event Simulation in Python

Montecarlo-steekproeven: Discrete-eventmodellen

  • Onzekerheid in elke procesduur 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 met 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...