Zacznij terazZacznij za darmo

Modelowanie stacji benzynowej: generatory w Pythonie

Wyobraź sobie, że klient chce wybudować stację benzynową, a ty masz za zadanie stworzyć model symulacji dyskretnej, który pomoże określić optymalną liczbę dystrybutorów paliwa oraz rozmiar wspólnego zbiornika, z którego korzystają. Model wymaga symulacji przyjazdów samochodów na stację oraz dostępnych zasobów: dystrybutorów i zbiornika paliwa. W tym ćwiczeniu skupimy się na dwóch krokach:

Krok 1: Utwórz generator symulujący przyjazdy samochodów na stację benzynową, żądanie dostępu do dystrybutora i tankowanie.

Krok 2: Utwórz generator sprawdzający poziom paliwa w zbiorniku i wywołujący jego uzupełnienie, gdy zajdzie taka potrzeba. Zamodeluj również zachowanie cysterny dostarczającej paliwo.

W następnym ćwiczeniu utworzysz środowisko SimPy, dodasz procesy i zasoby, a następnie uruchomisz symulacje.

Liczba dystrybutorów jest ograniczona i symulowana za pomocą zasobu SimPy przechowywanego w zmiennej gas_station_pumps.

To ćwiczenie jest częścią kursu

Symulacja zdarzeń dyskretnych w Pythonie

Zobacz kurs

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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.")
Edytuj i uruchom kod