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):
process_dict: Diccionario con información sobre los procesossimulation_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
Instrucciones del ejercicio
- Inicializa las variables de estado del modelo,
time(controla el tiempo) ysupply_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
timesea menor quesimulation_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")