DEVS Tabanlı Modelleme ve Simülasyon Nedir?
1.Modelleme ve Simülasyon
DEVS Tabanlı Modelleme ve Simülasyon Nedir?
1.Modelleme ve Simülasyon
Modelleme ve benzetimin amacı, gerçek dünyada bulunan ya da bulunması öngörülen sistem veya sistemlerin benzerlerinin oluşturulması ve işletilmesi dir. Modelleme ve benzetim (M&S) çerçevesi ise varlıkları ve onların ilişkilerini tanımlar. Şekilden görüleceği üzere temel varlıklar; gerçek dünya (modellenecek kaynak sistem- örneğin İnternet ağı), model (gerçek dünya davranışını üreten yapının matematiksel modeli), benzetim aracı (modeli işleten araç-örneğin bilgisayar) ve deneysel çerçeve ile bunların birbirleri ile olan ilişkilerinden oluşmaktadır. Bu ilişkiler Tablo ’ de kısaca açıklanmıştır

Şekil 1. Modelleme ve Benzetim (M&S) Çerçevesi: Varlıklar ve İlişkileri
M&S şemasındaki temel varlıkları açıklayalım;
Kaynak Sistem(Gerçek Dünya): Modellemeyi düşündüğümüz gerçek veya sanal ortamı belirtir.
Deneysel Çerçeve: Deney yapılan veya gözlemlenen sistemin belirli koşullar altındaki tanımlamasıdır. Diğer bir ifade ile deneysel çerçeve, bir benzetim aracı ile model üzerinde deneyler yapan kişinin hedeflerini yansıtır.
Model: Gerçek dünya davranışını üreten yapının matematiksel modelini tanımlayan komutlar kümesidir. Bir sistemin yapısının ve / veya davranışının belirgin özellikleri belirli bir doğruluk dâhilinde model tarafından yansıtılmalıdır.
Doğrulama ve Geçerleme :Doğrulama, benzetim programının tutarlılığını türetildiği modele göre kontrol işlemidir. Geçerleme ise benzetim ortamında elde edilen sonuçlarla belirlenmiş deneysel çerçeve ortamında elde edilen sonuçların karşılaştırılması işlemidir.
Benzetim Yazılımı: Modelin işletilmesi / çalıştırılması aşamasında kullanılan benzetim aracıdır.
2. DEVS Nedir?
DEVS (Discrete Event System Specification — Ayrık Olay Sistem Spesifikasyonu), Zeigler tarafından geliştirilen ve özellikle asenkron, olay tabanlı sistemlerin matematiksel olarak kesin tanımlanmasını sağlayan bir formalizmdir. Bu metodoloji, sistem durumunun sadece bir olayın gerçekleştiği anda değiştiği varsayımına dayanır; bu, zamanın sürekli ilerlediği ancak hesaplamaların sadece kritik anlarda yapıldığı anlamına gelir.
DEVS ismi biraz korkutucu ve matematiksel dursa da, aslında mantığı oynadığın, video oyunlarına veya LEGO parçalarının birleşimine benzer.
Normalde hayat akıp gider, değil mi? Saniye saniye izleriz. Ama DEVS mantığında dünya böyle işlemez. DEVS “Olay Tabanlıdır”.
Şöyle düşün: Bir video oyunu oynuyorsun. Karakterin boş bir odada duruyor. Hiçbir şey yapmazsa saatlerce ekrana baksan da bir şey değişmez. Bilgisayarın bunu hesaplamasına gerek var mı? Yok.
Bilgisayar ne zaman çalışır?
- Sen bir tuşa bastığında (Dış Olay).
- Veya oyun içindeki bir bombanın süresi dolduğunda (İç Olay).
DEVS şunu der: “Boş geçen zamanla ilgilenme, sadece bir ‘olay’ olduğunda uyan ve durumu güncelle.” Bu sayede çok karmaşık sistemleri bilgisayarda çok hızlı simüle edilebilir.
3. Atomik Modeller(Temel Parçacıklar)
DEVS’te her şeyi küçük kutucuklar (modeller) olarak düşünürüz. Her kutucuğun bir beyni ve görevleri vardır. Buna Atomik Model denir.
Örnek olarak ”Tost Makinesi”ni ele alalım. Bir DEVS modelinde tost makinesi şöyle modellenebilir:
- Durumlar (States): Tost makinesinin hangi ruh halleri var?
- Boş/Bekliyor
- Isıtıyor
2. Girişler (Inputs): Makineye dışarıdan ne geliyor?
- Ekmek ve Sucuk
3. Çıkışlar (Outputs): Makine dışarıya ne veriyor?
- Sıcak Tost
4. Kurallar (Functions):
- Kural 1 (Dışarıdan dürtülme): Eğer “Bekliyor” modundayken içine ekmek konulursa, “Isıtıyor” moduna geç.
- Kural 2 (Zaman dolunca): Eğer 2 dakika boyunca “Isıtıyor” modunda kalırsan, dışarıya “Sıcak Tost” fırlat ve tekrar “Bekliyor” moduna dön.
Gördün mü? Tost makinesini kodlarken sadece bu kuralları yazıyoruz.
4. Coupled Modeller (Birleşik Modeller)
Tek başına tost makinesi bir işe yaramaz. Bir de Kantin Görevlisi ve Öğrenci lazım.
DEVS mantığında, bu küçük kutucukları (Atomik Modelleri) kablolarla birbirine bağlarız. Buna Birleşik (Coupled) Model denir.
Hayal et:
- Öğrenci Kutusu: Çıkışından “Sipariş” gönderir.
- Görevli Kutusu: “Sipariş”i girişinden alır. Tost makinesine “Ekmek” gönderir.
- Tost Makinesi Kutusu: Ekmeği alır, pişirir ve Görevliye “Tost” gönderir.
- Görevli Kutusu: Tostu alır ve Öğrenciye verir.
Biz bu sistemi bilgisayarda kurduğumuzda, sanal bir “Başla” tuşuna basarız.
- Bilgisayar bakar: “Şu an kimse bir şey yapmıyor, ilk olay ne zaman?”
- “Dakika 10'da Öğrenci acıkacak.”
- Hop! Simülasyon saati direkt 0'dan 10. dakikaya atlar (aradaki 9 dakikayı beklemez).
- Olaylar zincirleme başlar: Sipariş ver -> Pişir -> Ye.
Özetle DEVS Yaklaşımı Şudur:
- Parçalara Böl: Sistemi en küçük parçalarına (Öğrenci, Makine, Görevli gibi) ayır.
- Kuralları Koy: Her parçanın ne zaman ne yapacağını belirle (“Tost 2 dakikada pişer” gibi).
- Bağla: Parçaları birbirine bağla (Öğrencinin çıkışı = Görevlinin girişi).
- Zıpla: Zamanı saniye saniye sayma, olaydan olaya zıpla.
İşte mühendisler ve bilim insanları; şehir trafiğini, fabrikaları veya havaalanlarını planlarken “Acaba burada kuyruk olur mu?” veya “Tost makinesi yetecek mi?” sorularının cevabını, gerçek hayatta denemeden önce bu yöntemle bilgisayarda çözerler.
5. DEVS tabanlı Trafik simülasyonu
Trafik simülasyonu, DEVS mantığını anlamak için dünyadaki en iyi örneklerden biridir. Çünkü trafikte sürekli “Bekle” ve “Geç” durumları vardır, yani tam bir olaylar dünyasıdır.
Haydi, seninle şehrin en işlek kavşağını DEVS yöntemiyle kuralım.
5.1. Parçaları Tanımlayalım (Atomik Modeller)
Trafik sistemini kurmak için bize üç temel “akıllı kutu” lazım.
- Trafik Işığı Kutusu:
- Görevi: Renk değiştirmek.
- Durumları (Ruh Hali): Kırmızı, Sarı, Yeşil.
- Kuralı (İç Olay): “Kırmızıda 60 saniye dur, sonra Yeşile geç. Yeşilde 30 saniye dur, Sarıya geç.”
2. Yol Parçası Kutusu:
- Görevi: Arabaları üzerinde tutmak.
- Durumları: Boş, Yarı Dolu, Tıklım Tıklım.
- Kuralı: Eğer “Tıklım Tıklım” isem, arkadaki yola “Bana araba gönderme, almıyorum!” diye mesaj at.
3. ÜreteçKutusu (Spawner):
- Görevi: Oyundaki gibi yola yeni araba sokmak.
- Kuralı: Sabah 8'de her 2 saniyede bir araba yolla (iş saati), öğlen 12'de her 10 saniyede bir yolla.
5.2. Olayların Dansı (Simülasyon Başlıyor)
Normal bir videoda boş yolu izlemek sıkıcıdır, değil mi? DEVS simülasyonu boş yolu izlemez. Bak bilgisayar bunu nasıl çalıştırıyor:
Saat 08:00:00
- Işık Kırmızı.
- Yol Boş.
- Simülatör sorar: “Bir sonraki olay ne zaman?”
- Cevap: “Trafik ışığının süresi 60 saniye sonra dolacak.”
Saat 08:01:00 (ZAMAN ATLAMASI!)
- Bilgisayar aradaki 1 dakikayı saniyenin binde birinde atlar.
- Olay: Işık Yeşil oldu!
- Trafik ışığı kutusu, Yol kutusuna mesaj atar: “Ben Yeşili yaktım, arabaları salabilirsin.”
Saat 08:01:05
- Araba Üretici yola bir araba sokar (Dış Olay).
- Yol kutusu, Işık kutusuna bakar. Işık Yeşil mi? Evet.
- O zaman araba beklemeden geçer gider.
Saat 08:01:10 (Kaza Senaryosu)
- Diyelim ki ilerideki yol tıkandı.
- İlerideki Yol Kutusu, bizim kavşağa mesaj atar: “Ben doldum, araba yollama!”
- Bizim kavşaktaki ışık Yeşil olsa bile, arabalar durur. Durum değişti: “Trafik Sıkışıklığı.”
5.3. Neden DEVS Kullanıyoruz?
Mühendisler bu sistemi kurar ve şunu denerler:
- Deney 1: “Işığı 30 saniye yeşil yaparsak ne olur?”
- Simülasyon Sonucu: Arabalar birikiyor, kuyruk 1 kilometre uzuyor.
- Deney 2: “Işığı 60 saniye yeşil yaparsak ne olur?”
- Simülasyon Sonucu: Kuyruk eriyor ama bu sefer yayalar çok bekliyor.
DEVS’in Sihri Şurada: Gerçek hayatta bir gün sürecek olan trafiği (sabah 8'den akşam 5'e kadar), bilgisayar DEVS yöntemiyle sadece 2 saniyede hesaplar. Çünkü araba geçmeyen boş saniyeleri hesaplamaz, sadece “Araba geldi”, “Işık değişti”, “Yol tıkandı” gibi olaylara odaklanır.
Özetlersek:
Trafik simülasyonunda DEVS; arabaları tek tek süren bir şoför gibi değil, tepeden bakan ve sadece önemli anlarda (ışık değişince, kaza olunca) parmağını şıklatıp dünyayı değiştiren bir trafik polisi gibi çalışır.
5.4. UYGULAMA: Python ile Trafik Işığı Kodu
Aşağıdaki kod, bir trafik ışığının DEVS mantığıyla nasıl çalıştığını gösteren basit bir Python programıdır.
import time
# --- BÖLÜM 1: ATOMİK MODEL (TRAFİK IŞIĞI) ---
class TrafikIsigi:
def __init__(self):
# Başlangıç durumu
self.renk = "KIRMIZI"
print(f"Sistem Başlatıldı. Işık: {self.renk}")
# (Time Advance) Ne kadar beklemeliyim?
def ta(self):
if self.renk == "KIRMIZI":
return 60.0
elif self.renk == "YESIL":
return 30.0
elif self.renk == "SARI":
return 5.0
return 0.0
# (Internal Transition) Süre dolunca ne yapayım?
def delta_int(self):
eski_renk = self.renk
if self.renk == "KIRMIZI":
self.renk = "YESIL"
elif self.renk == "YESIL":
self.renk = "SARI"
elif self.renk == "SARI":
self.renk = "KIRMIZI"
print(f"OLAY: Süre doldu! {eski_renk} -> {self.renk} oldu.")
# (External Transition) Dışarıdan müdahale gelirse?
def delta_ext(self, dis_olay):
if dis_olay == "AMBULANS_GELDI":
print(f"!!! DİKKAT: Ambulans geldi, Yeşil yakılıyor !!!")
self.renk = "YESIL"
# --- BÖLÜM 2: SİMÜLATÖR MOTORU ---
def simulasyonu_calistir():
model = TrafikIsigi()
zaman = 0.0
bitis = 200.0
print(f"\n--- Simülasyon Başlıyor (Zaman: {zaman}) ---\n")
while zaman < bitis:
# 1. Ne kadar bekleyeceğiz?
bekleme = model.ta()
# 2. Zamanı ileri sar (Zıpla!)
zaman += bekleme
print(f">> Zaman atlandı... Saat: {zaman}")
if zaman > bitis: break
# 3. Durumu güncelle
model.delta_int()
# Senaryo: 95. saniyede Ambulans geliyor
if zaman == 95.0:
model.delta_ext("AMBULANS_GELDI")
print(f"\n--- Simülasyon Bitti ---")
# Kodu Başlat
simulasyonu_calistir()
Koddaki DEVS Mantığı Nerede?
- ta (Time Advance): Kodun içindeki bekleme_suresi = isik_modeli.ta()satırı. Bilgisayar modele “Ne kadar uyuyacaksın?” diye soruyor. Model “60 saniye” diyor.
- Zaman Atlaması:su_anki_zaman = yeni_olay_zamanisatırı. Dikkat ettiysen bilgisayar 0'dan 60'a kadar 1, 2, 3 diye saymadı. Direkt toplama işlemi yapıp zamanı ışınladı.
- delta_int (İç Olay): Süre dolunca rengi değiştiren fonksiyon.
- delta_ext (Dış Olay): Kodda örnek olarak araya sıkıştırdığım Ambulans senaryosu. Bu, sistemin dışarıdan müdahaleye açık olduğunu gösterir.
Kaynakça:
- Gemini 3 Pro
- Bülent Çobanoğlu, Doktora Tezi, 2011.
메타데이터
- post_id
- 11f5a00ea7e1
- slug
- devs-tabanlı-modelleme-ve-simülasyon-nedir-11f5a00ea7e1
- url
- https://medium.com/@cobanoglubulent/devs-tabanl%C4%B1-modelleme-ve-sim%C3%BClasyon-nedir-11f5a00ea7e1
- canonical_url
- https://medium.com/@cobanoglubulent/devs-tabanl%C4%B1-modelleme-ve-sim%C3%BClasyon-nedir-11f5a00ea7e1
- author_url
- https://medium.com/@cobanoglubulent
- status
- ok
- fetched_at
- 2026-06-09 14:34:10