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
Procesos con intervención humana
Identificar procesos con mayor impacto en la salida del sistema
Muestreo Monte Carlo
Funciones objetivo
Expresión matemática que define el objetivo de salida
Puntuar escenarios de simulación
Ejemplo
Total: 100%
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
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()

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"])
Puntuación
"ROJO": Puntuación baja; "AZUL": Puntuación alta

Ranking
Clasificación de ejecuciones por puntuación

Buscar y parar

La línea "azul" cumplió el criterio de "parada"
Desglose de la "mejor" simulación:
sum = 20 min)sum = 20 min)sum = 28 min)sum = 30 min)El "Proceso 1" es crítico para lograrlo
Puntuación
Objetivo: menor puntuación = menor duración

Ranking
El "Proceso 1" es crítico para lograrlo

Simulación de eventos discretos en Python