Développer un modèle à événements discrets
On vous a demandé de développer un modèle à événements discrets pour une exploitation agricole afin d’aider à allouer les ressources, accroître la productivité et identifier/éliminer les goulots d’étranglement.
Vous discutez encore avec vos collègues des différents processus impliqués et du niveau de détail à représenter dans le modèle. Vous avez donc convenu que les informations seraient compilées 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 arguments d’entrée du modèle sont (dans l’ordre) :
process_dict: dictionnaire contenant les informations sur les processussimulation_time: période de simulation
Le temps dans le modèle sera mesuré en jours.
Cet exercice fait partie du cours
Simulation d’événements discrets en Python
Instructions
- Initialisez les variables d’état du modèle,
time(suit le temps) etsupply_chain(compte le nombre de cycles) et mettez-les à zéro. - Définissez la condition d’arrêt pour que le modèle s’exécute tant que
timeest inférieur àsimulation_time. - Ajoutez la durée du processus à la variable d’état
time.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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")