Úloha 1: V městě A leží hromada 1000 tun písku. Zjistěte, za jak dlouho lze

Podobné dokumenty
alkoholu v organismu, jízdu výtahů s lidmi...).

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Anotace. Dynamické programování, diskrétní simulace.

Úvod do simulace - 1

Algoritmizace. 1. Úvod. Algoritmus

SIMULACE SPOLEHLIVOSTI SYSTÉMŮ HROMADNÉ OBSLUHY. Michal Dorda. VŠB - TU Ostrava, Fakulta strojní, Institut dopravy

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Druhá skupina zadání projektů do předmětu Algoritmy II, letní semestr 2014/2015

1. D Y N A M I C K É DAT O V É STRUKTUR Y

Řešení: PŘENESVĚŽ (N, A, B, C) = přenes N disků z A na B pomocí C

Simulace na modelu firmy v prostředí Witness

Už známe datové typy pro representaci celých čísel i typy pro representaci

Rovnoměrný pohyb II

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Poslední nenulová číslice faktoriálu

6 Příkazy řízení toku

Exponenciální modely hromadné obsluhy

V každém kroku se a + b zmenší o min(a, b), tedy vždy alespoň o 1. Jestliže jsme na začátku dostali 2

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

Dijkstrův algoritmus

km vyjel z téhož místa o 3 hodiny později h km. Za jak dlouho dohoní cyklista chodce? h km vyjede z téhož místa o 2 hodiny h

POVLTAVSKÉ SETKÁNÍ BALTÍKŮ - 9.ročník a

1. Nákladní automobil ujede nejprve 6 km rychlostí 30 km/h a potom 24 km rychlostí 60 km/h. Určete jeho průměrnou rychlost.

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např.

NPRG030 Programování I, 2018/19 1 / :03:07

Pohyb tělesa (5. část)

Projekt Obrázek strana 135

Implementace LL(1) překladů

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Kombinované úlohy - cvičení

Sada 1 - Základy programování

Dokumentace k semestrální práci z předmětu PT

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Test prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Úloha ve stavovém prostoru SP je <s 0, C>, kde s 0 je počáteční stav C je množina požadovaných cílových stavů

1.1.4 Poměry a úměrnosti I

Abstraktní datové typy FRONTA

2. úkol MI-PAA. Jan Jůna (junajan)

Rovnice s neznámou pod odmocninou I

Zavedení taktového provozu na tratích 225 a 227

SPRÁVNÁ ODPOVĚĎ 1. KOLA:

PROFESIONÁLNÍ ŘIDIČI ZAMYSLETE SE. Rychlá jízda = příliš vysoké riziko nehody.

CargoBeamer AG Bautzen Intermodální přepravní systém z Německa Řešení pro Evropu

13. cvičení z PSI ledna 2017

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Úměrnosti - opakování

Dvojitá trojčlenka

Homer. prvky. délka. přední 0 zadní 4. Použití fronty BUS STOP. 3 Lisa. 2 Bart. 4 Maggie. 1 Marge. Grafické znázornění předchozí animace:

Vzorová písemka č. 1 (rok 2015/2016) - řešení

Závěrečná zkouška z informatiky 2011

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

dovolují dělení velkých úloh na menší = dekompozice

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Programování v jazyku LOGO - úvod

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA DOPRAVNÍ. Semestrální práce. Z předmětu Teorie hromadné obsluhy (THRO) Jan Čáslava.

Jízdní řád, grafikon

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Jednoduchá exponenciální rovnice

CVIČNÝ TEST 11. OBSAH I. Cvičný test 2. Mgr. Tomáš Kotler. II. Autorské řešení 6 III. Klíč 19 IV. Záznamový list 21

Vícekanálové čekací systémy

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

Micro:bit lekce 3. - Konstrukci If Then a If Then Else najdete v kategorii Logic - Podmínky od If (např. porovnání < >= atd.) najdete taktéž v Logic

[2 b.] Zákon o silničním provozu upravuje pravidla provozu: [2 b.] Řidič smí v provozu na pozemních komunikacích užít:

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Stránky ročníku D, ČVUT Poděbrady,

Obsah 1. Úvod Účel manuálu Ruční zápis oprav Automatické plánování Plánování pomocí řetězců...

Násobení pomocí sčítání

Registrační číslo projektu: Škola adresa: Šablona: Ověření ve výuce Pořadové číslo hodiny: Třída: Předmět: Název: Hledáme v jízdních řádech Anotace:

Stromy, haldy, prioritní fronty

5. Náhodná veličina. 2. Házíme hrací kostkou dokud nepadne šestka. Náhodná veličina nabývá hodnot z posloupnosti {1, 2, 3,...}.

Výhody a nevýhody jednotlivých reprezentací jsou shrnuty na konci kapitoly.

Operační systémy Tomáš Hudec. 6 Komunikace procesů (IPC) Obsah: 6.1 Klasické problémy souběhu Obědvající filosofové

Mezinárodní kolo soutěže Baltík 2010, kategorie C a D

NP-úplnost problému SAT

intenzitu příchodů zákazníků za čas t intenzitu obsluhy (průměrný počet obsloužených) za čas t

Algoritmizace a programování

Vector datový kontejner v C++.

1. Implementace funkce počet vrcholů. Předmět: Algoritmizace praktické aplikace (3ALGA)

Přímá úměrnost III

Parametrické programování

Vzdálenost uzlů v neorientovaném grafu

SIMULAČNÍ MODEL ČINNOSTÍ VEŘEJNÉHO LOGISTICKÉHO CENTRA

Základy umělé inteligence

Programovací jazyk Pascal

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Obecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012

Výukový materiál zpracován v rámci projektu EU peníze školám

CLARKEOVA-WRIGHTOVA METODA ŘEŠENÍ ÚLOHY VRP

EV4. Cyklostezka EuroVelo 4, H. Počernice Polabí.

BIOMECHANIKA. Studijní program, obor: Tělesná výchovy a sport Vyučující: PhDr. Martin Škopek, Ph.D.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Přerušovací systém s prioritním řetězem

Sada 1 - Základy programování

Pearsonůvχ 2 test dobré shody. Ing. Michal Dorda, Ph.D.

ÚKOLOVÝ LIST. Aktivita projektu Obloha na dlani - Laboratoř vědomostí ROBOT NA PÁSOVÉM PODVOZKU

Transkript:

Tomáš Holan, sim.txt, Verse: 13. dubna 2006. Diskrétní simulace Mějme následující úlohu: Úloha 1: V městě A leží hromada 1000 tun písku. Zjistěte, za jak dlouho lze převézt všechen písek do města B vzdáleného 60 km, pokud máme k disposici nákladní automobil s následujícími parametry: - nosnost: 10 tun - rychlost: 60 km/hod - doba nakládání: 1 hodina - doba vykládání: 6 minut. Neuvažujeme žádné přestávky v práci, ani na odpočinek ani na doplňování pohonných hmot. Úlohy, jako je tato, můžeme řešit jednoduchým výpočtem. Podělením množství písku a nosnosti automobilu zjistíme, že automobil musí jet stokrát z města A do města B, k tomu stokrát nakládat a vykládat a devadesátdevět-krát jet z města B zpátky do města A. To dává čas 100x(1+1+0,1)+99x1 = 210+99 = 309 hodin. Úloha 2:...se liší od Úlohy 1. tím, že máme dva automobily, jejich parametry jsou stejné jako parametry automobilu z Úlohy 1. Nakládat i vykládat mohou oba současně. Úlohu 2 můžeme také řešit výpočtem. Protože oba automobily budou všechny činnosti vykonávat souběžně, stačí počítat s jedním automobilem o dvojnásobné nosnosti: 50x(1+1+0,1)+49x1 = 105+49 = 154 hodin. Úloha 3:...je také modifikací Úlohy 1, ale automobily jsou různé a při nakládání musí čekat, až bude volný nakladač, nakládat tedy může vždy nejvýše jeden automobil. Pokud k nakladači přijede ve stejný okamžik více automobilů (třeba hned na začátku), má přednost automobil s nižším číslem. Parametry automobilů jsou: Automobil 1: - nosnost: 10 tun - rychlost: 60 km/hod - doba nakládání: 1 hodina - doba vykládání: 6 minut. Automobil 2: - nosnost: 10 tun - rychlost: 90 km/hod - doba nakládání: 1 hodina - doba vykládání: 6 minut.

Automobil 3: - nosnost: 20 tun - rychlost: 60 km/hod - doba nakládání: 2 hodiny - doba vykládání: 10 minut. Některé úlohy už jsou příliš složité na to, abychom mohli dosadit do vzorečku a dostat výsledek. V této úloze doba, za jakou automobil naloží, odveze, vyloží a vrátí se, bude záviset i na tom, zda při nakládání bude muset čekat na jiné auto. Kdybychom tuto úlohu museli vyřešit, nakonec nám nezbude nic jiného, než si vzít autíčka, kus papíru a začít postupně napodobovat modelovat přepravu písku. Chceme-li předpovědět, jak dopadne nebo jak by dopadala určitá činnost ve skutečném světě, vytvoříme si model, pozorováním modelu zjistíme výsledek a ten se pokusíme přenést zpátky do skutečného světa. Model je vždycky určitým zjednodušením. V našem modelu například vůbec neuvažujeme poruchy ani ostatní provoz na silnicích. Simulace je způsob, jak modelovat děje. Počet a poloha automobilů, množství písku a další parametry modelují určitý stav světa. Simulace modeluje přechody mezi těmito stavy, například když se auto vyloží, stoupne množství písku v cílovém městě. Diskrétní simulace se odlišuje od simulace spojité. Pokud simulujeme třeba volný pád, let letadla nebo přistání na Měsíci, přepočítává se stav modelu v pravidelných krocích - takže určitě ne spojitě. Přesto takovou simulaci nenazveme diskrétní. Proč? Představte si, že simulujete život na odlehlé železniční zastávce. Minutu za minutou, hodinu za hodinou, přednosta (jen z pohledu modelu!) sedí a kouká na hodiny. Když se přiblíží stanovený čas, nasadí si čepici, vyjde před stanici, zasalutuje projíždějícímu vlaku a potom vejde do kanceláře, sundá čepici a zase kouká na hodiny, minutu za minutou, hodinu za hodinou. Tak vypadá spojitá simulace. V případě diskrétní simulace přednosta poté, co vlak odjel, vejde do stanice, podle jízdního řádu si nastaví budík - a usne. Diskrétní simulace probíhá v nepravidlených časových skocích a simuluje jen ty okamžiky, kdy se něco děje. Na začátku naší simulace budou všechna auta ve městě A. První auto může začít hned nakládat a víme, že nejbližší hodinu nebude dělat nic jiného. Další auta zatím musí čekat. Až auto číslo 1 ukončí nakládání, vydá se na cestu do města B a ve stejný okamžik může začít nakládat auto číslo 2. Abychom zkrátili zápis, dále místo V X hodin automobil Y dělá činnost Z budeme psát jen ony parametry X, Y a Z: 0:00 1 začíná nakládat 0:00 2 se staví do fronty u nakládání 0:00 3 se staví do fronty u nakládání 1:00 1 je naložen, vyjíždí do B 1:00 2 začíná nakládat 2:00 1 dojel do B, začíná vykládat

2:00 2 je naložen, vyjíždí do B 2:00 3 začíná nakládat 2:06 1 je vyložen, vyjíždí do A 3:00 2 dojel do B, začíná vykládat 3:06 1 dojel do A, staví se do fronty u nakládání 3:06 2 je vyložen, vyjíždí do A 4:00 3 je naložen, vyjíždí do B 4:00 1 začíná nakládat Takovému seznamu říkáme simulační kalendář. Jeho položky obsahují údaje o jednotlivých událostech KDY nastanou, KDO na ně bude reagovat a CO (jaká událost) se stane. Součástí simulačního modelu je i proměnná, která modeluje čas. Této proměnné se říká simulační čas. Jak naprogramovat diskrétní simulaci Programy provádějící simulaci vypadají všechny podobně: * Vytvoř počáteční stav modelu, včetně inicializace procesů, simulačního kalendáře a simu * Dokud není konec, opakuj: * vyber z kalendáře událost s nejnižším časem * nastav její čas jako simulační čas * zapracuj tuto událost Podmínka dokud není konec v našem příkladu bude znamenat,,tak dlouho, než bude všechen písek převezen do města B. To, čím se jednotlivé modely od sebe liší, tedy spočívá někde jinde. Při návrhu simulačního modelu potřebujeme zodpovědět otázky, jaké objekty (procesy) budou v modelu figurovat, jaké události budou zpracovávat a co vše bude zahrnovat zpracování té které události (změnu ve stavu modelu, naplánování událostí atd.). V našem příkladu vystačíme s procesem Automobil. Události, které se ho týkají budou začátek simulace (udstart), začátek nakládání (udnakládej), začátek cesty z A do B (udjedab), začátek vykládání (udvykladej) a začátek cesty z B do A (udjedba). type TUdalost = (udstart, udnakladej, udjedab, udvykladej, udjedba ); Automobily budou representovány pomocí objektů typu TAutomobil type TAutomobil = object rychlost: real; { v km/hod } nosnost: integer;

doba_nakladky: real; { v hodinach } doba_vykladky: real; { v hodinach } {--------------------} naklad: integer; { v tunach } procedure ZpracujUdalost( U: TUdalost ); Frontu automobilů čekajících na nakládání budeme reprezentovat jen jednou proměnnou KdyLzeNakladat udávající, kdy může začít nakládání příštího automobilu. Každý automobil při příjezdu porovná tento čas s aktuálním simulačním časem, pokud je uvedená hodnota menší, znamená to, že fronta je již prázdná, jinak je tam čas, kdy automobil opravdu začne nakládat. Zpracování jednotlivých událostí obstarává následující procedura: procedure TAutomobil.ZpracujUdalost( U: TUdalost ); var t: real; case U of udstart, udnakladej: if KdyLzeNakladat < Cas then t := Cas else t := KdyLzeNakladat; KdyLzeNakladat := t+dobanakladky; Naplanuj( @Self, t + DobaNakladky, udjedab ); udjedab: if PisekVA < nosnost then naklad := PisekVA else naklad := nosnost; PisekVA := PisekVA - naklad; Naplanuj( @Self, Cas + vzdalenost / rychlost, udvykladej ); udvykladej: Naplanuj( @Self, Cas + DobaVykladky, udjedba ); udjedba: PisekVB := PisekVB + naklad if PisekVB = PisekCelkem then KONEC := TRUE else Naplanuj( @Self, Cas + vzdalenost / rychlost, udnakladej ); end { case }

Postřeh: Když se díváme na zpracování jednotlivých událostí, můžeme si všimnout, že událost udstart je zbytečná, protože bychom ji mohli sloučit s událostí udnakladej. Událost udvykladej je také zbytečná, stačilo by při zpracování události udjedab hned naplánovat událost udjedba. Pokud ale nemáme zvláštní požadavky na rychlost výpočtu simulace, necháme model raději v tomto stavu, kdy je přehlednější a přístupnější případným změnám. Upozornění: Možná nás v tuto chvíli napadne, že když se ve stejný okamžik sejdou u nakládání dva automobily, mohli bychom dříve naložit ten rychlejší nebo ten, který bude dříve naložen nebo... ale pozor! Úlohou simulačního programu není optimalizovat! Diskrétní simulace je jen prostředek, který má odpovědět na otázku,,jak by za určitého nastavení podmínek a parametrů probíhala určitá činnost?. A tato simulace potom může být součástí jiného programu, který zkouší různé změny nastavení, pravidel, parametrů a pomocí diskrétní simulace zjišt uje, zda by tyto změny byly k lepšímu nebo k horšímu. Ukažme si ještě návrh většího modelu. Úloha 4: Obchodní dům má několik oddělení v několika patrech mezi nimiž jezdí výtah. Vstupem programu jsou: parametry výtahu: - nosnost - doba nastoupení jednoho člověka - doba vystoupení jednoho člověka - doba přejezdu mezi dvěma patry seznam oddělení s parametry: - číslo oddělení - patro - doba obsluhy jednoho zákazníka seznam zákazníků s údaji: - čas příchodu - seznam oddělení, v nichž chce nakoupit - trpělivost Program má spočítat, kdy odejde poslední zákazník, ale jakmile budeme provádět simulaci, můžeme spočítat i jiné údaje, například kolik času stráví zákazníci ve frontách u oddělení nebo u výtahu, jak moc je využitý výtah, kolikrát zákazníkům došla trpělivost atd. Zákazník prochází oddělení v pořadí podle svého seznamu, nemůže-li být hned obsloužen, řadí se do fronty, ale pokud nezačne být obsluhován dříve, než vyprší jeho trpělivost, zařadí si toto oddělení na konec svého seznamu a z fronty odejde, s výjimkou případu, kdy se jedná o jeho poslední dosud nenavštívené

oddělení. U výtahů se zákaznící řadí do front a nastupují, pouze když výtah jede v jejich směru. Výtah se řídí algoritmem výtahu, tj. pokud má nějaký požadavek (na nastoupení nebo na dopravu již vezeného pasažéra) ve směru, jímž právě jede, nemění směr jízdy. Pokud prázdný výtah nemá žádný požadavek, zastaví se. Pokud stojící výtah obdrží ve stejném čase dva požadavky v různých směrech, upřednostní směr nahoru. Výše uvedené podmínky udávají pravidla světa, který chceme modelovat i jemnost modelu. Pokud jsme nezapomněli specifikovat ještě nejaké,,pravidlo, jakýkoliv program modelující takto zadaný obchodní dům by při stejných vstupních datech měl vydat stejný výsledek. Přesto však máme určitou volnost v tom, jak vytvoříme počítačový model. Například u minulé úlohy jsme fronty u nakládání písku modelovali pomocí jedné proměnné, v jiném modelu bychom mohli čekající automobily řadit do spojového seznamu. Návrh simulačního modelu Uvažování nad počítačovým modelem bychom měli zahájit otázkou,,,jaké procesy budou v modelu figurovat?. V našem návrhu to budou procesy Zákazník, Oddělení a Výtah. Mohli bychom dojít k tomu, že by nám stačily pouze dva procesy (schválně, které?), ale zůstaňme u těchto tří - opět z důvodu větší přehlednosti a otevřenosti k případným změnám. Dále bychom měli určit seznam událostí, udělejme předtím ale jeden mezikrok, který nám návrh modelu usnadní - ujasněme si u každého procesu - v jakých stavech se může nacházet - co/kdo zůsobuje přechody mezi těmito stavy - jaké akce je potřeba provést při přechodu mezi stavy. Šikovným nástrojem pro uvažování nad těmito otázkami jsou stavové diagramy. U některých přechodů máme na výběr, který proces zajistí tu či onu změnu v proměnných modelu. Kreslení diagramů je způsob, který nám dovoluje jednak vidět stavy, přechody i akce více procesů najednou a jednak snadno dělat změny (není nad tužku a papír!). Výsledný diagram může vypadat třeba takto: Z diagramů potom můžeme odvodit seznam událostí a výčet toho, co je třeba provést při jejich zpracování: Události: Zákazník: udstart, udtrpělivost, udobsloužen Oddělení: udstart Výtah: udstart Obsluha událostí:

Obrázek 1. Stavový diagram procesu Zákazník Zákazník: udstart: - pokud je seznam nákupů prázdný - pokud je v přízemí => konec (už nic nedělat ani se neplánovat) - zařadí se do fronty u výtahu pro jízdu do přízemí *) podrobněji dále - pokud je první nákup v seznamu nákupů v tomto patře - zařadí se do fronty u oddělení podle příštího nákupu *) podrobněji dále - pokud se nejedná o poslední oddělení v seznamu, naplánuje si udtrpělivost na ČAS+trpelivost nic neplánuje - zařadí se do fronty u výtahu pro jízdu do patra podle patra příštího nákupu **) podrobněji dále udobsloužen: - vyřadí první nákup ze seznamu - pokračuje událostí udstart (bud volání nebo naplánovat na ČAS+0) udtrpělivost: - vyřadí se z fronty u oddělení - přesune první položku seznamu na konec seznamu

- pokračuje událostí udstart (bud volání nebo naplánovat na ČAS+0) Oddělení: udstart: - pokud je fronta zákazníků prázdná - nastaví SPIM na TRUE - nastaví SPIM na FALSE - prvního zákazníka ve frontě - vyřadí z fronty - zruší mu naplánovanou udtrpělivost - naplánuje mu odobsloužen na ČAS+doba_obsluhy - naplánuje si udstart na ČAS+doba_obsluhy Výtah: udstart: - pokud je seznam pasažérů neprázdný { nebudeme měnit směr } - pokud chce někdo vystoupit v tomto patře - pro prvního z pasažérů, kteří chtějí vystupovat v tomto patře: - vyřadí z fronty pasažérů - nastaví mu Patro na Patro výtahu - naplánuje mu udstart na ČAS+doba_výstupu - naplánuje si udstart na ČAS+doba_výstupu (- konec zpracování události) { jedeme dál } <<NASTUP: - pokud chce někdo nastupovat ve Směru jízdy... { má pasažéry, takže nemůže měnit Směr }...a zároveň je volná kapacita: - pro prvního zákazníka čekajícího ve frontě pro aktuální Směr jízdy: - vyřadí z fronty čekajících - přidá do seznamu pasažérů - naplánuje si udstart na ČAS+doba_nástupu [tj. nerozlišujeme události a nevyužíváme toho, že ted už nemůže nikdo vystupovat] { nikdo nebude nastupovat } - změní proměnnou Patro o Směr {+1/-1} - naplánuje si udstart na ČAS+doba_mezi_patry NASTUP>> { výtah JE prázdný }

- pokud je nějaký požadavek ve směru jízdy -> NASTUP - pokud je požadavek v opačném směru - změní Směr výtahu -> NASTUP - nastav SPIM na TRUE { Směr := 0 } *) Přidání do fronty u Oddělení - metoda třídy TOddělení, přidá do fronty a pokud SPIM=TRUE, naplánuje udstart na CAS+0 **) Přidání do fronty u Vytahu - metoda třídy TVytah, přidá do fronty podle patra a směru jízdy a pokud SPIM=TRUE, naplánuje udstart na CAS+0 Takto popsaný simulační model už postačuje k tomu, abychom napsali simulační program, v podstatě v jakémkoliv jazyku a naopak - takovýto popis je přehlednější, než zdrojový kód programu. Tímto popisem tedy může práce na návrhu implementace modelu skončit. Poznámka: Vidíme, že proces Výtah při všech svých stavech vystačí s jedinou událostí, stav procesu lze jednoznačně určit podle proměnných určující aktuální patro a směr jízdy, seznamu pasažérů a seznamů zákazníků čekajících na výtah v jednotlivých patrech a směrech. Podobně Oddělení. Pokud bychom chtěli počítat s budoucím obohacením modelu, přidali bychom zřejmě události ud- KonecObluhy u Oddělení a události udvystoupil, udnastoupil, udpříjezd u Výtahu. V takhle zadané úloze však vystačíme s jedinou událostí.