Amaç fonksiyonları ve sistem optimizasyonu

Python ile Ayrık Olay Benzetimi

Diogo Costa (PhD, MSc)

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

Sistem optimizasyonu

  • Sistem optimizasyonu

    • En iyi işletim yapılandırmasını belirleme
  • İnsan odaklı süreçler

    • En az maliyetle en yüksek çıktı (daha az kaynak, daha az zaman)
  • Sistem çıktısını en çok etkileyen süreçleri belirleme

  • Monte Carlo örnekleme

    • Başarıyı ölçün ve sonuçları sıralayın
  • Amaç fonksiyonları

    • Performans hedeflerini belirleyen hedef fonksiyon
Python ile Ayrık Olay Benzetimi

Amaç fonksiyonu

  • Çıktı hedefini tanımlayan matematiksel ifade

  • Simülasyon senaryolarını puanlayın

Örnek

  • Süreç A: %35
  • Süreç B: %20
  • Süreç C: %45

Toplam: %100

  • En yüksek ağırlık Süreç C

Search & Stop: Farklı model yapılandırmalarını çalıştırın, koşul sağlanınca durdurun

while total_duration < 24:
      model_to_run()

Score & Rank: Kriter ağırlıklarına göre simülasyonları puanlayın

for i in range(num_runs):
   out_1, out_2 = model_to_run(i)
   scores[i] = 0.3 * out_1 + 0.7 * out_2
Python ile Ayrık Olay Benzetimi

Yöntem 1: Ara & Dur

  • Birden çok senaryo için Monte Carlo örnekleme
  • Farklı olasılıklı süreç gerçekleşmeleri içerir
  • En iyi senaryo arama döngüsü, koşul sağlandığında durur

Örnek

scenario_num = 0
while scenario_num == 0 or total_duration[s] > 40:
  scenario_num += 1
  env = simpy.Environment()
  env.process(manufacturing_proc(env))
  env.run()
  plot_results()

Bir dizi ardışık süreci içeren bir üretim etkinliğinin yanıt zarfını gösteren grafik; alttaki mavi çizgi, Ara & Dur yönteminin koşullarını karşılayan son çalışmayı gösterir.

Python ile Ayrık Olay Benzetimi

Yöntem 2: Skorla & Sırala

  • Birden çok senaryo için Monte Carlo örnekleme
  • Sonuçları puanlayın ve sıralayın

Örnek: Üretim sektörü

Ardışık görevler (veya süreçler) içerir; örn. bir otomobil üretim hattı.

def objective_function_calc():
  score_objfunc = np.ones(num_scenarios)

  for s in range(num_scenarios):
    for p in range(len(processes)):

      score_objfunc[s] += (
         processes[p]["duration_hours"]
         * processes[p]["score_weight"])
Python ile Ayrık Olay Benzetimi

Yöntem 2: Skorla & Sırala

Skor

"KIRMIZI": Düşük skor; "MAVİ": Yüksek skor “Boşaltma ve Hazırlama”, “Kesim” ve “Parlatma” süreçleri için simüle edilen senaryoların amaç fonksiyonu skorlarını gösteren saçılım grafiği.

Sıra

Skora göre simülasyon sıralaması “Boşaltma ve Hazırlama”, “Kesim” ve “Parlatma” süreçleri için simüle edilen senaryoların amaç fonksiyonu skorlarına göre sıralandığı grafık.

Python ile Ayrık Olay Benzetimi

Performansı sınırlayan kritik süreçleri belirleme

Ara & dur

Bir dizi ardışık süreci içeren bir üretim etkinliğinin yanıt zarfını gösteren grafik; alttaki mavi çizgi, Ara & Dur yönteminin koşullarını karşılayan son çalışmayı gösterir. En iyi simülasyonlarda elde edilen her sürecin asgari süreleri vurgulanmıştır.

  • "Mavi" çizgi "dur" ölçütünü sağladı

    • Toplam süre = 30 dk
  • "En iyi" simülasyonun dökümü:

    • Süreç 1: ~10 dk (sum = 20 min)
    • Süreç 2: ~10 dk (sum = 20 min)
    • Süreç 3: ~8 dk (sum = 28 min)
    • Süreç 4: ~2 dk (sum = 30 min)
  • Bu hedef için "Süreç 1" kritiktir

Python ile Ayrık Olay Benzetimi

Performansı sınırlayan kritik süreçleri belirleme

Skor

Amaç: en düşük skor = en düşük süre “Boşaltma ve Hazırlama”, “Kesim” ve “Parlatma” süreçleri için simüle edilen senaryoların amaç fonksiyonu skorlarını gösteren saçılım grafiği. En iyi simülasyonlarda elde edilen her sürecin asgari süreleri vurgulanmıştır.

Sıra

Bu hedef için "Süreç 1" kritiktir “Boşaltma ve Hazırlama”, “Kesim” ve “Parlatma” süreçleri için simüle edilen senaryoların amaç fonksiyonu skorlarına göre sıralandığı grafik. En iyi simülasyonlarda elde edilen her sürecin asgari süreleri vurgulanmıştır.

Python ile Ayrık Olay Benzetimi

Hadi pratik yapalım!

Python ile Ayrık Olay Benzetimi

Preparing Video For Download...