Monte Carlo-sampling för diskreta händelsemodeller
Föreställ dig en fabrik som tillverkar väggklockor. Klockorna har blivit allt populärare och efterfrågan överstiger nu produktionskapaciteten. Fabriken har arbetat på full kapacitet i månader, och du vill förstå dess beteende och flaskhalsar bättre för att kunna fatta välgrundade beslut och planera framtida investeringar och expansion.
En diskret händelsemodell av fabrikens processer har tagits fram, och nu vill du köra en Monte Carlo-samplinganalys för att utforska olika scenarier. Tillverkningsprocessen sammanfattas i tabellen nedan, och informationen har lagrats i en lista med ordböcker med namnet processes, med en ordbok per process. Nycklarna i ordboken motsvarar tabellens kolumnrubriker. Följande paket har importerats åt dig: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd och time.

Monte Carlo-samplingsloopen genererar en serie möjliga processtrajektorier, som visas i figuren.

Den här övningen är en del av kursen
Diskret händelsesimulering i Python
Övningsinstruktioner
- Sätt upp den huvudsakliga Monte Carlo-samplingsloopen med en
for-slinga förn_trajectoriessampel med dummyvariabelnt. - Använd Gaussfördelningen från paketet
randomför att pseudoslumpmässigt skatta processens varaktighet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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()