Combinando procesos deterministas y no deterministas

Simulación de eventos discretos en Python

Diogo Costa (PhD, MSc)

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

Procesos deterministas y no deterministas

Diagrama que muestra la secuencia de procesos de un sistema. Empieza con un proceso determinista, Proceso A, seguido de uno no determinista, Proceso B, y termina con otro determinista, Proceso C.

Ejemplo: Gestión del flujo de pasajeros en aeropuertos

  • No determinista: Momento en que llega una persona al aeropuerto
  • Determinista: Transporte del equipaje dentro del aeropuerto tras el check-in
Simulación de eventos discretos en Python

Ejemplo: Línea de ensamblaje en una fábrica

Procesos deterministas

  • Transporte de materia prima a la fábrica
  • Pasos totalmente automatizados
  • Inspecciones de calidad
  • Empaquetado
  • Transporte del nuevo producto a clientes

Ejemplo: Máquina de soldadura

Tiempo de proceso = Longitud de la línea de soldadura × Velocidad de la máquina de soldadura

Procesos no deterministas

  • Pedido de materia prima
  • Ensamblaje manual de piezas complejas

Diagrama de dispersión que muestra la duración de un ensamblaje manual concreto a medida que se repite varias veces.

Simulación de eventos discretos en Python

Procesos deterministas

Ejemplo: Línea de ensamblaje con soldadura

  • 2 procesos deterministas
    welding_1

welding_2

  • welding_1

    • Nombre del proceso: Welding component A

    • Tiempo de proceso: 5 horas

  • welding_2
    • Nombre del proceso: Welding component B
    • Tiempo de proceso: length * hours_per_length

Creando un dictionary para cada proceso:

welding_1 = {
    "name": "Welding component A",
    "time_hours": 5
}

length = 20   # meters
hours_per_length = 0.2  # hours 

welding_2 = {
    "name": "Welding component B",
    "time_hours": length * hours_per_length
}
Simulación de eventos discretos en Python

Procesos no deterministas

Ejemplo: La línea de ensamblaje

  • 2 procesos no deterministas manual_assembly_1

manual_assembly_2

  • manual_assembly_1

    • Nombre del proceso: Manual Assembly A
    • Tiempo medio de proceso: 80 horas

    • Desviación estándar: 5 horas

  • manual_assembly_2
    • Nombre del proceso: Manual Assembly B"
    • Tiempo medio de proceso: 20 horas
  • Desviación estándar: 2 horas

Creando un dictionary para cada proceso:

manual_assembly_1 = {
    "name": "Manual Assembly A",
    "time_hours": 80,
    "std_hours": 5
}
manual_assembly_2 = {
    "name": "Manual Assembly B",
    "time_hours": 20,
    "std_hours": 2}
Simulación de eventos discretos en Python

Crea una simulación basada en eventos

Secuencia de procesos de fabricación Diagrama que muestra la secuencia de procesos de una actividad de fabricación, que incluye en orden cronológico: welding_1, manual_assembly_1, manual_assembly_2 y welding_2.

Modelo de eventos discretos

# Iniciar la variable de seguimiento del tiempo
time = numpy.zeros(number_of_processes)

# Progresión por siguiente evento time[0] = 0 time[1] = time[0] + welding_1["time_hours"] time[2] = time[1] + rd.gauss(manual_assembly_1["time_hours"], manual_assembly_1["std_hours"]) time[3] = time[2] + rd.gauss(manual_assembly_2["time_hours"], manual_assembly_2["std_hours"]) time[4] = time[3] + welding_2["time_hours"] time[5] = time[4]
Simulación de eventos discretos en Python

Unidades de tiempo y exploración del modelo

  • Unidades de tiempo
    • Asegúrate de que las unidades sean coherentes en todos los procesos.
Simulación de eventos discretos en Python

¡Vamos a practicar!

Simulación de eventos discretos en Python

Preparing Video For Download...