Próbkowanie Monte Carlo dla modeli zdarzeń dyskretnych
Wyobraź sobie fabrykę produkującą zegary ścienne. Popyt na nie stale rośnie i przekroczył już możliwości produkcyjne zakładu. Fabryka pracuje na pełnych obrotach od wielu miesięcy, a ty chcesz lepiej zrozumieć jej działanie i wąskie gardła – po to, by móc podejmować bardziej świadome decyzje zarządcze oraz planować przyszłe inwestycje i rozbudowę.
Opracowano model zdarzeń dyskretnych procesów fabrycznych, a teraz chcesz przeprowadzić analizę próbkowania Monte Carlo w celu zbadania różnych scenariuszy. Proces produkcyjny jest podsumowany w poniższej tabeli, a dane zostały zapisane na liście słowników o nazwie processes – po jednym słowniku na każdy proces. Klucze słownika odpowiadają nagłówkom kolumn tabeli. Następujące pakiety zostały już zaimportowane: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd oraz time.

Pętla próbkowania Monte Carlo wygeneruje zestaw możliwych trajektorii procesów, jak pokazano na rysunku.

To ćwiczenie jest częścią kursu
Symulacja zdarzeń dyskretnych w Pythonie
Instrukcje do ćwiczenia
- Skonfiguruj główną pętlę
forpróbkowania Monte Carlo dlan_trajectoriespróbek, używając zmiennej pomocniczejt. - Użyj rozkładu Gaussa z pakietu
random, aby pseudolosowo oszacować czas trwania każdego procesu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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()