CommencezCommencez gratuitement

Élaborer un modèle à événements discrets

On vous a demandé d'élaborer un modèle à événements discrets pour une exploitation agricole afin d'aider à allouer les ressources, augmenter la productivité et repérer–éliminer les goulots d'étranglement.

Vous discutez encore avec vos collègues des différents processus en jeu et du niveau de détail à représenter dans le modèle. Vous avez donc convenu que l'information serait consignée dans un dictionnaire nommé process_dict avec la structure suivante. L'idée est que ce dictionnaire sera mis à jour au fur et à mesure que de nouvelles informations sur les processus seront disponibles.

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

Construisons un modèle générique à événements discrets nommé discrete_model_farm() qui peut planifier n'importe quel nombre d'événements discrets définis dans le dictionnaire.

Les paramètres d'entrée du modèle sont (dans l'ordre) :

  1. process_dict : Dictionnaire contenant l'information sur les processus
  2. simulation_time : Période de simulation

Le temps dans le modèle sera mesuré en jours.

Cette activité fait partie du cours

Simulation d'événements discrets en Python

Voir le cours

Instructions de l’exercice

  • Initialisez les variables d'état du modèle, time (suit le temps) et supply_chain (suit le nombre de cycles), et mettez-les à zéro.
  • Définissez la condition de fin pour que le modèle s'exécute tant que time est inférieur à simulation_time.
  • Ajoutez la durée du processus à la variable d'état time.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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")  
Modifier et exécuter le code