CommencerCommencer gratuitement

Modéliser une station-service : générateurs Python

Supposons qu’un client souhaite construire une station-service et que l’on vous demande de créer un modèle à événements discrets pour déterminer le nombre optimal de pompes et la taille du réservoir commun utilisé par ces pompes. Ce modèle nécessite de simuler l’arrivée des voitures à la station 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, la demande d’une pompe et le remplissage des réservoirs des voitures.

Étape 2 : Créer un générateur pour contrôler le niveau du réservoir et demander un camion de ravitaillement lorsque c’est nécessaire. Le comportement du camion de ravitaillement doit également être modélisé.

Dans le prochain exercice, vous créerez l’environnement SimPy, ajouterez des processus et des ressources, et lancerez des simulations.

Le nombre de pompes est limité et simulé à l’aide d’une ressource SimPy stockée dans la variable gas_station_pumps.

Cet exercice fait partie du cours

Simulation d’événements discrets en Python

Afficher le cours

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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