Kesikli olay simülasyonu
**Sistem değişkenlerinin zaman içindeki değişimine göre simülasyonun kesikli ya da sürekli olduğu belirlenir****.**

Sistem durumunu belirleyen değişkenlerinin değerleri zaman içinde sürekli değişim gösteriyorsa (sıvının borudan akması ya da nüfus değişimi gibi) ***simülasyon sürekli*** olarak tanımlanır.

Sistem durumunu belirleyen değişkenlerin değerleri zamanın belirli noktalarında değişiyorsa (kuyruğun uzunluğu ya da müşterilerin bekleme zamanı istatistikleri yeni bir müşterinin varışı ya da ayrılışıyla değişir) ***simülasyon kesikli*** olarak tanımlanır. **Kesikli sistem,** durum değişkenlerinin zamanın farklı noktalarında değiştiği sistemdir.

**Kesikli olay simülasyonu** fiziksel bir sistemin matematiksel/mantıksal bir modelini kullanır ve simülasyonu yapılan zamanın belirli noktalarındaki durumsal değişimleri gösterir. Değişikliğin doğası ve oluştuğu an doğru tanımlamayı zorunlu kılar. Hizmet bekleyen müşteriler, malzeme envanter yönetimi ve askeri savaşlar kesikli olay simülasyonun tipik etki alanlarıdır.

**Kesikli olay simülasyonu,** bir sistemin çalışmasını zamanla gerçekleşen kesikli olaylar sıralaması olarak modeller. Her bir olay belirli bir anda meydana gelir ve sistem durumunda değişiklik yapar. Ardışık olaylar arasında sistem durumunda bir değişiklik olmayacağı varsayılır ki böylece simülasyon belirli bir zamanda doğrudan bir olaydan takip eden olaya atlayabilir.

**Kesikli olay simülasyonu**nda, sistem operasyonu kronolojik olay basamakları olarak tanımlanır. Her olay bir anda gerçekleşir ve sistemde bir durum değişimini gösterir.

**Kesikli olay simülasyonları** her bir zaman dilimini simüle etmek zorunda değildir. Kesikli olay simülasyonunda simülasyonun durumu kesin bir anda meydana gelen olaya göre değişir ve bir sonraki olaya kadar aynı durumda kalır. Postanede bulunan müşterilerin durumu postaneye yeni bir müşteri girdiğinde ya da müşteri işini bitirip ayrıldığında değişir. Bu yönüyle kesikli olay simülasyonu, simülasyon süresinin zaman dilimlerine ayrılarak sistem durumunun her bir zaman diliminde meydana gelen aktivite setlerine göre güncellendiği, simülasyonun sürekli olarak sistem dinamiğini izlediği sürekli simülasyondan farklılık gösterir

**Kesikli olay simülasyonunu** sürdürmek için birçok mekanizma ortaya atılmıştır. Olay tabanlı, etkinlik tabanlı, süreç tabanlı ve üç evreli yaklaşım da bunların arasındadır. Yaklaşımlarından biri üç fazlı yaklaşım metodudur. Bu yaklaşıma göre, birinci faz bir sonraki kronolojik olaya atlamaktır. İkinci faz, ilgili zamanda meydana gelen koşulsuz tüm olayları yönetmektir (bunlar B-olayları olarak adlandırılır). Üçüncü faz ise ilgili zamanda meydana gelen tüm koşullu olayları yönetmektir (bunlar C-olayları olarak adlandırılır). Üç fazlı yaklaşım, olay tabanlı yaklaşımın bilgisayar kaynaklarının daha etkili kullanılabilmesini sağlamak için aynı anda meydana gelen olayların sıralandırıldığı bir ayrıştırmadır. Üç fazlı yaklaşım pek çok ticari simülasyon yazılım paketlerinde kullanılmaktadır ancak genellikle kullanıcının bakış açısından simülasyon yönteminin altında yatan özellikler gözükmez.

Örnek
-----

Kesikli olay simülasyonun nasıl yapılacağını öğreten yaygın bir alıştırma bankada gişe hizmeti bekleyen müşteri kuyruğu modellemektir. Bu örnekte sistem öğeleri müşteri kuyruğu ve gişe görevlileridir. Sistem olayı müşterinin bankaya varışı ve ayrılışıdır (Gişe görevlisinin hizmet vermeye başlaması müşterinin varış-ayrılışının bir parçası olabilir). Olaylarla değişen sistem durumu; kuyrukta bekleyen müşteri sayısı ( "0" dan "n"e bir tam sayı) ve gişe görevlisinin durumudur (meşgul ya da müsait). Modeli stokastik olarak karakterize eden değişkenler ise müşteriler arasındaki bankaya varış zamanları ve gişe görevlisinin hizmet süresidir.

Kesikli olay simülasyonunun bileşenleri
---------------------------------------

Sistem olayı meydana geldiğinde, sistem değişkenlerini ve sistem olayları meydana gelirken ne olup bittiğinin mantığını tanımlamaya ilave olarak kesikli olay simülasyonu aşağıdaki bileşenleri içerir:

***Sistem Durumu*:** Çalışılan sistemin dikkat çeken özelliklerini yakalayan değişkenler setidir.

***Saat:*** Simülasyon o andaki zamanın izlediği yolu kayıt altında tutmalıdır. Ölçü birimi tasarlanan sistem için hangisi uygunsa o seçilir. Kesikli olay simülasyonlarında -gerçek zamanlı simülasyonların aksine- olaylar anlık olduğundan bir anda birinden diğerine atlanır. Saat, simülasyon ilerledikçe bir sonraki olayın başlangıç zamanına geçer.

***Olay listesi:*** Simülasyon en az bir olay listesi sağlamalıdır. Olay listesi bazen yaklaşan olay listesi olarak da adlandırılır. Çünkü simüle edilen önceki olayın  sonucu olarak yaklaşan olayları listeler. Bir olay; başlangıç zamanına, olayın kendi performansını oluşturan bir tür koda ve –her zaman olmasa da- bir bitiş zamanına sahip olmalıdır. Kimi yaklaşımlarda, o andaki ve gelecekteki olaylar için ayrı listeler vardır. Olay listeleri olay başlangıç zamanına göre sıralanır. Genelde olaylar *"bootstrapped"*tir. Yani olaylar simülasyon ilerlerken dinamik olarak çizelgelenir. Örneğin; üstteki banka örneğinde, müşterinin varışı olayı t zamanında ve eğer müşteri kuyruğu boş ve veznedar boşta ise, sonraki olay olan müşterinin ayrılışı t+s zamanında gerçekleşecektir. Buradaki s hizmet süresidir.

Anlık olarak olaylar oluştuğunda, zaman içinde meydana gelen olaylar olay sıralaması olarak modellenir. Bazı simülasyonlarda her bir olayın başlangıç ve bitişi bir aralık olarak tanımlanabilir.

Yaklaşan olay seti tipik bir öncelik sırası olarak organize edilir ve olay zamanına göre ayrılır. Olay setine, olayların eklendiği sıra dikkate alınmaksızın kronolojik sıraya göre çıkarılır. Başta "binary tree" olmak üzere kesikli olay simülasyonu için birkaç genel maksat öncelik sırası algoritmasının etkili olduğu ispatlanmıştır. "Skip list", *"calendar queues*" *ve* "*ladder queues"* diğer alternatifler olarak öne çıkmaktadır.

***Rastsal sayı üreteçleri:*** Simülasyon sistem tasarımına da bağlı olarak çeşitli rastsal değişkenlerin atanmasına gerek duyar. Bu ise bir ya da daha çok sözderastsal sayı üreteci tarafından sağlanır.

***İstatistikler:*** Simülasyon, genel olarak ilgilenilen durumu sayılara döken sistem istatistiklerini tutar. Banka örneğinde ilgilenilen, ortalama hizmet süresidir.

*Koşullu sonlandırma:* Olaylar *"bootstrapped"* olduğundan teorik olarak kesikli olay simülasyonu sonsuza dek çalışabilir. Bu yüzden tasarımcısı simülasyonun ne zaman sonlanacağına karar vermelidir. Bu seçenekler "t anında", "n adet olay işlendikten sonra" ya da "X istatistiksel ölçüsü x değerine ulaştığında" gibi olabilir.

Simülasyon motorunun mantığı
----------------------------

Kesikli olay simülasyonu ana döngüsü aşağıdaki gibi olacaktır :

### Başlangıç

* Sonlandırma koşulunu *FALSE* olarak tanımla.
* Sistem durum değişkenlerini tanımla.
* Saati tanımla (çoğunlukla sıfır değerinde başlar).
* Başlangıç olayı planla (örn: olay listesine birkaç başlangıç olayı koy).

### *Do-While* döngüsü

Sonlandırma koşulu *FALSE* iken aşağıdakileri yap:

* Saati bir sonraki olay zamanına getir.
* Bir sonraki olayı yap ve olay listesinden çıkar.
* İstatistikleri güncelle.

### Bitiş

* İstatistik raporunu oluştur.

Kaynakça
--------

1. ↑  Banks, Jerry. "Discrete event simulation" (İngilizce). 27 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Kasım 2016.
2. 1 2 3  "Arşivlenmiş kopya" (PDF). 25 Kasım 2016 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 24 Kasım 2016.
3. ↑  "Arşivlenmiş kopya" (PDF). 25 Kasım 2016 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 24 Kasım 2016.
4. ↑  "Arşivlenmiş kopya" (PDF). 17 Mayıs 2017 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 24 Kasım 2016.
5. 1 2  Stewart Robinson (2004). Simulation-The practice of model development and use. Wiley. 25 Kasım 2016 tarihinde Wayback Machine sitesinde arşivlendi.
6. ↑  "Arşivlenmiş kopya". 27 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Kasım 2016.
7. ↑  Matloff, Norm. "Introduction to Discrete - Event Simulation and the SimPY Language" 25 Kasım 2016 tarihinde Wayback Machine sitesinde arşivlendi.. Retrieved 24 January 2013
8. ↑  Michael Pidd (1998). Computer simulation in management science – fourth edition. Wiley.
9. 1 2  "Arşivlenmiş kopya" (PDF). 15 Aralık 2017 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 27 Kasım 2016.
10. ↑  Aditya Kurve; Khashayar Kotobi; George Kesidis. "An agent-based framework for performance modeling of an optimistic parallel discrete event simulator". Complex Adaptive System Modeling. 1:12. doi:10.1186/2194-3206-1-12.
11. ↑  "Arşivlenmiş kopya". 27 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Kasım 2016.
12. ↑  Simulation, Modeling & Analysis (3/e) by Law and Klt 2000 Kelton, 2000 27 Kasım 2016 tarihinde Wayback Machine sitesinde arşivlendi.
13. ↑  Douglas W. Jones, ed. Implementations of Time, Proceedings of the 18th Winter Simulation Conference, 1986.
14. ↑  Douglas W. Jones, Empirical Comparison of Priority Queue and Event Set Implementations 9 Mart 2017 tarihinde Wayback Machine sitesinde arşivlendi. *Communications of the ACM, 29,* April 1986, pages 300–311.
15. ↑  Kah Leong Tan and Li-Jin Thng, SNOOPy Calendar Queue, Proceedings of the 32nd Winter Simulation Conference, 2000
16. ↑  Tom Dickman, Sounak Gupta and Philip A. Wilsey, [1], Proceedings of the 2013 ACM SIGSIM conference on Principles of advanced discrete simulation

Dış bağlantılar
---------------

* SimPy (Açık kaynaklı genel amaçlı kesikli olay simülasyonu)
* Simulation Frameworks 6 Haziran 2003 tarihinde Wayback Machine sitesinde arşivlendi. (Simülasyon yazılımları geliştirme platformu listesi)