Funciones objetivo y optimización del sistema

Simulación de eventos discretos en Python

Diogo Costa (PhD, MSc)

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Optimización del sistema

  • Optimización del sistema

    • Identificar la configuración operativa óptima
  • Procesos con intervención humana

    • Máxima producción con el menor coste (menos recursos, menos tiempo)
  • Identificar procesos con mayor impacto en la salida del sistema

  • Muestreo Monte Carlo

    • Medir el éxito y clasificar resultados
  • Funciones objetivo

    • Función que fija metas de rendimiento
Simulación de eventos discretos en Python

Función objetivo

  • Expresión matemática que define el objetivo de salida

  • Puntuar escenarios de simulación

Ejemplo

  • Proceso A: 35%
  • Proceso B: 20%
  • Proceso C: 45%

Total: 100%

  • Proceso C tiene mayor peso

Buscar y Parar: Ejecuta configuraciones del modelo y para cuando se cumpla la condición deseada

while total_duration < 24:
      model_to_run()

Puntuar y clasificar: Puntúa resultados según criterios ponderados

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Simulación de eventos discretos en Python

Enfoque 1: Buscar y Parar

  • Muestreo Monte Carlo para ejecutar múltiples escenarios
  • Consta de ocurrencias de procesos no deterministas
  • El bucle de búsqueda del escenario óptimo se interrumpe al cumplirse la condición

Ejemplo

scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
  scenario_num += 1
  env = simpy.Environment()
  env.process(manufacturing_proc(env))
  env.run()
  plot_results()

Gráfico de la envolvente de respuesta de una actividad de fabricación con procesos secuenciales; la línea azul inferior es la última ejecución que cumplió los requisitos del método Buscar y Parar.

Simulación de eventos discretos en Python

Enfoque 2: Puntuar y clasificar

  • Muestreo Monte Carlo para ejecutar múltiples escenarios
  • Puntuar y clasificar resultados

Ejemplo: industria manufacturera

Con tareas secuenciales (procesos), como una línea de producción de coches.

def objective_function_calc():
  score_objfunc = np.ones(num_scenarios)

  for s in range(num_scenarios):
    for p in range(len(processes)):

      score_objfunc[s] += (
         processes[p]["duration_hours"]
         * processes[p]["score_weight"])
Simulación de eventos discretos en Python

Enfoque 2: Puntuar y clasificar

Puntuación

"ROJO": Puntuación baja; "AZUL": Puntuación alta Diagrama de dispersión con la puntuación de la función objetivo para los distintos escenarios simulados de los procesos "Descarga y Preparación", "Corte" y "Pulido".

Ranking

Clasificación de ejecuciones por puntuación Gráfico que clasifica los escenarios según la puntuación de la función objetivo para los procesos "Descarga y Preparación", "Corte" y "Pulido".

Simulación de eventos discretos en Python

Identificar procesos críticos que limitan el rendimiento

Buscar y parar

Gráfico de la envolvente de respuesta de una actividad de fabricación con procesos secuenciales; la línea azul inferior es la última ejecución que cumplió los requisitos del método Buscar y Parar. Se resaltan las duraciones mínimas por proceso de las mejores simulaciones.

  • La línea "azul" cumplió el criterio de "parada"

    • Duración total = 30 min
  • Desglose de la "mejor" simulación:

    • Proceso 1: ~10 min (sum = 20 min)
    • Proceso 2: ~10 min (sum = 20 min)
    • Proceso 3: ~8 min (sum = 28 min)
    • Proceso 4: ~2 min (sum = 30 min)
  • El "Proceso 1" es crítico para lograrlo

Simulación de eventos discretos en Python

Identificar procesos críticos que limitan el rendimiento

Puntuación

Objetivo: menor puntuación = menor duración Diagrama de dispersión con la puntuación de la función objetivo para los distintos escenarios simulados de los procesos "Descarga y Preparación", "Corte" y "Pulido". Se resaltan las duraciones mínimas por proceso de las mejores simulaciones.

Ranking

El "Proceso 1" es crítico para lograrlo Gráfico que clasifica los escenarios según la puntuación de la función objetivo para los procesos "Descarga y Preparación", "Corte" y "Pulido". Se resaltan las duraciones mínimas por proceso de las mejores simulaciones.

Simulación de eventos discretos en Python

¡Vamos a practicar!

Simulación de eventos discretos en Python

Preparing Video For Download...