Aan de slagGa gratis aan de slag

Een tankstation modelleren: Python-generators

Stel: een klant wil een tankstation bouwen en jij bent gevraagd een discrete-eventsimulatie te maken om het optimale aantal pompen en de grootte van de gezamenlijke brandstoftank te bepalen. Dit model moet de aankomende auto's op het tankstation simuleren en de middelen van het station: de pompen en de brandstoftank. In deze oefening focussen we op de volgende twee stappen:

Stap 1: Maak een generator om de aankomst van auto's bij het tankstation te simuleren, een pomp aan te vragen en de autotanks te vullen.

Stap 2: Maak een generator die het niveau van de tank controleert en een navultank aanvraagt wanneer dat nodig is. Ook het gedrag van de navultank moet worden gemodelleerd.

In de volgende oefening maak je de SimPy-omgeving, voeg je processen en resources toe en voer je simulaties uit.

Het aantal pompen is beperkt en wordt gesimuleerd met een SimPy-resource die is opgeslagen in de variabele gas_station_pumps.

Deze oefening maakt deel uit van de cursus

Discrete Event Simulation in Python

Cursus bekijken

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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.")
Code bewerken en uitvoeren