ComenzarEmpieza gratis

Desarrollar un modelo de eventos discretos

Te han pedido desarrollar un modelo de eventos discretos para una operación agrícola que ayude a asignar recursos, aumentar la productividad e identificar y eliminar cuellos de botella.

Aún estás debatiendo con tus colegas los distintos procesos implicados y con qué nivel de detalle deberían representarse en el modelo. Por ello, habéis acordado que la información se recopile en un diccionario llamado process_dict con la siguiente estructura. La idea es que este diccionario se vaya actualizando a medida que haya más información disponible sobre los procesos.

process_dict = {
    "Process name 1":  <duration>,
    "Process name 2":  <duration>,
    ...
}

Construyamos un modelo genérico de eventos discretos llamado discrete_model_farm() que pueda programar cualquier número de eventos discretos definidos en el diccionario.

Los argumentos de entrada del modelo son (en orden):

  1. process_dict: Diccionario con información sobre los procesos
  2. simulation_time: Periodo de simulación

El tiempo en el modelo se medirá en días.

Este ejercicio forma parte del curso

Simulación de eventos discretos en Python

Ver curso

Instrucciones del ejercicio

  • Inicializa las variables de estado del modelo, time (controla el tiempo) y supply_chain (controla el número de ciclos) y ponlas a cero.
  • Define la condición de finalización para que el modelo se ejecute mientras time sea menor que simulation_time.
  • Suma la duración del proceso a la variable de estado time.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

def discrete_model_farm(process_dict, simulation_time):
  # Initiate variables
  time = ____
  supply_chain = ____

  # Define ending condition
  while ____ < ____:

    supply_chain += 1
    process_names = list(process_dict.keys())

    for p in range(len(process_names)):
		  
      event_duration = process_dict[process_names[p]]
          
      # Add the process duration
      ____ += event_duration
      print(f"{process_names[p]}  (completed): time = {time}")
          
    print(f"COMPLETED: Production cycle #{supply_chain} | Time = {time} days")  
Editar y ejecutar código