Eșantionarea Monte Carlo pentru modele de simulare discretă
Imaginează-ți o fabrică ce produce ceasuri de perete. Cererea pentru aceste ceasuri a crescut considerabil, depășind capacitatea de producție. Fabrica funcționează la capacitate maximă de luni întregi, iar tu vrei să îi înțelegi mai bine comportamentul și blocajele, astfel încât să poți lua decizii manageriale mai bine fundamentate și să planifici investiții și extinderi viitoare.
A fost dezvoltat un model de simulare discretă a proceselor din fabrică, iar acum vrei să rulezi o analiză de eșantionare Monte Carlo pentru a explora diferite scenarii. Procesul de fabricație este rezumat în tabelul de mai jos, iar informațiile sunt stocate într-o listă de dicționare numită processes, cu câte un dicționar pentru fiecare proces. Cheile acestui dicționar corespund antetelor coloanelor din tabel. Următoarele pachete au fost deja importate: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd și time.

Bucla de eșantionare Monte Carlo va genera o serie de traiectorii posibile pentru procese, așa cum este ilustrat în figura de mai jos.

Acest exercițiu face parte din cursul
Simulare de evenimente discrete în Python
Instrucțiuni pentru exercițiu
- Configurează bucla
forprincipală de eșantionare Monte Carlo pentrun_trajectorieseșantioane, folosind variabila auxiliarăt. - Folosește distribuția Gaussiană din pachetul
randompentru a estima pseudo-aleator durata fiecărui proces.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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()