BaşlayınÜcretsiz Başlayın

Bir benzin istasyonunu modelleme: Python üreteçleri

Bir müşterinin bir benzin istasyonu kurmak istediğini ve pompa sayısı ile pompaların kullandığı ortak yakıt tankının boyutunu belirlemeye yardımcı olacak bir ayrık olay modeli oluşturman istenildiğini düşün. Bu model, istasyona gelen araçları ve istasyonun kaynaklarını (pompalar ve yakıt tankı) simüle etmeyi gerektirir. Bu egzersizde şu iki adıma odaklanacağız:

Adım 1: Araçların istasyona gelişini simüle eden, pompa talep eden ve araç depolarını dolduran bir üreteç oluştur.

Adım 2: Tank seviyesini kontrol eden ve gerektiğinde ikmal tankı çağrısı yapan bir üreteç oluştur. Ayrıca ikmal tankının davranışı da modellenmelidir.

Sonraki egzersizde SimPy ortamını oluşturacak, süreçleri ve kaynakları ekleyip benzetimleri çalıştıracaksın.

Pompa sayısı sınırlıdır ve gas_station_pumps değişkeninde tutulan bir SimPy kaynağıyla simüle edilir.

Bu egzersiz

Python ile Ayrık Olay Benzetimi

kursunun bir parçasıdır
Kursu Görüntüle

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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.")
Kodu Düzenle ve Çalıştır