LoslegenKostenlos loslegen

Modellierung einer Tankstelle: Python-Generatoren

Angenommen, ein Kunde möchte eine Tankstelle bauen, und du wurdest gebeten, ein diskretes Ereignismodell zu erstellen, um die optimale Anzahl der Zapfsäulen und die Größe des gemeinsamen Kraftstofftanks zu bestimmen, der von den Zapfsäulen genutzt wird. Dieses Modell erfordert die Simulation der an der Tankstelle ankommenden Autos sowie der Ressourcen der Station: die Zapfsäulen und den Kraftstofftank. In dieser Übung konzentrieren wir uns auf die folgenden zwei Schritte:

Schritt 1: Erstelle einen Generator, der die Ankunft der Autos an der Tankstelle, das Anfordern einer Zapfsäule und das Auffüllen der Autotanks simuliert.

Schritt 2: Erstelle einen Generator, der den Füllstand des Tanks prüft und bei Bedarf einen Nachfülltank anfordert. Außerdem muss das Verhalten des Nachfülltanks modelliert werden.

In der nächsten Übung erstellst du die SimPy-Umgebung, fügst Prozesse und Ressourcen hinzu und führst Simulationen aus.

Die Anzahl der Zapfsäulen ist begrenzt und wird mit einer SimPy-Ressource simuliert, die in der Variablen gas_station_pumps gespeichert ist.

Diese Übung ist Teil des Kurses

Diskrete-Ereignis-Simulation mit Python

Kurs anzeigen

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen