SimPy ile ayrık olay modeli oluşturma

Python ile Ayrık Olay Benzetimi

Dr Diogo Costa

Adjunct Professor, University of Saskatchewan, Canada & CEO of ImpactBLUE-Scientific

Modeli kurmadan önce

  • Dinamik sistemi anlayın

  • Ayrık olay modelinin amacını tanımlayın

  • Süreçleri belirleyin:

    • paralel çalışanlar
    • sıralı çalışanlar
  • Uygun SimPy kaynaklarını belirleyin (resource, container, store)

  • Model mimarisini tanımlayın:

    • durum değişkenlerini belirleyin
    • model iş akışı
    • üreteçler
Python ile Ayrık Olay Benzetimi

Dinamik sistem ve modelin hedefleri

Dinamik sistemi anlayın

  • Davranışını hangi unsurlar etkiler?
  • Hangi süreçler/olaylar dahil edilmeli?

Modelin hedefleri

  • Genellikle sistemleri optimize etmek için kullanılır
  • Neleri optimize etmek istiyorsunuz?

    • Daha fazla müşteri
    • Daha kısa işlem süreleri
    • Kaynak tahsisini optimize etme
  • Bu hedefler için izlenecek durum değişkenleri

Python ile Ayrık Olay Benzetimi

Uygun SimPy kaynaklarını belirleme

Paylaşılan Kaynaklar

simpy.Resource(env, capacity=4)
  • Süreçler arasında paylaşılan kaynaklar

Örnekler

  • Restorandaki masalar
  • Fabrikadaki makineler
  • Tiyatro koltukları
  • Mağazadaki kasiyerler

Kaplar (Container)

simpy.Container(env, capacity, 
init=initial_capacity)
  • Kaynak, depo/tank gibi davranır

  • Miktar ekleme ve çıkarma:

.put() ve .get()

Örnekler

  • Benzin istasyonundaki yakıt
  • Kömürlü santraldeki kömür
Python ile Ayrık Olay Benzetimi

Uygun SimPy kaynaklarını belirleme

Mağaza (Store)

simpy.Store(env, capacity=4)
  • Çoklu öğe tutan mağaza benzeri kaynak

  • Varsayılan kapasite sınırsızdır

  • Rastgele nesneler için yuvalar

  • Öğeleri ekle/çıkar:

.put() ve .get()

Örnekler

  • Çok ürünlü mağazalar
  • Depo odası
  • Atölye
  • Hane
Python ile Ayrık Olay Benzetimi

Bit düzeyi operatörlerle olayları birleştirme

SimPy, iki olayı birleştirmek için bit düzeyinde (bitwise) operatörler kullanır

Python’daki operatör türleri

  • Aritmetik, mantıksal ve karşılaştırma operatörleri

Bit düzeyi operatörler

  • Tamsayılar üzerinde bit düzeyi hesaplamalar
  • İki işlenen (operand) bekler
    • Örnek: a & b, a >> b, a ^ b

SimPy’de

  • Bit düzeyi operatörler koşul olayı üretir
  • İki olay/sürecin her ikisini ya da birini bekler

SimPy için ilgili bit düzeyi operatörler

  • Her iki süreci bekler: __and__() veya &
  • Süreçlerden birini bekler: __or__() veya |
Python ile Ayrık Olay Benzetimi

Haydi pratik yapalım!

Python ile Ayrık Olay Benzetimi

Preparing Video For Download...