Monte Carlo-steekproeven voor discrete-evenementmodellen
Stel je een fabriek voor die wandklokken produceert. De klokken worden steeds populairder en de vraag is nu hoger dan de productiecapaciteit. De fabriek draait al maanden op volle toeren, en je wilt het gedrag en de knelpunten beter begrijpen zodat je beter onderbouwde managementbeslissingen kunt nemen en toekomstige investeringen en uitbreiding kunt plannen.
Er is een discrete-evenementmodel van de fabrieksprocessen ontwikkeld, en je wilt nu een Monte Carlo-steekproefanalyse uitvoeren om scenario’s te verkennen. Het productieproces is samengevat in de onderstaande tabel, en de informatie is opgeslagen in een lijst met dictionaries met de naam processes, met één dictionary per proces. De keys van deze dictionary komen overeen met de kolomkoppen van de tabel. De volgende pakketten zijn alvast voor je geïmporteerd: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd en time.

De Monte Carlo-steekproeflus zal een reeks mogelijke procestrajecten opleveren, zoals in de figuur te zien is.

Deze oefening maakt deel uit van de cursus
Discrete Event Simulation in Python
Oefeninstructies
- Zet de hoofd-for-lus voor Monte Carlo-steekproeven op voor
n_trajectoriessamples met de dummyvariabelet. - Gebruik de Gauss-verdeling uit het pakket
randomom de procesduur pseudo-willekeurig te schatten.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
n_trajectories = 100
# Run a Monte-Carlo for-loop for n_trajectories samples
____
for p in range(len(processes)):
proc_p = processes[p]
# Random gauss method to pseudo-randomly estimate process duration
process_duration = ____(proc_p["Average_Duration"], proc_p["Standard_Deviation"])
time_record[p + 1] = time_record[p] + process_duration
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") # Step_10
fig.set(xlim=(0, len(processes) + 1))
plt.plot()
plt.grid()
plt.show()