IniziaInizia gratis

Modellare una stazione di servizio: generatori Python

Immagina che un cliente voglia costruire una stazione di servizio e ti abbia chiesto di creare un modello a eventi discreti per determinare il numero ottimale di pompe di benzina e la dimensione del serbatoio comune usato dalle pompe. Questo modello richiede di simulare l’arrivo delle auto alla stazione e le risorse della stazione: le pompe e il serbatoio. In questo esercizio, ci concentreremo su due passaggi:

Passaggio 1: Crea un generatore per simulare l’arrivo delle auto alla stazione, la richiesta di una pompa e il rifornimento dei serbatoi delle auto.

Passaggio 2: Crea un generatore per controllare il livello del serbatoio e richiedere un’autocisterna di rifornimento quando necessario. Inoltre, va modellato anche il comportamento dell’autocisterna di rifornimento.

Nel prossimo esercizio, creerai l’ambiente SimPy, aggiungerai processi e risorse ed eseguirai le simulazioni.

Il numero di pompe è limitato e viene simulato usando una risorsa SimPy memorizzata nella variabile gas_station_pumps.

Questo esercizio fa parte del corso

Simulazione a eventi discreti in Python

Visualizza il corso

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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.")
Modifica ed esegui il codice