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ı/amaçları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 amaçları

Dinamik sistemi anlayın

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

Modelin amaçları

  • Çoğunlukla sistemleri optimize etmek için kullanılır
  • Neleri optimize etmek istiyorsunuz?

    • Daha fazla müşteri
    • Daha hızlı işlem süreleri
    • Kaynak tahsisini optimize etmek
  • Bu amaçlar için izlenecek durum değişkenleri

Python ile Ayrık Olay Benzetimi

Uygun SimPy kaynaklarını belirleme

Paylaşılan Kaynaklar

simpy.Resources(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 ekle/çıkar:

.put() ve .get()

Örnekler

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

Uygun SimPy kaynaklarını belirleme

Mağaza (Store)

  • Çoklu öğeli mağaza benzeri kaynak

  • Kapasite varsayılan olarak sınırsızdır

  • Rastgele nesneleri depolamak için yuvalar

  • Öğeleri ekle/çıkar:

.put() ve .get()

Örnekler

  • Çok ürün satan 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üzeyi (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ılarda bit düzeyi hesaplamalar
  • İki işlemci (operand) bekler
    • Örnek: a & b, a >> b, a ^ b

SimPy’de

  • Bit düzeyi operatörler koşul olayı üretir
  • İki olay/süreçten her ikisi ya da yalnızca biri için 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

Hadi pratik yapalım!

Python ile Ayrık Olay Benzetimi

Preparing Video For Download...