Monte-Carlo-Sampling für ereignisdiskrete Modelle
Stell dir eine Fabrik vor, die Wanduhr en produziert. Die Uhren werden immer beliebter, und die Nachfrage ist inzwischen höher als die Produktionskapazität. Die Fabrik läuft seit Monaten unter Volllast, und du möchtest ihr Verhalten und ihre Engpässe besser verstehen, um fundiertere Managemententscheidungen treffen und zukünftige Investitionen sowie Erweiterungen planen zu können.
Ein ereignisdiskretes Modell der Fabrikprozesse wurde entwickelt, und nun möchtest du eine Monte-Carlo-Sampling-Analyse durchführen, um Szenarien zu erkunden. Der Fertigungsprozess ist in der untenstehenden Tabelle zusammengefasst; die Informationen wurden in einer Liste von Dictionaries namens processes gespeichert, mit einem Dictionary pro Prozess. Die Keys dieser Dictionaries entsprechen den Spaltenüberschriften der Tabelle. Folgende Pakete wurden bereits importiert: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd und time.

Die Monte-Carlo-Sampling-Schleife erzeugt eine Reihe möglicher Prozesstrajektorien, wie in der Abbildung gezeigt.

Diese Übung ist Teil des Kurses
Diskrete-Ereignis-Simulation mit Python
Anleitung zur Übung
- Richte die äußere Monte-Carlo-Sampling-for-Schleife für
n_trajectoriesStichproben mit der Dummy-Variablentein. - Verwende die Gauß-Verteilung aus dem Paket
random, um die Prozessdauer pseudozufällig zu schätzen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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()