Table Of ContentUniverzita Karlova v Praze
Matematicko-fyzik´aln´ı fakulta
(cid:19) (cid:20) (cid:19) (cid:19)
BAKALARSKA PRACE
Ji(cid:20)r(cid:19)(cid:16) Vytasil
Univerz(cid:19)aln(cid:19)(cid:16) diskr(cid:19)etn(cid:19)(cid:16) simul(cid:19)ator
Kabinet software a vy´uky informatiky
Vedouc´ı bakal´aˇrsk´e pr´ace: RNDr. Martin Pergel, Ph.D.
Studijn´ı program: Informatika
Studijn´ı obor: Spr´ava poˇc´ıtaˇcovy´ch syst´em˚u
Praha 2012
R´ad bych podˇekoval m´emu vedouc´ımu bakala´ˇrsk´e pr´ace, panu RNDr. Marti-
novi Pergelovi, Ph.D., za ochotu, cenn´e rady a vstˇr´ıcnost, kter´e mi projevoval
v pr˚ubˇehu psan´ı programu a t´eto pr´ace. D´ale bych r´ad podˇekoval svy´m ko-
leg˚um, se ktery´mi jsem mohl konzultovat technologie a postupy. Nakonec bych
r´ad podˇekoval sv´e rodinˇe za jejich podporu.
Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe a vy´hradnˇe
s pouˇzit´ım citovany´ch pramen˚u, literatury a dalˇs´ıch odborny´ch zdroj˚u.
Beru na vˇedom´ı, ˇze se na moji pr´aci vztahuj´ı pr´ava a povinnosti vyply´vaj´ıc´ı
ze z´akona ˇc. 121/2000 Sb., autorsk´eho z´akona v platn´em znˇen´ı, zejm´ena sku-
teˇcnost, ˇze Univerzita Karlova v Praze m´a pr´avo na uzavˇren´ı licenˇcn´ı smlouvy
o uˇzit´ı t´eto pr´ace jako ˇskoln´ıho d´ıla podle §60 odst. 1 autorsk´eho z´akona.
V Praze dne 31. 7. 2012 Podpis autora
N´azev pr´ace: Univerza´ln´ı diskr´etn´ı simul´ator
Autor: Jiˇr´ı Vytasil
Katedra: Kabinet software a vy´uky informatiky
Vedouc´ıbakal´aˇrsk´epr´ace:RNDr.MartinPergel,Ph.D.,Kabinetsoftwareavy´uky
informatiky
Abstrakt: V t´eto pr´ace je rozebr´an n´avrh a implementace programu umoˇznˇuj´ıc´ıho
prov´adˇet diskr´etn´ı simulace. D´ale je v programu implementova´na vizualizace
pr˚ubˇehu diskr´etn´ı simulace. D˚uraz je kladen pˇredevˇs´ım na univerzalitu. Kromˇe
programu a jeho popisu jsou zde informace o diskr´etn´ı simulaci, kter´e umoˇzn´ı jed-
noduˇsˇs´ı pochopen´ı ˇcinnosti programu. Pro popis diskr´etn´ı simulace pouˇz´ıv´ame
koneˇcn´e automaty a regul´arn´ı gramatiky. Zm´ınˇen´e ˇca´sti zde v´ıce popisujeme,
abychom jednoduˇseji pochopili popis diskr´etn´ı simulace. Syst´em d´ale umoˇznˇuje
u´pravu vstupn´ıch soubor˚u pro jednoduˇsˇs´ı pr´aci programu.
Kl´ıˇcov´a slova: diskr´etn´ı simulace, koneˇcny´ automat, regul´arn´ı gramatika
Title: Universal discrete simulator
Author: Jiˇr´ı Vytasil
Department: Department of Software and Computer Science Education
Supervisor: RNDr. Martin Pergel, Ph.D., Department of Software and Computer
Science Education
Abstract: In this thesis we analyzed the design and implementation of the pro-
gram allows you to perform discrete-event simulation. Further in the program
we implemented visualization of discrete-event simulation. Emphasis is placed
mainly on universality. In addition to the program and its description includes
informationofdiscrete-eventsimulation,whichallowseasierunderstandingofpro-
gram operation. For a description of discrete-event simulation using finite-state
automata and regular grammars. These parts are described more in order to mo-
re easily understand the description of the discrete-event simulation. The system
also allows adjustment of input files for easier operation of the program.
Keywords: deskrete event simulation, finite-state automaton, regular grammar
Obsah
U(cid:19)vod 2
1 Simulace 3
1.1 Syst´em, model, modelova´n´ı . . . . . . . . . . . . . . . . . . . . . 3
1.2 Definice simulace . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Spojit´a simulace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Diskr´etn´ı simulace . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4.1 Komponenty diskr´etn´ı simulace . . . . . . . . . . . . . . . 5
2 Kone(cid:20)cny(cid:19) automat a gramatika 6
2.1 Koneˇcny´ automat . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Gramatika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Pˇrevod regul´arn´ı gramatiky na koneˇcny´ automat . . . . . . . . . . 11
3 Analy(cid:19)za projektu 12
3.1 Programovac´ı jazyk . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Rozhodovac´ı konflikty . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.1 Z´aklad jazyka . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2.2 Automat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.3 Nedeterminismus automatu . . . . . . . . . . . . . . . . . 13
3.2.4 V´ıce pˇrechodovy´ch funkc´ı . . . . . . . . . . . . . . . . . . 13
3.2.5 Gramatika . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2.6 Vizualizace . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Implementace 15
4.1 Popis jednotlivy´ch souˇca´st´ı . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Koneˇcny´ automat . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3 Regul´arn´ı gramatika . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Vizualizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5 U(cid:20)zivatelsk(cid:19)a dokumentace 22
5.1 Automat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.2 Gramatika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.3 Ovl´ada´n´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Z(cid:19)av(cid:20)er 36
Seznam pou(cid:20)zit(cid:19)e literatury 37
Seznam tabulek 38
P(cid:20)r(cid:19)(cid:16)lohy 39
1
(cid:19)
Uvod
C´ılem bakala´ˇrsk´e pr´ace je vytvoˇren´ı programu umoˇznˇuj´ıc´ıho prov´adˇet dis-
kr´etn´ı simulace r˚uzny´ch jev˚u. Pˇredmˇetem bakala´ˇrsk´e pr´ace je tak´e jazyk, ktery´
popisuje jednotliv´e u´ˇcastn´ıky diskr´etn´ı simulace, a vhodn´a vizualizace diskr´etn´ı
simulace.
Zvolili jsme si toto t´ema, protoˇze jsme chtˇeli vytvoˇrit srozumitelny´ program
pro diskr´etn´ı simulace.
V programu je kladen d˚uraz pˇredevˇs´ım na univerzalitu.
Univerzalitu jsme zaruˇcili pˇri pouˇzit´ı koneˇcn´eho automatu a regul´arn´ı gramatiky
jako z´aklad jazyka. V´ıce o univerzalitˇe v 3.2.1.
Vyuˇzit´ım koneˇcn´eho automatu a regul´arn´ı gramatiky jsme pouˇzili jiˇz zn´am´e
prostˇredky, takˇze je popis diskr´etn´ı simulace jednoduˇsˇs´ı na pochopen´ı.
Vytvoˇrili jsme program, ktery´ se d´a vyuˇz´ıt pro vizualizaci diskr´etn´ı simu-
lace. D´a se ale tak´e vyuˇz´ıt pouze jej´ı ˇca´st reprezentuj´ıc´ı pr´aci diskr´etn´ı simulace,
kter´a se d´a zavolat i z jin´e aplikace.
2
1. Simulace
1.1 Syst(cid:19)em, model, modelov(cid:19)an(cid:19)(cid:16)
Syst(cid:19)em
Syst´em je abstraktn´ı objekt, ktery´ byl vytvoˇren syst´emovy´m pˇr´ıstupem. [4]
Definice syst´emu od L. von Bertalanffyho:
Syst´em je komplex prvk˚u nach´azej´ıc´ıch se ve vz´ajemn´e interakci.
V t´eto definici jsou zachyceny dvˇe z´akladn´ı vlastnosti kaˇzd´eho syst´emu. Tˇemi
jsou jeho struktura a chova´n´ı.
Struktura syst(cid:19)emu ja d´ana element´arn´ımi prvky a vazbami mezi nimi. Pokud
je syst´em tvoˇren r˚uzny´mi prvky, mluv´ıme o strukturovan(cid:19)em syst(cid:19)emu. Jednotliv´e
prvky jsou pak nestrukturovan(cid:19)e syst(cid:19)emy. Kaˇzdy´ prvek m´a obvykle ˇradu vlast-
nost´ı, oznaˇcovany´ch jako atribut prvku.
Chov(cid:19)an(cid:19)(cid:16) syst(cid:19)emu je forma z´avislosti vy´stupu syst´emu na vstupech.
Model
Term´ın model je pouˇzit pro analogii mezi dvˇema syst´emy. Prvn´ı syst´em, ktery´
odpov´ıd´a zkouman´emu objektu, je modelovan(cid:19)y syst(cid:19)em. Druhy´ syst´em, ktery´ de-
finujeme, je modeluj(cid:19)(cid:16)c(cid:19)(cid:16) syst(cid:19)em. [1, 4]
Vztahobousyst´em˚ujed´ant´ım,ˇzekaˇzd´emuprvkuP modelovan´ehostst´emuje
pˇriˇrazen prvek Q modeluj´ıc´ıho syst´emu. Kaˇzd´emu atributu g prvku P je pˇriˇrazen
atribut h prvku Q a pro hodnoty atribut˚u g a h je d´ana nˇejak´a relace. [1, 4]
Modelov(cid:19)an(cid:19)(cid:16)
Vytv´aˇren´ı analogie mezi modely se nazy´va´ modelova´n´ı. Modelovany´ syst´em
by´va´ oznaˇcova´n jako origin(cid:19)al a m´ısto pojmu modeluj´ıc´ı syst´em se pouˇz´ıv´a term´ın
model. [4]
1.2 De(cid:12)nice simulace
Dahl:
Simulace je vy´zkumna´ technika, jej´ıˇz podstatou podstata spoˇc´ıva´ v tom, ˇze zkou-
many´ dynamicky´ syst´em nahrad´ıme jeho simul´atorem (modelem) a s n´ım prova´-
d´ıme pokusy (experimenty) s c´ılem z´ıskat informaci o p˚uvodn´ım zkouman´em
syst´emu.
Shannon:
Simulace je proces tvorby modelu re´aln´eho syst´emu a prov´adˇen´ı experiment˚u
s t´ımto modelem za u´ˇcelem dosaˇzen´ı lepˇs´ıho pochopen´ı chov´an´ı studovan´eho
syst´emu ˇci za u´ˇcelem posouzen´ı r˚uzny´ch variant ˇcinnosti syst´emu.
3
Naylor:
Simulacejenumerick´ametoda,kter´aspoˇc´ıv´avexperimentova´n´ısmatematicky´mi
modely re´alny´ch syst´em˚u na ˇc´ıslicovy´ch poˇc´ıtaˇc´ıch.
Cendel(cid:19)(cid:16)n:
Simulace je technika pro vy´zkum dynamicky´ch syst´em˚u, jej´ıˇz podstata spoˇc´ıva´
v tom,ˇze zkoumany´ syst´em nahrad´ıme jeho simulaˇcn´ım modelem a s t´ımto mode-
lem prov´ad´ıme experimenty proto, abychom z´ıskali informace o p˚uvodn´ım zkou-
man´em syst´emu. Origin´al (zkoumany´ syst´em) se v simulaci nazy´v´a simulovan(cid:19)y
syst(cid:19)em a simulaˇcn´ı model se nazy´v´a simuluj(cid:19)(cid:16)c(cid:19)(cid:16) syst(cid:19)em nebo tak´e simul(cid:19)ator.
1.3 Spojit(cid:19)a simulace
Spojit´asimulacejezaloˇzenanazmˇena´chrovnomˇernˇevzd´aleny´chvˇcase.Nejsou
zde privilegovan´e okamˇziky.
Na simulaci nahl´ıˇz´ıme v pravidelny´ch intervalech, at’ uˇz se dˇeje nˇeco zaj´ımev´eho,
ˇci nikoliv.
1.4 Diskr(cid:19)etn(cid:19)(cid:16) simulace
V diskr´etn´ı simulaci se zmˇeny dˇej´ı nespojitˇe v ˇcase. Model, nad ktery´m dis-
kr´etn´ı simulac prob´ıh´a, pak obsahuje chronologicky navazuj´ıc´ı dˇeje.
Procesy
Proces je posloupnost logicky na sebe navazuj´ıc´ıch ud´alost´ı.
Stavy proces(cid:23)u
V souvislosti s pl´anova´n´ım proces˚u rozliˇsujeme ˇctyˇri stavy proces˚u [1]:
1. Stav aktivn(cid:19)(cid:16). Proces je pr´avˇe prova´dˇen, tj. je pr´avˇe realizova´n vy´poˇcet
odpov´ıdaj´ıc´ı nˇekter´e jeho ud´alosti. V aktivn´ım stavu m˚uˇze by´t v dan´em
okamˇziku vy´poˇctu nejvy´ˇse jeden proces.
2. Stav ukon(cid:20)ceny(cid:19). Proces je v tomto stavu, pokud je ukonˇcena jeho operaˇcn´ı
ˇca´st. Takovy´ proces jiˇz nem˚uˇze by´t ani aktivov´an, ani napl´anova´n k prov´a-
dˇen´ı.
3. Stav p(cid:20)ripraveny(cid:19) neboli suspendovany(cid:19). Proces je napl´anov´an k prov´a-
dˇen´ı v nˇejak´em konkr´en´ım okamˇziku simula´rn´ıho ˇcasu.
4. Stav pasivn(cid:19)(cid:16). Proces nen´ı ukonˇceny´, ale nen´ı ani napl´anov´an k prov´adˇen´ı.
K jeho vyvola´n´ı m˚uˇze doj´ıt tehdy, bude-li napl´anov´an prostˇrednictv´ım nˇe-
jak´eho jin´eho procesu.
Jaky´koliv vytvoˇreny´ proces se v kaˇzd´em okamˇziku vyskytuje pr´avˇe v jednom
z uvedeny´ch stav˚u.
4
1.4.1 Komponenty diskr(cid:19)etn(cid:19)(cid:16) simulace
Mezi komponenty diskr´etn´ı simulace patˇr´ı: ˇcas, kalenda´ˇr ud´alost´ı, gener´ator
n´ahodny´ch ˇc´ısel, statistiky a koneˇcn´e podm´ınky.
Pˇredstavme si ˇcasovou pˇr´ımku pro (cid:20)cas, ktery´ ub´ıh´a uvnitˇr simulace. Na t´eto
pˇr´ımce m´ame spoustu bod˚u odpov´ıdaj´ıc´ıch ud´alostem. Uvnitˇr simulace potˇrebu-
jeme tyto ud´alosti proj´ıt a zpracovat v poˇrad´ı, jak leˇz´ı na pˇr´ımce. Pˇred spuˇstˇen´ım
simulacejsmenapl´anovalinˇekolikud´alost´ı.Dalˇs´ıvzniklyjakod˚usledekpˇredeˇsly´ch
ud´alost´ı.
Kalend(cid:19)a(cid:20)r ud(cid:19)alost(cid:19)(cid:16) je ˇr´ıd´ıc´ı struktura simulaˇcn´ıho programu, kter´a zahrnuje
pˇredevˇs´ım programov´e prostˇredky pro pl´anova´n´ı ud´alost´ı. Posloupnost ud´alost´ı
v simulaˇcn´ım modelu nen´ı pˇrirozenˇe d´ana pˇredem. Proto je z´akladn´ım u´kolem
simulaˇcn´ıho programu tuto posloupnost vytv´aˇret a pr˚ubˇeˇznˇe aktualizovat. A je
to pr´avˇe kalenda´ˇr ud´alost´ı, jenˇz mus´ı plnˇen´ı tohoto u´kolu zajiˇst’ovat. [1]
Z(cid:19)akladn(cid:19)(cid:16) funkce kalend(cid:19)a(cid:20)re ud(cid:19)alost(cid:19)(cid:16)
Vyˇzadujeme, aby kalenda´ˇr zabezpeˇcoval ˇctyˇri z´akladn´ı funkce [5]:
1. zjistit, zda je dan´a ud´alost napl´anov´ana ˇci nikoliv, a v pˇr´ıpadˇe, ˇze na-
pl´anov´ana je, zjistit hodnotou jej´ıho aktivn´ıho ˇcasu
2. vybrat proces s minim´aln´ı hodnotou aktivaˇcn´ıho ˇcasu, a pokud je takovy´ch
proces˚u se stejnou hodnotou v´ıce, vybrat ten s nejvyˇsˇs´ı prioritou
3. napl´anovat momenta´lnˇe nenapl´anovanou ud´alost (proces)
4. zruˇsit pl´an moment´alnˇe napl´anovan´e ud´alosti (procesu)
Simulace potˇrebuje generovat pseudon´ahodn´e veliˇciny, kter´e z´avis´ı na modelu.
Toto je splnˇeno jedn´ım, nebo v´ıce pseudon(cid:19)ahodn(cid:19)ymi gener(cid:19)atory. Pseudon´ahodn´a
ˇc´ısla se vyuˇz´ıvaj´ı k napodoben´ı re´alny´ch podm´ınek. Program neimplementuje
pseudon´ahodny´ gener´ator.
Vy´stupem simulace jsou statistick(cid:19)a data z´ıskan´a pˇri simulaci, kter´a mus´ıme
d´ale zpracovat, abychom z´ıskali vy´sledn´e informace. Program negeneruje statis-
tiky.
Pro simulaci je d˚uleˇzit´e, aby mohla nˇekdy skonˇcit. Proto je nutn´e zav´est kon-
cov(cid:19)e podm(cid:19)(cid:16)nky, kdy simulace skonˇc´ı. Napˇr. v ˇcase t nebo po proveden´ı n ud´alost´ı.
5
2. Kone(cid:20)cny(cid:19) automat a gramatika
2.1 Kone(cid:20)cny(cid:19) automat
De(cid:12)nice
• Abeceda je libovolna´ koneˇcna´ nepr´azdn´a mnoˇzina prvk˚u oznaˇcovan´a p´ıs-
menem Σ. Prvky abecedy se nazy´vaj´ı symboly nebo t´eˇz znaky abecedy.
[12]
• Slovovjelibovoln´akoneˇcn´aposloupnostsymbol˚udan´eabecedyΣ.Posloup-
nost a ;a ;:::;a , kde a (pro i = 1;2;:::;n) ∈ Σ, je moˇzno zapsat zkr´acenˇe
1 2 n i
a a :::a , pokud t´ım nem˚uˇze nastat nedorozumˇen´ı. [9]
1 2 n
• Σ(cid:3) = mnoˇzina vˇsech slov v abecedˇe Σ.
• Σ+ = mnoˇzina vˇsech nepr´azdny´ch slov v abecedˇe Σ.
• Σ(cid:3) = Σ+ ∪{(cid:21)}
• D´elka slova je poˇcet znak˚u, kter´e slovo tvoˇr´ı.
• Pr´azdn´e slovo neobsahuje ˇza´dny´ symbol a znaˇc´ı se znakem ".
• Prefix oznaˇcuje zaˇca´tek slova, sufix konec slova.
• Podslovo je pak jak´akoliv ˇca´st slova.
• Pr´azdn´e slovo " je souˇcasnˇe prefixem, sufixem i podslovem.
• Jsou-li u, v, w, x slova nad abecedou Σ a u = vwx, pak je slovo w podslovem
slova u. Kdyˇz je v = ", pak je w prefixem, kdyz je x = ", pak je w sufixem.
[9]
Form(cid:19)aln(cid:19)(cid:16) jazyk
De(cid:12)nice. Form(cid:19)aln(cid:19)(cid:16) jazyk nad abecedou Σ je libovoln(cid:19)a mno(cid:20)zina slov nad touto
abecedou, tedy podmno(cid:20)zinou Σ(cid:3). Jazyk se obvykle zna(cid:20)c(cid:19)(cid:16) p(cid:19)(cid:16)smenem L (s indexy).
[12]
Kone(cid:20)cny(cid:19) a nekone(cid:20)cny(cid:19) jazyk
Koneˇcny´ jazyk je jazyk obsahuj´ıc´ı koneˇcnˇe mnoho slov. Lze je zadat vy´ˇctem
prvk˚u.
Nekoneˇcny´ jazyk je jazyk obsahuj´ıc´ı nekoneˇcnˇe slov. Lze je zadat jen s pomoc´ı
omezuj´ıc´ı podm´ınky charakterizuj´ıc´ı slova, kter´a jazyk obsahuje.
6
Description:úpravu vstupnıch souboru pro jednoduššı práci programu. Vstupnı data pro beh programu musı být ulozena v souboru s prıponou .txt, jiné koncovky program .. [15] MacDonald, M. Pro WPF in C# 2010: Windows Presentation Foundation in .NET 4.0 USA: Apress, 2010 ISBN 978-1-4302-7205-2.