Eventos y procesos deterministas

Simulación de eventos discretos en Python

Diogo Costa (PhD, MSc)

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

Determinismo de eventos (o procesos)

NOTA: Se usan "evento" y "proceso" como sinónimos.

¿Qué es el determinismo de eventos (o procesos)?

  • Capacidad de predecir un proceso con precisión
  • El proceso se denomina "determinista"

¿Por qué importan los procesos deterministas?

  • Las actividades naturales y humanas son complejas
  • Muchos procesos y recursos interdependientes
  • Algunos procesos se repiten siempre igual
  • Su impacto en la salida del sistema se puede predecir con precisión
Simulación de eventos discretos en Python

Ejemplos de procesos o eventos deterministas

Mundo natural

  • Altura de las mareas
  • Aceleración por gravedad (9,81 m$^2$/s)
  • Movimiento de los planetas en el sistema solar
  • Velocidad del sonido en el aire (331,29 m/s)
  • Velocidad de la luz (300.000 km/s)
  • Congelación del agua (a 0 °C)

De origen humano

  • Caudal de un grifo
  • Velocidad de una embotelladora de agua
  • Tiempo que tarda una cafetera en hacer un café
  • Calor emitido por un horno a 230 °C
  • Ciclos programados de una lavadora
  • Funcionamiento de un microondas
Simulación de eventos discretos en Python

Representar eventos deterministas en modelos de eventos discretos

Procesos deterministas

  • Impacto predecible en sistemas dinámicos
  • Duración conocida
  • Se repiten de la misma forma

La duración del proceso debe contabilizarse en el tiempo de simulación

# Deterministic processes (time in hours)
duration_process_1 = 10
duration_process_2 = 5

while sim_time < total_sim_time:
# Update simulation time: Process 1 sim_time += duration_process_1
# Update simulation time: Process 2 sim_time += duration_process_2
Simulación de eventos discretos en Python

Representar eventos deterministas con SimPy

Implementación en SimPy de eventos deterministas:

  • El método .timeout() registra la duración del proceso
    • Ignora las unidades de tiempo
    • Trata el tiempo como números
    • Las unidades deben ser coherentes en todo el modelo
# Deterministic processes
duration_process_1 = 10
duration_process_2 = 5

while True:

   # Update simulation time: Process 1
   yield env.timeout(duration_process_1)

   # Update simulation time: Process 2
   yield env.timeout(duration_process_2)

Simulación de eventos discretos en Python

¡Vamos a practicar!

Simulación de eventos discretos en Python

Preparing Video For Download...