Dinamik sistemlerin matematiksel modelleri

Python ile Ayrık Olay Benzetimi

Diogo Costa (PhD, MSc)

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

Matematiksel model nedir?

Doğal veya insan kaynaklı bir sistemin matematiksel kavram ve dille tanımı.

Modeller şöyle sınıflandırılabilir:

  • Dinamik vs. dinamik olmayan
  • Ayrık vs. sürekli
  • Deterministik vs. olasılıksal (stokastik)
  • Doğrusal vs. doğrusal olmayan
  • Diğerleri

Matematiksel modeller basit ya da karmaşık olabilir.

  • Gerçekliğin dijital yaklaşımları
  • Tüm süreçleri hesaba katmak imkânsızdır

George Box: "Tüm modeller yanlıştır, ama bazıları yararlıdır."

Kayalık bir alandan akan bir nehrin fotoğrafı.

Python ile Ayrık Olay Benzetimi

Örnek: doğal süreçleri tahmin eden model

Nehirde akış modeli

Çin'deki Goaya hidrolojik istasyonunda zamanla gözlenen ve simüle edilen akım grafiği. Model, gözlemleri yakalayabilmektedir. Hem modelde hem gözlemlerde akım zamanda büyük dalgalanmalar gösterir.

  • Bu model, Çin'deki Goaya hidrolojik istasyonu için akımı öngörür.

  • Öngörü, model girdisi olarak kullanılan yağış bilgisine dayanır.

Diğer örnekler

  • Hava tahmini
  • Okyanus şişmesi tahmini
  • Göllerde su kalitesi
  • Kentsel su baskınları
  • ve daha birçok uygulama
1 Chen, C., He, W., Zhou, H. et al. A comparative study among machine learning and numerical models for simulating groundwater dynamics in the Heihe River Basin, northwestern China. Sci Rep 10, 3904 (2020). https://doi.org/10.1038/s41598-020-60698-9
Python ile Ayrık Olay Benzetimi

Örnek: insan kaynaklı faaliyetleri tahmin eden model

Enflasyon Tahmini

BNP Paribas tarafından üretilen BK enflasyon kayıtları (2002-2021) ve tahmini (2022) grafiği. Tahmin, 2022'de %7 enflasyon göstermektedir.

  • Enflasyonun tahmini, ekonomik krizlerin önlenmesine büyük katkı sağlar

Diğer örnekler

  • Tedarik zinciri
  • İmalat
  • Lojistik
  • Ekonomik tahminler
  • Ulaşım
  • Diğerleri
1 https://www.ft.com/content/218d35ab-b044-467a-bb62-0d17547a4350
Python ile Ayrık Olay Benzetimi

Genel kod bileşenleri ve yapısı

  • 3 ana bileşen
  • Girdi verileri ve model parametreleri
# Define model parameters
processes = {"process_1": 5,
             "process_2": 2,
             "process_3": 3}
  • Çalıştırma yapılandırması
# Simulation period
simulation_time = 365

# Run model
discrete_model(processes, simulation_time)
  • Model motoru
def discrete_model(processes, simulation_time):

  # 1) Run end-condition
  while (time < simulation_time):
      process_names = list(processes.keys())

# 2) Loop over all processes for p in range(len(process_names)): process_name_p = process_names[p]
# 3) Account for effect of each process time += processes[process_name_p]
Python ile Ayrık Olay Benzetimi

Model çıktıları

Bir imalat faaliyeti için ayrık olay modeli çıktısı örneği

=> START OF SIMULATION  (Time = 0 days) 
Time =    6.00 days  |  Process Complete: Transport of raw material
Time =    9.00 days  |  Process Complete: Building components
Time =   11.00 days  |  Process Complete: Assembling parts
Time =   14.00 days  |  Process Complete: Selling product
=> COMPLETED: Supply-Chain cycle #1 | Time = 15.5 days
Time =   21.50 days  |  Process Complete: Transport raw material
Time =   24.50 days  | Process Complete: Building components
Time =   26.50 days  |  Process Complete: Assembling parts
Time =   29.50 days  |  Process Complete: Selling product
=> COMPLETED: Supply-Chain cycle #2 | Time = 31.0 days
Python ile Ayrık Olay Benzetimi

Model sonuçlarının görselleştirilmesi

  • Sonuçların grafikle gösterimi: sistemdeki örüntü ve eşiklerin belirlenmesine yardımcı olur.

  • Görselleştirme, simülasyon hedeflerine göre uyarlanmalıdır.

  • Yararlı görselleştirme paketleri: matplotlib, seaborn, plotly.

Matplotlib kitaplığı logosu. Seaborn kitaplığı logosu. Plotly kitaplığı logosu.

Örnekler

  • Modellemiş verinin (y) zamana (x) karşı 2B çizgi veya saçılım grafikleri
plt.plot(x, y, color='green', marker='o', 
         markersize=12, linestyle='dashed', 
         linewidth=2)
  • x verisini bölerek her bölmedeki değer sayısını veren histogram
plt.hist(x, 50, density=True, 
         facecolor='g', alpha=0.75)
Python ile Ayrık Olay Benzetimi

Hadi pratik yapalım!

Python ile Ayrık Olay Benzetimi

Preparing Video For Download...