Modéliser une station-service : générateurs Python
Supposons qu'un client souhaite construire une station-service et qu'on vous a demandé de créer un modèle à événements discrets pour aider à déterminer le nombre optimal de pompes et la taille du réservoir commun alimentant les pompes. Ce modèle doit simuler l'arrivée des voitures à la station-service et les ressources de la station : les pompes et le réservoir. Dans cet exercice, nous allons nous concentrer sur les deux étapes suivantes :
Étape 1 : Créer un générateur pour simuler l'arrivée des voitures à la station-service, la demande d'une pompe et le remplissage des réservoirs des voitures.
Étape 2 : Créer un générateur pour vérifier le niveau du réservoir et demander un réapprovisionnement au besoin. Il faut aussi modéliser le comportement du camion-citerne de réapprovisionnement.
Dans le prochain exercice, vous créerez l'environnement SimPy, ajouterez des processus et des ressources, puis lancerez des simulations.
Le nombre de pompes à essence est limité et simulé à l'aide d'une ressource SimPy stockée dans la variable gas_station_pumps.
Cette activité fait partie du cours
Simulation d'événements discrets en Python
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
def car(name, env, gas_station_pumps, gas_station_tank):
fuel_tank_level = random.randint(*FUEL_TANK_LEVEL)
print(f"{name} arriving at gas station at {env.now}")
# Request pump
with gas_station_pumps.____() as req:
start_time = env.now
# Yield the pump request
____ req
liters_required = FUEL_TANK_SIZE - fuel_tank_level
# Remove liters_required from the tank
yield gas_station_tank.___(liters_required)
yield env.timeout(liters_required / REFUELING_SPEED)
print(f"{name} finished refueling in {env.now - start_time} seconds.")