Optimización en fabricación: Search & Stop
Vamos a usar el modelo de fábrica de relojes de pared creado en un ejercicio anterior y a aplicar un enfoque de optimización "Search & Stop" basado en muestreo Monte Carlo para identificar los procesos que son cuellos de botella críticos.
El proceso de fabricación se resume en la tabla siguiente, y la información se ha guardado 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.

El método plot_results() para generar las gráficas de este ejercicio ya está precargado y se muestra a continuación.
def plot_results():
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')
plt.grid()
fig.set(xlim=(0, len(processes)))
fig.set(ylim=(0, 180))
fig.set(xticks=process_line_space)
plt.plot()
El bucle de muestreo Monte Carlo producirá una serie de posibles trayectorias del proceso y se detendrá cuando se cumpla la condición deseada, como se muestra en la figura.

Este ejercicio forma parte del curso
Simulación de eventos discretos en Python
Instrucciones del ejercicio
- Crea un bucle para ejecutar trayectorias de simulación mientras
run_isea igual a cero ototal_duration[run_i]sea mayor que 85 horas (es decir, condición de parada:total_duration[run_i]menor o igual que 85 horas). - Ejecuta el motor de Monte Carlo almacenado en la función
run_monte_carlo().
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
def run_monte_carlo():
run_i = 0
# While-loop with the stop condition
____
run_i += 1
env = simpy.Environment()
env.process(manufractoring_process(env))
env.run()
plot_results()
plt.show()
# Call the run_monte_carlo function
____