ComenzarEmpieza gratis

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.

Table with process names and their duration statistics, namely mean and standard deviation.

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. Monte Carlo trajectories for different process scenario.

Este ejercicio forma parte del curso

Simulación de eventos discretos en Python

Ver curso

Instrucciones del ejercicio

  • Crea un bucle para ejecutar trayectorias de simulación mientras run_i sea igual a cero o total_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
____
Editar y ejecutar código