Muestreo Monte Carlo para modelos de eventos discretos
Imagina una fábrica que produce relojes de pared. Los relojes se han vuelto cada vez más populares y ahora la demanda supera la capacidad de producción. La fábrica lleva meses funcionando a plena capacidad y quieres entender mejor su comportamiento y cuellos de botella para tomar decisiones de gestión más informadas y planificar futuras inversiones y expansión.
Se ha desarrollado un modelo de eventos discretos de los procesos de la fábrica, y ahora quieres ejecutar un análisis de muestreo Monte Carlo para explorar escenarios. El proceso de fabricación se resume en la tabla de abajo, y la información se ha almacenado en una lista de diccionarios llamada processes, con un diccionario por proceso. Las claves de cada diccionario corresponden a los encabezados de las columnas de la tabla. Ya se han importado los siguientes paquetes: numpy as np, matplotlib.pyplot as plt, seaborn as sns, random, pandas as pd y time.

El bucle de muestreo Monte Carlo producirá una serie de posibles trayectorias de proceso, como se muestra en la figura.

Este ejercicio forma parte del curso
Simulación de eventos discretos en Python
Instrucciones del ejercicio
- Configura el bucle principal de muestreo Monte Carlo con
n_trajectoriesmuestras usando la variable ficticiat. - Usa la distribución gaussiana del paquete
randompara estimar de forma pseudoaleatoria la duración del proceso.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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()