Univerzita 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: