Začněte nyníZačněte zdarma

Monte Carlo sampling pro modely diskrétních událostí

Představ si továrnu vyrábějící nástěnné hodiny. Jejich popularita roste a poptávka nyní převyšuje výrobní kapacitu. Továrna pracuje na plný výkon už několik měsíců a ty chceš lépe porozumět jejímu chování a úzkým místům, aby bylo možné přijímat informovanější manažerská rozhodnutí a plánovat budoucí investice a rozšíření.

Byl vytvořen model diskrétních událostí výrobních procesů továrny a nyní chceš spustit analýzu Monte Carlo samplingu pro průzkum různých scénářů. Výrobní proces je shrnut v tabulce níže a informace jsou uloženy v seznamu slovníků s názvem processes, přičemž každý slovník odpovídá jednomu procesu. Klíče slovníku odpovídají záhlavím sloupců tabulky. Následující balíčky již byly naimportovány: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd a time.

Tabulka s názvy procesů a jejich statistikami doby trvání, konkrétně průměrem a směrodatnou odchylkou.

Smyčka Monte Carlo samplingu vytvoří sérii možných průběhů procesů, jak ukazuje obrázek. Trajektorie Monte Carlo pro různé procesní scénáře.

Toto cvičení je součástí kurzu

Diskrétní simulace událostí v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Nastav hlavní smyčku for pro Monte Carlo sampling s n_trajectories vzorky a pomocnou proměnnou t.
  • Použij Gaussovo rozdělení z balíčku random k pseudonáhodnému odhadu doby trvání procesu.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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()
Upravit a spustit kód