Diskreetne sündmuspõhine simulatsioon

Allikas: Vikipeedia

Diskreetne sündmuspõhine simulatsioon modelleerib süsteemi tööd kui lõplikku sündmuste jada ajas [1]. Iga sündmus toimub kindlal ajahetkel ning tähistab süsteemi oleku muutust [2]. Tavaliselt kasutatakse aja arvestamiseks sündmuspõhist ajakulgu, sest võib arvestada, et järjestikuste sündmuste vahel süsteemis muutusi ei toimu ning seetõttu võib simulatsiooni aeg automaatselt järgmise sündmuse toimumise juurde hüpata.

Lisaks sündmuspõhisele ajakulgemisele on olemas alternatiivne lähenemine, mida nimetatakse astmelist ajakulgu, kus aeg on jagatud väikesteks ühikuteks ning süsteemi olekut uuendatakse vastavalt sündmustele, mis selles ajaühikus juhtuvad [3]. Kuna iga ajahetke ei ole vaja simuleerida, siis sündmuspõhise ajakulgemisega simulatsioon on tavaliselt palju kiirem kui vastav astmelise ajakulgemisega simulatsioon.

Mõlemad diskreetse sündmuspõhise simulatsiooni vormid vastanduvad pidevsimulatsiooniga, kus süsteemi oleku muutusi jälgitakse pidevalt aja kulgedes, tavaliselt diferentsiaalvõrranditel põhinevate arvutusute põhjal [4][5].


Näide[muuda | muuda lähteteksti]

Üks hea viis, kuidas seletada diskreetse sündmuspõhise simulatsiooni toimimist, on modelleerida järjekorda, näiteks kui kliendid saabuvad restorani ning ootavad teenindamist. Sel juhul süsteemi olemid oleks klientide järjekord ja teenindajad. Süsteemi sündmused oleks kliendi saabumine, kliendi teenindamine ja kliendi lahkumine. Süsteemi olekud, mida need sündmused muudavad, oleks näiteks klientide arv järjekorras ja teenindaja staatus (hõivatud või vaba). Muutujad, millest süsteemi töö sõltub, on näiteks kui palju teenindamisele aega kulub ning kui kaua aega kliendid restoranis viibivad.

Mudel[muuda | muuda lähteteksti]

Simuleeritava süsteemi mudel koosneb mitmetest komponentidest.

Olek[muuda | muuda lähteteksti]

Süsteemi olekud on muutujad, mis hoiavad vajalikku infot süsteemi uurimiseks. Süsteemi olekud võivad aja jooksul muutuda sündmuste toimumisel.

Aeg[muuda | muuda lähteteksti]

Simulatsioon peab sündmuste toimimiseks arvestama aja kulgu, kas siis sündmuspõhiselt või astmeliselt.

Sündmused[muuda | muuda lähteteksti]

Mudelis hoitakse vähemalt ühte sündmuste järjendit. Selles järjendis on eelseisvad sündmused, mida põhjustasid eelnevad sündmused ning mida ennast pole jõutud veel simuleerida. Sündmust kirjeldab aeg, millal ta juhtub ning tüüp, mille põhjal jooksutatakse vastavat koodi, mis sündmust simuleerib.

Kui sündmused toimuvad hetkeliselt, siis tegevused, mis kestavad pikemat aega modelleeritakse sündmuste järjekorrana. Mõned sündmused võivad kesta ka intervallina, sel juhul on sündmuse juures ära märgitud algus- ja lõppaeg.

Sündmuste järjend on tavaliselt prioriteet-järjekord, mis on sorteeritud sündmuste algusaja põhjal [6]. Seetõttu on alati teada, mis on järgmine sündmus ning süsteemi aeg võib otse hüpata vastavalt järgmise sündmuseni.

Tavaliselt lisatakse sündmuste järjendisse uusi sündmusi dünaamiliselt vastavalt simulatsiooni kulgemisele. Simulatsiooni käivitamiseks on üldiselt algsed sündmused varem ette määratud.

Juhusliku arvu generaator[muuda | muuda lähteteksti]

Simulatsioonil on üldiselt vaja genereerida erinevaid juhuslikke muutujaid, vastavalt võimalikkudele sündmustele.

Statistika[muuda | muuda lähteteksti]

Simulatsioon kogub andmeid süsteemi toimimise kohta, mis on määratud vastavalt uurimisprobleemile. Restorani näitel oleks see näiteks keskmiste ooteaegade uurimiseks, mida saaks ära kasutada töögraafikute koostamisel. Simulatsioonis saadakse andmeid korduva simulatsiooni jooksutamisel saadud keskmiste tulemuste põhjal.

Lõppolek[muuda | muuda lähteteksti]

Simulatsiooni lõppemiseks peab otsustama, millal simulatsiooni töö lõpetada. Tavaliselt on selleks lihtsalt kas ajaline limiit või sündmuste arvu limiit.

Simulaatori loogika[muuda | muuda lähteteksti]

Simulaatori töö näeb välja umbes selline:

Algus[muuda | muuda lähteteksti]

  • Väärtusta lõppolek vääraks
  • Väärtusta süsteemi oleku muutujad
  • Väärtusta süsteemi algaeg
  • Lisa algsündmused sündmuste järjendisse

Töö[muuda | muuda lähteteksti]

  • Määra süsteemi ajaks järgmise sündmuse algusaeg
  • Simuleeri järgmine sündmus ning eemalda see sündmuste järjendist
  • Uuenda kogutud andmeid
  • Jooksuta tsüklit kuni lõppoleku saabumiseni

Lõpp[muuda | muuda lähteteksti]

  • Genereeri simulatsiooni aruanne

Kasutusalad[muuda | muuda lähteteksti]

Sellist simulatsiooni võib kasutada igas valdkonnas, kus on vaja mingit tegevust optimeerida. Selleks võib olla näiteks tootmise kitsaskohtade leidmine, töögraafikute optimeerimine vastavalt nõudlusele, arvutivõrgu testimine või mängudes tulemuse maksimeerimine.

Viited[muuda | muuda lähteteksti]

  1. Allen M., Spencer A., Gibson A., 2015. Health Services and Delivery Research, volume 3, issue 20. Right cot, right place, right time: improving the design and organisation of neonatal care networks – a computer simulation study (vaadatud 02.12.2019).
  2. Robinson, Stewart 2004. Simulation – The Practice of Model Development and Use. Hoboken, New Jersey: Wiley.
  3. Matloff, Norm 2008. Introduction to Discrete-Event Simulation and the SimPy Language (vaadatud 02.12.2019).
  4. Duivesteijn, Wouter 2006. Continuous Simulation (arhiveeritud 09.06.2011).
  5. Newell, A., Simon, H. A., Adelman, I., Hermann, C. F. Simulation (vaadatud 02.12.2019).
  6. Jones, Douglas W. 1986. Implementations of Time. Proceedings of the 18th Winter Simulation Conference (vaadatud 02.12.2019).