Kom igångKom igång gratis

Modellera en bensinstation: Python-generatorer

Anta att en kund vill bygga en bensinstation och att du har fått i uppgift att skapa en diskret händelsemodell för att fastställa det optimala antalet pumpar och storleken på den gemensamma bränsletank som pumparna använder. Modellen kräver att man simulerar bilar som anländer till bensinstationen och stationens resurser: pumparna och bränsletanken. I den här övningen fokuserar vi på följande två steg:

Steg 1: Skapa en generator för att simulera bilarnas ankomst till bensinstationen, begäran om en pump och påfyllning av bilarnas tankar.

Steg 2: Skapa en generator som kontrollerar tanknivån och begär en påfyllning när det behövs. Även beteendet hos påfyllningstanken behöver modelleras.

I nästa övning skapar du SimPy-miljön, lägger till processer och resurser och kör simuleringar.

Antalet pumpar är begränsat och simuleras med hjälp av en SimPy-resurs lagrad i variabeln gas_station_pumps.

Den här övningen är en del av kursen

Diskret händelsesimulering i Python

Visa kurs

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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.")
Redigera och kör kod