CommencezCommencez gratuitement

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

Voir le cours

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