• No results found

Simulator of Railway Interlocking

N/A
N/A
Protected

Academic year: 2021

Share "Simulator of Railway Interlocking"

Copied!
31
0
0

Loading.... (view fulltext now)

Full text

(1)

VYSOK ´

E U ˇ

CEN´I TECHNICK ´

E V BRN ˇ

E

BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMA ˇ

CN´ICH TECHNOLOGI´I

´

USTAV INTELIGENTN´ICH SYST ´

EM ˚

U

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS

SIMUL ´

ATOR ˇ

ZELEZNI ˇ

CN´IHO STAV ˇ

EDLA

BAKAL ´

A ˇ

RSK ´

A PR ´

ACE

BACHELOR’S THESIS

AUTOR PR ´

ACE

BED ˇ

RICH HOVORKA

AUTHOR

(2)

FAKULTA INFORMA ˇ

CN´ICH TECHNOLOGI´I

´

USTAV INTELIGENTN´ICH SYST ´

EM ˚

U

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS

SIMUL ´

ATOR ˇ

ZELEZNI ˇ

CN´IHO STAV ˇ

EDLA

SIMULATOR OF RAILWAY INTERLOCKING

BAKAL ´

A ˇ

RSK ´

A PR ´

ACE

BACHELOR’S THESIS

AUTOR PR ´

ACE

BED ˇ

RICH HOVORKA

AUTHOR

VEDOUC´I PR ´

ACE

Ing. DAVID MARTINEK

SUPERVISOR

(3)

Zad´

an´ı

1. Prostudujte funkce a souˇc´asti elektronick´eho ˇzelezniˇcn´ıho stavˇedla pouˇz´ıvan´eho pro ˇr´ızen´ı provozu v ˇzelezniˇcn´ıch stanic´ıch.

2. Prostudujte simulaˇcn´ı metody pouˇziteln´e pro realizaci simul´atoru ˇzelezniˇcn´ı s´ıtˇe v ˇ ze-lezniˇcn´ı stanici, zejm´ena diskr´etn´ı, spojitou a kombinovanou simulaci. Navrhnˇete vhodn´y simulaˇcn´ı pˇr´ıstup, ˇci kombinaci pˇr´ıstup˚u pro realizaci tohoto simul´atoru. Na-vrhnˇete vhodn´y form´at dat pro reprezentaci modelu ˇzelezniˇcn´ı s´ıtˇe.

3. Navrhnˇete a implementujte vybranou ˇc´ast simul´atoru a demonstrujte funkˇcnost na dostateˇcnˇe n´azorn´em modelu.

4. Diskutujte z´ıskan´e v´ysledky a dalˇs´ı moˇzn´e smˇery v´yvoje.

Kategorie: Modelov´an´ı a simulace

Implementaˇcn´ı jazyk: Java, nebo podle vlastn´ıho uv´aˇzen´ı

Operaˇcn´ı syst´em: Windows, Linux

Literatura: Podle pokyn˚u vedouc´ıho

Datum zad´an´ı: 1. listopadu 2006

(4)

Licenˇcn´ı smlouva je uloˇzena v archivu Fakulty informaˇcn´ıch technologi´ı Vysok´eho uˇcen´ı technick´eho v Brnˇe.

(5)

Abstrakt

Stavˇedlo je dispeˇcersk´e zaˇr´ızen´ı pro ˇr´ızen´ı dopravy. Dispeˇcer urˇcuje nastavov´an´ım v´yhybek a semafor˚u cestu vlak˚um. V t´eto pr´aci se zab´yv´am n´avrhem a v´ystavbou z´akladu simul´atoru takov´eho zaˇr´ızen´ı v jazyce Java. Nastudoval jsem funkce tohoto zaˇr´ızen´ı. Zab´yval jsem se strukturou cel´e aplikace a implementoval chov´an´ı z´akladn´ıch prvk˚u.

Kl´ıˇcov´

a slova

ˇ

zelezniˇcn´ı stavˇedlo, kombinovan´a simulace, XML, Java, OOP

Abstract

Railway interlocking is a dispatching facility for traffic control. The dispatcher controls train paths by setting switches and signals. In this thesis, I describe the design and implemen-tation of a simple simulator of the facility in the Java language. I have studied functions of this facility. I interested with structure of whole application. And I implemented behaviour of foundamental elements.

Keywords

railway interlocking, combined simulation, XML, Java, OOP

Citace

Bedˇrich Hovorka: Simul´ator ˇzelezniˇcn´ıho stavˇedla, bakal´aˇrsk´a pr´ace, Brno, FIT VUT v Brnˇe, 2007

(6)

Prohl´

aˇsen´ı

Prohlaˇsuji, ˇze jsem tuto bakal´aˇrskou pr´aci vypracoval samostatnˇe pod veden´ım Ing. Davida Martinka. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kter´ych jsem ˇcerpal.

. . . . Bedˇrich Hovorka

10. kvˇetna 2007

c

Bedˇrich Hovorka, 2007.

Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe in-formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇena autorsk´ym z´akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´avnˇen´ı autorem je nez´akonn´e, s v´yjimkou z´akonem definovan´ych pˇr´ıpad˚u.

(7)

Obsah

1 Uvod´ 2

1.1 Etapy a c´ıle . . . 2

2 Modelovan´y syst´em a existuj´ıc´ı implementace 4 2.1 Zelezniˇˇ cn´ı stavˇedlo . . . 4

2.2 Existuj´ıc´ı implementace . . . 4

3 Teorie 6 3.1 Numerick´e metody . . . 6

3.2 Modelov´an´ı a simulace . . . 7

3.2.1 Diskr´etn´ı simulace . . . 7

3.2.2 Spojit´a simulace . . . 8

3.2.3 Kombinovan´a simulace . . . 8

4 Pouˇzit´e jazyky a n´astroje 10 4.1 XML . . . 10 4.1.1 Analyz´atory XML . . . 10 4.2 Java . . . 11 4.3 JDisco . . . 12 4.3.1 R´ızen´ı simulaceˇ . . . 12 5 N´avrh a implementace 13 5.1 Rozdˇelen´ı do modul˚u – bal´ık˚u . . . 13

5.2 S´ıt’ a datov´y model . . . 15

5.2.1 Prvky s´ıtˇe . . . 16

5.2.2 Dynamick´a konfigurace a cesty v s´ıti . . . 17

5.2.3 Datov´y soubor . . . 17

5.3 Simulace . . . 17

5.3.1 Vstupnˇe-v´ystupn´ı body – InOut . . . 17

5.3.2 J´ızda vlaku . . . 18

5.4 Pˇr´ıklad – V´yhybna . . . 18

6 Z´avˇer 21 6.1 N´amˇety na rozˇs´ıˇren´ı . . . 21

(8)

´

Uvod

V t´eto bakal´aˇrsk´e pr´aci jsem se zab´yval problematikou dopravn´ı simulace. Moje pr´ace spoˇc´ıvala v nastudov´an´ı souˇc´ast´ı syst´emu, experimentov´an´ım s existuj´ıc´ımi implementacemi her ˇr´ızen´ı ˇzelezniˇcn´ı dopravy, nalezen´ım vhodn´e simulaˇcn´ı knihovny a jako hlavn´ı ˇcinnost´ı – n´avrhem a implementac´ı z´akladu simul´atoru. Nejprve bylo tˇreba navrhnout strukturu aplikace, vnitˇrn´ı reprezentac´ı modelu a form´at dat. Pot´e jsem mohl s vnitˇrn´ı reprezentac´ı implementovat grafick´e rozhran´ı umoˇzˇnuj´ıc´ı editaci. D´ale jsem se uˇz zab´yval pˇredevˇs´ım simulaˇcn´ım modelem.

V druh´e kapitole pˇredstav´ım modelovan´y syst´em. Jeho chov´an´ı je l´epe uk´azat na jiˇz existuj´ıc´ıch programech.

V tˇret´ı kapitole se zm´ın´ım o numerick´em ˇreˇsen´ı diferenci´aln´ıch rovnic. V dalˇs´ı sekci naraz´ıte na z´akladn´ı pojmy z modelov´an´ı a simulace. Letmo se zm´ın´ım i o tom co to je diskr´etn´ı, spojit´a a kombinovan´a simulace, u kombinovan´e trochu podrobnˇeji.

Ve ˇctvrt´e kapitole popisuji sp´ıˇse neˇz bˇeˇznˇe zn´am´e vlastnosti pouˇzit´ych n´astroj˚u, vlastn´ı postˇrehy a pˇr´ıklady z implementace. To plat´ı hlavnˇe o sekc´ıch o Javˇe a XML. V sekci o simulaˇcn´ı knihovnˇe jDisco struˇcnˇe vysvˇetl´ım, jak se pouˇz´ıv´a, aby nedoˇslo k nˇekter´ym nedorozumˇen´ım, co jsem musel d´ale v implementaci ˇreˇsit a co ne.

Do p´at´e kapitoly sem vybral, podle m´eho, d˚uleˇzit´e myˇslenky z n´avrhu a popisu imple-mentace. Do podrobnost´ı zach´az´ım v pˇr´ıpadˇe, ˇze mi to pˇripad´a nutn´e. Nejprve se zam´yˇsl´ım nad celkovou strukturou aplikace. Pot´e pop´ıˇsu organizaci prvk˚u v syst´emu. N´asledov´ano popisem jak je implementov´ana simulace. A nakonec pˇredstav´ım pˇr´ıklad demonstruj´ıc´ı, to co bylo naimplementov´ano.

V z´avˇereˇcn´e kapitole projdu nˇekter´a moˇzn´a rozˇs´ıˇren´ı, zejm´ena ty kter´e ´uzce navazuj´ı na souˇcasnou implementaci. Toto sekci n´asleduje jiˇz jen zhodnocen´ı cel´e pr´ace.

Nˇekter´e n´azvoslov´ı bylo pouˇzito z [1] a existuj´ıc´ıch implementac´ı. Tak´e n´azvy v obr´azk´ach a sch´ematech budou vˇetˇsinou anglicky, aby odpov´ıdaly zdrojov´ym k´od˚um. Pro pochopen´ı tohoto textu pˇredpokl´ad´am, ˇze ˇcten´aˇr je alespoˇn zbˇehlejˇs´ım studentem informatiky a rozum´ı pojm˚um z diskr´etn´ı a numerick´e matematiky, algoritm˚u a objektov´e orientace.

Pˇr´ıklad odkazu do zdrojov´ych soubor˚u:Example.

1.1

Etapy a c´ıle

Co bylo implementov´ano pˇred bakal´aˇrsk´ym projektem

Bˇehem Semestr´aln´ıho projektu vytvoˇril prototyp objektov´eho modelu s´ıtˇe, zejm´ena statick´e vlastnosti. Na z´akladˇe toho jsem navrhl XML form´at a implementoval tov´arnu pro naˇc´ıt´an´ı

(9)

a ukl´ad´an´ı. V r´amci projektu do Modelov´an´ı a simulace jsem vytvoˇril kombinovan´y model pohybu vlaku podle dan´e posloupnosti semafor˚u a hran (ne v s´ıti). Do pˇredmˇetu Tvorba uˇzivatelsk´ych rozhran´ı jsem odevzdal jednoduch´y grafick´y editor v´yˇse zm´ınˇen´eho modelu s´ıtˇe, kter´y zobrazuje s´ıt’ v zaˇzit´em sch´ematu obdobn´em tomu pouˇzit´em v elektronick´ych stavˇedlech. Vˇse jsem bˇehem bakal´aˇrsk´eho projektu doplnil do n´asleduj´ıc´ıch c´ıl˚u:

C´ıle bakal´aˇrsk´eho projektu

Vytvoˇrit j´adro pˇrenositeln´eho programu:

• na z´akladˇe nastudovan´ych podklad˚u navrhnout rozˇsiˇriteln´y syst´em tˇr´ıd, propojiteln´e komunikuj´ıc´ı moduly

• Dynamick´e vlastnosti a chov´an´ı z´akladn´ıch prvk˚u – semafor, v´yhybka, kolej • Pohyb a lokalizace vlak˚u v s´ıti

• Datov´a struktura pro manipulaci z cestou, zejm´ena stavˇen´ı cest (bez jejich ruˇsen´ı) • Vytvoˇrit pˇr´ıklad, kter´y demonstruje funkˇcnost v´yˇse zm´ınˇen´ych c´ıl˚u

(10)

Modelovan´

y syst´

em a existuj´ıc´ı

implementace

V t´eto kapitole budou struˇcnˇe pops´any funkce modelovan´eho syst´emu. D´ale uvedu nˇekter´e jiˇz existuj´ıc´ı aplikace. Budou zde zm´ınˇena i fakta, kter´a je tˇreba br´at v ´uvahu, i kdyˇz jejich implementace nebyla dokonˇcena.

2.1

Zelezniˇ

ˇ

cn´ı stavˇ

edlo

ˇ

Zelezniˇcn´ı stavˇedlo je zaˇr´ızen´ı, kter´e umoˇzˇnuje ˇr´ıdit dopravn´ı s´ıt’ nˇejak´eho uzlu ˇci trat’ov´eho ´

useku z jednoho m´ısta. Ovl´ad´a chov´an´ı nˇekolika prvk˚u. Napˇr´ıklad nastavuje sign´aly na semaforech a pˇrestavuje v´yhybky. Nˇekter´a dneˇsn´ı stavˇedla maj´ı poˇc´ıtaˇcov´e rozhran´ı a jsou ovl´ad´ana jedn´ım dispeˇcerem. Ten kaˇzd´emu vlaku vymez´ı urˇcitou cestu, tak ˇze zad´a poˇc´ateˇcn´ı a c´ılov´y semafor. Na stavˇedlu je pak, aby naˇslo nejvhodnˇejˇs´ı neobsazenou cestu. 1. Pokud ji nenajde z d˚uvodu obsazen´ı vˇsech moˇznost´ı uloˇz´ı poˇzadavek (dvojici – poˇc´atek a c´ıl) do fronty. Pˇri uvolˇnov´an´ı kolej´ı testuje moˇznost sestavit prvn´ı prvek ve frontˇe. Frontu je moˇzn´e editovat.

2. V opaˇcn´em pˇr´ıpadˇe nastav´ı prvky v cestˇe

Toto souvis´ı i z bezpeˇcnost´ı. Syst´em nesm´ı na kaˇzd´e koleji dovolit v´ıce neˇz jednu vlakovou cestu1. Jak m˚uˇze takov´y simul´ator vypadat prozrad´ı n´asleduj´ıc´ı sekce.

2.2

Existuj´ıc´ı implementace

Pro lepˇs´ı pˇredstavu jak takov´a aplikace funguje zde popisuji nˇekter´e jiˇz existuj´ıc´ı simul´atory ˇr´ızen´ı ˇzelezniˇcn´ı dopravy. Sice se vesmˇes jedn´a o hry, ale svoj´ı koncepc´ı se bl´ıˇz´ı k trenaˇz´eru re´aln´eho syst´emu. Zachov´avaj´ı si vˇsak jednoduchost ovl´ad´an´ı. Pouˇzil jsem je tak´e jako prostˇredek pro anal´yzu syst´emu. Experimentov´an´ım s tˇemito programy jako metodou zpˇ et-n´eho inˇzen´yrstv´ı2 lze nastudovat strukturu a chov´an´ı vˇetˇsiny syst´emu. Kaˇzd´y m´a sv´a n´arodn´ı specifika (detaily v pravidlech ˇr´ızen´ı), vˇsak mnoho princip˚u je spoleˇcn´ych, kter´e popisuji u prvn´ıho. U dalˇs´ıch zmiˇnuji jiˇz jen rozd´ıly.

1Existuj´ı i tzv. posunov´e, ale ty zat´ım neuvaˇzuji 2

(11)

Staniˇc´aˇr

Tento hern´ı simul´ator m´a modelovat ˇcesk´e JOP. Uˇzivatel si zvol´ı ˇcas a stanici. Stanice a vlaky je uloˇzena v 1 velk´em XML souboru. Pot´e se mu zobraz´ı kolejiˇstˇe a seznam vlak˚u v syst´emu. Nyn´ı m˚uˇze ovl´adat jednotliv´e prvky a sledovat chov´an´ı syst´emu. Do kolejiˇstˇe urˇcen´ymi m´ısty vj´ıˇzdˇej´ı vlaky (podle j´ızdn´ıho ˇr´adu, gener´ator s exponenci´aln´ım rozloˇzen´ım doby mezi generov´an´ımi). ´Ukolem dov´est vlaky na m´ısto podle j´ızdn´ıho ˇr´adu a udrˇzet plynulost dopravy. Kaˇzd´a stanice ˇci vˇetˇs´ı syst´em m´a sv˚uj z´asobn´ık (tak je zde naz´yvan´a FIFO fronta) povel˚u, kam se uloˇz´ı kdyˇz zrovna nemohou b´yt vykon´any. U kaˇzd´eho vlaku je moˇznost prohl´ıˇzet j´ızdn´ı ˇr´ad (ˇcas, zast´avka, ˇc´ıslo koleje). Stanice je moˇzn´e vytv´aˇret vlastn´ı v oddˇelen´em editoru. D´ale je tu i editor j´ızdn´ıch ˇr´ad˚u. V souˇcasn´e verzi funguje tato hra pod .NET 2.0 ve Windows. Dˇr´ıvˇejˇs´ı verze byly spustiteln´e v dotGNU.

SimSig

Tento britsk´y simul´ator podporuje sice v´ıce stanic, ale kaˇzd´a m´a sv˚uj vlastn´ı instal´ator. Funkˇcnˇe je obs´ahlejˇs´ı. Um´ı simulovat v´ypadek elektˇriny, n´ahodn´e v´yluky v r˚uzn´ych ˇc´astech s´ıtˇe. a dalˇs´ı poruchy vlak˚u a s´ıt’ov´ych prvk˚u. Je tu tak´e urˇcit´a m´ıra automatick´eho ˇr´ızen´ı i v rozvˇetven´em kolejiˇsti (proveden´ı j´ızdn´ıho ˇr´adu). Sice urˇcen´a pro Windows, ale na rozd´ıl od pˇredch´azej´ıc´ıho sem ji spustil i ve wine3.

Gordikon, Multikon, Brno S´ıt’ je nastavena napevno. Oproti ostatn´ım jsou na zaˇc´atku simulace tak´e vlaky um´ıstˇeny na kolej´ıch v s´ıti, nejenom, ˇze napˇred mus´ı vstoupit do syst´emu zvl´aˇstn´ım prvkem v s´ıti, coˇz je re´alnˇejˇs´ı.

3

(12)

Teorie

V t´eto kapitole popisuji nˇekter´e teoretick´e z´aklady. Pojmy jakomnoˇzina ˇci relace pˇ redpo-kl´ad´am, ˇze ˇcten´aˇr zn´a.

3.1

Numerick´

e metody

K v´ypoˇctu diferenci´aln´ıch rovnic na ˇc´ıslicov´ych poˇc´ıtaˇc´ıch b´yvaj´ı nejvhodnˇejˇs´ı numerick´e metody, nebot’ jsou zde operace prov´adˇeny diskr´etnˇe. Spojit´e v´ypoˇcty je nutn´e na nˇe pˇrev´est. A pr´avˇe t´ımto pˇrevodn´ım prostˇredkem jsou numerick´e metody. V z´avislosti na pouˇzit´ı je nezbytn´e prozkoumat jejich vlastnosti jako je pˇresnost a stabilita ˇreˇsen´ı. Touto problema-tikou se podrobnˇeji zab´yv´a [10]. Zmenˇsov´an´ım kroku se zvyˇsuje pˇresnost v´ypoˇctu (r˚uznˇe u r˚uzn´ych metod), vˇsak pˇri velmi mal´ych kroc´ıch uˇz hraje roli nepˇresnost element´arn´ıch operac´ı ˇc´ıslicov´e aritmetiky.

Jako pˇr´ıklad zde uv´ad´ım jednokrokovou metodu ˇreˇsen´ı ODR z poˇc´ateˇcn´ımi podm´ınkami – Runge-Kutta-Fehlberg (rovnice 3.1 - 3.7), protoˇze je d´ale v t´eto pr´aci pouˇzita. Je p´at´eho ˇr´adu a nav´ıc m˚uˇzeme mezihodnoty kn zkombinovat na aproximaci ˇctvrt´eho ˇr´adu (rovnice

3.8). Z t´e pak m˚uˇzeme vypoˇc´ıtat odhad chyby yn+1−y∗n+1 . Vyuˇzit´ı tˇechto vlastnost´ı viz sekce 3.2. Na obr´azku 3.1 vid´ıme jej´ı pouˇzit´ı, kdyˇz oˇcek´av´ame v´ysledek bl´ızk´y polynomu druh´eho stupnˇe.

k1 = f(xn, yn), (3.1) k2 = f(xn+ 1 4h, yn+ 1 4hk1), (3.2) k3 = f(xn+ 3 8h, yn+ 1 32h(3k1+ 9k2)), (3.3) k4 = f(xn+ 12 13h, yn+ 1 2 197h(1 932k1−7 200k2+ 7 296k3)), (3.4) k5 = f(xn+h, yn+h( 439 216k1−8k2+ 3 680 513 k3− 845 4 104k4)), (3.5) k6 = f(xn+ 1 2h, yn+h(− 8 27k1+ 2k2− 3 544 2 565k3+ 1 859 4 104k4− 11 40k5)) (3.6) yn+1 = yn+h( 16 135k1+ 6 656 12 852k3+ 28 561 56 430k4− 9 50k5+ 2 55k6) (3.7) yn+1 = yn+h( 25 216k1+ 1 408 2 565k3+ 2 197 4 104k4− 1 5k5) (3.8)

(13)

-20 -15 -10 -5 0 5 -1 0 1 2 3 4 5 6 analytic result aprox inf(0) substepk2

Obr´azek 3.1: Demonstrace kroku metody

3.2

Modelov´

an´ı a simulace

V t´eto sekci uv´ad´ım z´akladn´ı pojmy z modelov´an´ı a simulace. Podrobnosti v [11,6]

Syst´em je cokoliv u ˇceho m˚uˇzeme popsat jeho chov´an´ı. M˚uˇze b´yt re´aln´y i imagin´arn´ı. Napˇr´ıklad ˇzelezniˇcn´ı s´ıt’ s vlaky a ˇr´ıd´ıc´ımi prvky.

Prvek syst´emu je element´arn´ı, d´ale nedˇeliteln´a, ˇc´ast syst´emu. Vz´ajemn´a interakce prvk˚u urˇcuje chov´an´ı cel´eho syst´emu. Napˇr´ıklad kolejov´y odd´ıl. Zde z´aleˇz´ı na m´ıˇre abstrakce.

Model je syst´em, kter´y napodobuje vlastnosti a chov´an´ı p˚uvodn´ıho syst´emu.

Modelov´an´ı je postupn´e vytv´aˇren´ı model˚u. Z pozorov´an´ı a studov´an´ı syst´emu vznikne

konceptu´aln´ı model, coˇz je soubor neurˇcit´ych informac´ı (n´astin). Z nˇej vytv´aˇr´ıme

abstraktn´ı model – form´aln´ı popis syst´emu. A z toho pak izomorfn´ım zobrazen´ım naprogramujeme simulaˇcn´ı model.

Simulace Z´ısk´av´an´ı nov´ych znalost´ı o syst´emu experimentov´an´ım se simulaˇcn´ım modelem.

Re´aln´y ˇcas skuteˇcn´y ˇcas, ve kter´em bˇeˇz´ı model

Modelov´y ˇcas ˇcasov´a osa modelu

Strojov´y ˇcas ˇcas, kter´y byl potˇrebn´y k v´ypoˇctu (tj. jak dlouho byl procesor pˇrepnut do kontextu dan´eho procesu)

3.2.1 Diskr´etn´ı simulace

Stav vˇsech prvk˚u je definov´an pouze v diskr´etn´ıch ˇcasov´ych okamˇzic´ıch. Bˇehem tohoto okamˇziku je provedena atomick´a operace zvan´a ud´alost, kter´a tento stav m˚uˇze zmˇenit.

(14)

model_time = event.time event.behaviour()

3.2.2 Spojit´a simulace

Stav kaˇzd´eho prvku je definov´an v kaˇzd´em okamˇziku vymezen´eho ˇcasov´eho intervalu. Abs-traktn´ım modelem jsou algebraick´e, diferenˇcn´ı ˇci diferenci´aln´ı rovnice a jejich soustavy. U jednokrokov´ych metod lze na z´akladˇe odhadu chyby mˇenit krok a t´ım urychlit v´ypoˇcet. Metoda uveden´a v sekci 3.1m´a takov´e vlastnosti.

#zneplatnˇen´ı pˇredch´azej´ıc´ıch zmˇen (derivace=0)

for variable in all_variables : variable.state_fix() #v´ypoˇcet zmˇen stav˚u z pˇredch´azej´ıc´ıch

for continous in all_cont_processes : continous.derivatives() integrate() #krok numerick´e metody s posunem modelov´eho ˇcasu

3.2.3 Kombinovan´a simulace

Syst´em obsahuje spojit´e i diskr´etn´ı prvky. ˇR´ızen´ı simulace mus´ı pˇri v´ypoˇctu spojit´ych stav˚u mˇenit krok, aby dokroˇcila k napl´anovan´e diskr´etn´ı ud´alosti. D´ale mus´ı detekovat stavov´e podm´ınky a napl´anovat proveden´ı ud´alosti k podm´ınce pˇriˇrazen´e. Z numerick´ych metod jsou proto vhodn´e jednokrokov´e, protoˇze u nich z´aleˇz´ı jen na pˇredchoz´ım v´ysledku.

Petriho s´ıt’ pˇri vytv´aˇren´ı kombinovan´eho modelu

Bˇehem n´avrhu aplikace jsem pouˇzil Petriho s´ıt´ı k pˇrehledn´emu vyj´adˇren´ı proces˚u. Takto jsem si l´epe pˇredstavil pr˚ubˇeh simulace a jak ho m´am vyj´adˇrit v programovac´ım jazyce. Vesmˇes se jednalo o C/E s´ıtˇe, tj. m´ısto, zde zvan´e podm´ınka, obsahuje maxim´alnˇe jednu znaˇcku a pˇrechod, zde naz´yvan´y ud´alost, je provediteln´y v pˇr´ıpadˇe, ˇze vˇsechny podm´ınky pˇred n´ım plat´ı a podm´ınky za n´ım neplat´ı. V z´avislosti na lepˇs´ım vyj´adˇren´ı jsem pˇrechody prohl´asil bud’ za ud´alosti reaguj´ıc´ı na stavovou podm´ınku, kter´a ruˇs´ı platnost znaˇcky pˇred n´ı, nebo za spojit´y proces a m´ısto za n´ım je stavov´a podm´ınka, na kterou ˇcek´a n´asleduj´ıc´ı ud´alost.

Mimo jin´e jsem je tak´e mohl ovˇeˇrit pomoc´ı n´astroje CESim (viz [8]), pokud se s´ıt’ dala vyj´adˇrit, aniˇz by to bylo na ´ukor pˇrehlednosti. Napˇr´ıklad s´ıt’ na obr´azku 6.1 je t´ımto n´astrojem ovˇeˇren´a.

V s´ıti na obr´azku 3.2 se nav´ıc nach´azej´ı extern´ı podm´ınky a priorita. Proces se vrac´ı do stejn´eho stavu – tj. je pˇred n´avˇestidlem , kdyˇz vlak dojede k dalˇs´ımu n´avˇestidlu nebo zmˇenou sign´alu skonˇcilo ˇcek´an´ı pˇred n´ım. Podm´ınky

”red“ a”allowing signal“ pˇredstavuj´ı stav tohoto n´avˇestidla a samozˇrejmˇe vˇzdy1 plat´ı pr´avˇe jedna z nich. Podm´ınkou

”v ≤ 0, next red“ a prioritou oˇsetˇruji moˇznost zastaven´ı na konci n´asleduj´ıc´ıho bloku, kter´emu pˇrech´azelo rozjet´ı na jeho zaˇc´atku.

1

(15)
(16)

Pouˇ

zit´

e jazyky a n´

astroje

Tato kapitola popisuje jazyky resp. n´astroje, kter´e jsem pouˇzil ve sv´e pr´aci. S Javou a XML sem se sezn´amil jiˇz dˇr´ıve, proto nechci zach´azet do podrobnost´ı. Uv´ad´ım zde hlavnˇe rysy jazyk˚u resp. n´astroj˚u t´ykaj´ıc´ı se t´eto pr´ace jako zd˚uvodnˇen´ı, proˇc sem tyto jazyky ˇci n´astroje pouˇzil a pˇr´ıpadnˇe pro co byly v m´e v m´e pr´aci nevhodn´e.

4.1

XML

XML je standardizovan´y znaˇckovac´ı jazyk pro ukl´ad´an´ı r˚uzn´ych typ˚u dat. Rozˇsiˇruje text o znaˇcky, zvan´e tagy, ty jsou uzavˇreny do < >, maj´ı n´azev a mohou m´ıt nˇekolik atribut˚u. Tagy jsou poˇc´ateˇcn´ı (zaˇc´ınaj´ı<), koncov´e (zaˇc´ınaj´ı< /) nebo “obojetn´e” (poˇc´ateˇcn´ı s /

pˇred >). Vyuˇz´ıv´a v r˚uzn´ych oblastech, jako napˇr´ıklad webov´e str´anky, vektorov´a grafika, katastr nemovitost´ı, serializace objekt˚u (v JavaBeans), a samozˇrejmˇe tak´e pro ukl´ad´an´ı model˚u v M&S (napˇr. Ptolemy II.).

XML definuje obecnou syntaxi, ve kter´e je moˇzn´e vytv´aˇret vlastn´ı znaˇcky. Vnitˇrn´ı re-prezentaci pˇredstavuje n-´arn´ı strom r˚uzn´ych typ˚u uzl˚u jako element, atribut, text atd. Data tedy mohou b´yt rozm´ıstˇena hierarchicky podle logick´ych vazeb. Snadno se rozˇsiˇruje a podporov´an mnoho jazyky, coˇz umoˇzˇnuje vytv´aˇren´ı datov´ych form´at˚u postupnˇe proto-typov´an´ım. D´ıky jmenn´ym prostor˚um lze do dokumentu jednoho typu vloˇzit ˇc´ast jin´eho (tˇreba jiˇz existuj´ıc´ıho). Napˇr´ıklad do popisu dopravn´ı s´ıtˇe, jeˇz pˇredstavuje hlavnˇe topologii, lze pˇridat ke kaˇzd´e cestˇe jej´ı geometrick´e vlastnosti pomoc´ı extern´ıho vektorov´eho grafick´eho form´atu. Pro strojovou v´ymˇenu dat je to v´yborn´y jazyk, vˇsak pro ruˇcn´ı z´apis, ˇci dokonce programov´an´ı (napˇr. XSLT) se mi zd´a nevhodn´y. ˇCasto je vhodn´e jej pˇred odesl´an´ım pˇres s´ıt’ zkomprimovat, nebot’ se zde projevuje nev´yhoda tohoto typu znaˇckov´an´ı – opakovan´a informace nav´ıc.

4.1.1 Analyz´atory XML

Validace dokument˚u Lexik´aln´ı a syntaktick´a pravidla jsou stejn´a pro vˇsechna XML. Tv˚urce XML aplikace urˇcuje aˇz s´emantiku. ˇC´asteˇcnˇe mu mohou b´yt n´apomocny n´asleduj´ıc´ı definiˇcn´ı n´astroje. Pro urˇcen´ı jak m´a vypadat tzv. spr´avnˇe formulovan´y dokument v XML slouˇz´ı Definice typu dokumentu (DTD), kde se urˇc´ı metadata – co m˚uˇze dokument obsa-hovat za tagy, jak´e maj´ı atributy a co mohou obsahovat, ale jen na ´urovni prvk˚u XML, chyb´ı napˇr´ıklad typov´a kontrola atribut˚u ap. Tud´ıˇz DTD nestaˇcilo a muselo vzniknout XML Schema [2], coˇz je XML aplikace popisuj´ıc´ı nav´ıc tak´e objektov´e vazby mezi znaˇckami.

(17)

Pro zvolen´ı XML jako datov´eho form´atu hovoˇr´ı tak´e to, ˇze jiˇz existuj´ı analyz´atory pro r˚uzn´e jazyky Postaraj´ı se o lexik´aln´ı a syntaktickou anal´yzu podle obecn´e XML gramatiky a pˇr´ıpadnˇe provedou validaci. Existuj´ı dva hlavn´ı – SAX a DOM. SAX proch´az´ı dokumen-tem a vol´a metody zaregistrovan´ehoHandleru, kdyˇz naraz´ı na zaˇc´atek ˇci konec elementu. Bˇehem tohoto pr˚uchodu m˚uˇze b´yt provedena i validace. Pˇri anal´yze DOM se pouˇzije SAX k pˇrevodu textu na standardizovanou vnitˇrn´ı podobu dokumentu (strom). Proto se pouˇz´ıv´a sp´ıˇse v programech, kter´e potˇrebuj´ı n´ahodn´y pˇr´ıstup k r˚uzn´ym ´urovn´ım dokumentu, jako jsou editory a prohl´ıˇzeˇce. Avˇsak m´a-li aplikace vlastn´ı lepˇs´ı vnitˇrn´ı reprezentaci dat ˇci je tˇreba prov´adˇet dlouh´e sekvenˇcn´ı transformace, je vhodnˇejˇs´ı SAX. V´ıce o XML v [5]

4.2

Java

Java je obecn´y objektovˇe-orientovan´y programovac´ı jazyk. Jeho hlavn´ı v´yhodou je, ˇze se spouˇst´ı v prostˇred´ı virtu´aln´ıho stroje, jehoˇz implementace je dostupn´a pro mnoho beˇzn´ych operaˇcn´ıch syst´em˚u. Takˇze umoˇzˇnuje vyv´aˇret pˇrenositeln´e spustiteln´e soubory. Vybral jsem jej, ˇze s t´ımto jazykem m´am nejv´ıc zkuˇsenost´ı. K implementaci jsem nakonec zvolil verzi 6 Standard Edition. Existuje i pˇrekladaˇc v GCC je vˇsak s nejnovˇejˇs´ı ofici´aln´ı verz´ı nekompa-tibiln´ı. Nav´ıc od verze 7 by mˇela b´yt otevˇren´a jiˇz i ofici´aln´ı verze (viz projekt OpenJava). Existuje mnoho publikac´ı – napˇr. [9,12]. Java od sv´eho vzniku proˇsla ˇradou inovac´ı, leccos bylo doplnˇeno a nˇekter´e knihovn´ı tˇr´ıdy jsou zavrˇzen´e. Proto nˇekter´e informace ve starˇs´ı literatuˇre jsou zastaral´e. Nejspolehlivˇejˇs´ım zdrojem je tedy [3]. V Javˇe jsem zvykl´y ps´at k´od tak, ˇze n´azvy promˇenn´ych a metod samy o sobˇe komentuj´ı.

Kontejnery (Kolekce) Jsou obdobou STL z C++ a slouˇz´ı k ukl´ad´an´ı pˇredem nedefi-novan´eho mnoˇzstv´ı dat. V Javˇe jsou to objekty, tedy sami mohou b´yt prvky jin´e kolekce. Napˇr´ıkladMapslouˇz´ı k vytv´aˇren´ı zobrazen´ı objektu na objekt, ˇc´ımˇz sniˇzuje vytv´aˇren´ı refe-renc´ı pˇr´ımo v objektech a tedy i z´avislost k´odu jedn´e tˇr´ıdy na jinou. Problematika kontejner˚u je v´ıce rozvedena v [7], avˇsak pˇri pouˇzit´ı Javy 5 je tˇreba br´at zˇretel na to, ˇze kontejnery jsou parametrizovan´e. Skl´ad´an´ım kolekc´ı jsem vytvoˇril vlastn´ı datov´e struktury. Pˇredevˇs´ım jsem doplnil nebo zcela definoval rozhran´ı a implementoval neoptimalizovan´e prototypy. Z nich se mohou vyvinout ´uloˇziˇstˇe pˇr´ımo na m´ıru, vˇsak si st´ale mohou zachovat urˇcitou m´ıru obec-nosti. Napˇr´ıkladArray2DMapv rychlosti je srovnateln´a sTreeMap, ale nejˇcastˇeji volanou je pr´avˇe vybr´an´ı poloˇzky a prov´ad´ı se za kritick´ych v´ypoˇct˚u. Zde ˇslo hlavnˇe o to minimalizovat vytv´aˇren´ı kl´ıˇcov´ych objekt˚u dvojic´ı cel´ych ˇc´ısel a pˇritom zachovat kompatibilitu zMap.

V´yhody a nev´yhody Svou syntax´ı v´ıce inklinuje k obecn´ym jazyk˚um (C, C++), pˇresto mnoˇzstv´ım standardn´ıch knihoven doh´an´ı mnoh´y skriptovac´ı jazyk. Pˇr´ısn´a statick´a ty-pov´a kontrola m˚uˇze na prvn´ı pohled zdrˇzovat v´yvoj, ale pˇri spr´avn´em n´avrhu a pouˇzit´ı vhodn´ych editor˚u naopak zrychluje odladˇen´ı, protoˇze se m˚uˇzu soustˇredit hlavnˇe na logick´e chyby v k´odu. Co vˇsak narozd´ıl od skriptovac´ıch jazyk˚u postr´ad´a je podpora funkcion´aln´ıho programov´an´ı. Pro modelov´an´ı komplexn´ıch syst´em˚u se strukturami s rekurzivn´ı agregac´ı (napˇr. cesta, kter´a je podtˇr´ıdou dr´ahy, rozsekan´a na ˇc´asti, kter´e jsou tak´e podtˇr´ıdami dr´ahy) je pro urˇcen´ı zpr´avy pos´ılan´e vˇsem ˇc´astem z cesty bych radˇeji implementoval pomoc´ı de-legace a referenc´ı na metody. Zde totiˇz m˚uˇze vzniknout ne´umˇern´e mnoˇzstv´ı podobn´eho (rozkop´ırovan´eho k´odu), coˇz jsem ˇc´asteˇcnˇe vyˇreˇsil pomoc´ı reflexe, ale toto ˇreˇsen´ı je nee-fektivn´ı, protoˇze se mus´ı nal´ezt metoda podle ˇretˇezce se jm´enem a ty ˇretˇezce

”evidovat“ nav´ıc.

(18)

bych mohl o kombinovanou simulaci rozˇs´ıˇrit. Ale proˇc, kdyˇz existuje jiˇz hotov´a, celkem snadno pouˇziteln´a knihovna. Nav´ıc se ob´av´am, ˇze by tato implementace sama o sobˇe vy-dala minim´alnˇe na jeden samostatn´y projekt. Dalˇs´ı moˇznost´ı je spojen´ı pˇres nativn´ı metody s knihovnou v jin´em jazyce (napˇr. SIMLIB). To je tak´e ˇcasovˇe n´aroˇcn´e.

JDisco – [6] je bal´ık javov´ych tˇr´ıd pro popis a simulaci kombinovan´ych model˚u. Byla vyvinuta na Roskilde University v D´ansku. Existuj´ı zde dva typy proces˚u: diskr´etn´ı a

spojit´y (jak bylo ˇreˇceno v 3.2). Mezi napl´anovan´ymi diskr´etn´ımi procesy jsou neaktivn´ı f´aze,ve kter´ych mohou b´yt aktivn´ıspojit´e. Pro popis spojit´ych promˇenn´ych slouˇz´ı tˇr´ıda

jDisco.Variable. Ta m´a dva hlavn´ı atributy: okamˇzitou hodnotu – state a okamˇzitou derivaci – rate. Spojit´e procesy vytvoˇr´ım zdˇedˇen´ım od jDisco.Continuous a povinnou implementac´ı metodyderivatives, ve kter´e se pop´ıˇs´ı vztahy mezi promˇenn´ymi. Obˇe tyto tˇr´ıdy maj´ı metody start a stop, jimiˇz m˚uˇzu urˇcit, kdy m´a bˇeˇzet spojit´y v´ypoˇcet jejich zavol´an´ım v popisu ud´alosti. Jinak ˇreˇceno lze takto definovat intervaly spojitosti proces˚u ˇci promˇenn´ych. Zdˇedˇen´ım odjDisco.Processa implementov´an´ım metody actions vznikne diskr´etn´ı proces. Implementac´ı rozhran´ıjDisco.Condition vytvoˇr´ım stavovou podm´ınku na kterou bude proces ˇcekat ve volan´ı metodywaitUntil. D´ale bal´ık obsahuje dalˇs´ı tˇr´ıdy pro zjednoduˇsen´ı popisu modelu, tak´e nˇekolik numerick´ych metod (r˚uzn´e Monitory). Nebudu zde dˇelat jejich v´yˇcet. Dokumentaci t´eto knihovny sem pˇridal2 k programov´e dokumentaci sv´e pr´ace. V´ıce tedy tam.

4.3.1 R´ızen´ı simulaceˇ

Simulace je ˇr´ızena na pozad´ı zvolen´ym Monitorem, kter´y je zodpovˇedn´y za to, ˇze se: 1. stav modelu mˇen´ı spojitˇe mezi ud´alostmi

2. diskr´etn´ı ud´alosti provedou ve spr´avn´y ˇcas 3. provede sbˇer informac´ı o chov´an´ı modelu

Spojit´e procesy pracuj´ı paralelnˇe a jsou synchronizov´any s diskr´etn´ımi, kter´e jsou pomoc´ı kalend´aˇre prov´adˇeny kvaziparalelnˇe. V jednom okamˇziku simulace bˇeˇz´ı tedy bud’ jeden diskr´etn´ı proces nebo Monitor ˇr´ıd´ı v´ypoˇcet nˇekolika spojit´ych. Proces je javov´e vl´akno vzd´avaj´ıc´ı se procesoru tˇesnˇe pˇred zavol´an´ım Object.waitna sebe, zavol´a Object.notify

procesu n´asleduj´ıc´ım v kalend´aˇri.

1

SimPack, JDEVS, pak nˇekolik stejnojmenn´ych JSim˚u a JavaSim˚u

2

(19)

Kapitola 5

avrh a implementace

Tato kapitola je zamˇeˇrena na struˇcn´y popis implementovan´ych souˇc´ast´ı. Podrobnosti obsa-huje programov´a dokumentace a zdrojov´e soubory. Nejprve je pops´ana celkov´a struktura zdrojov´ych k´od˚u a pot´e rozvedeny jednotliv´e souˇc´asti, pˇredevˇs´ım ty nejd˚uleˇzitˇejˇs´ı.

5.1

Rozdˇ

elen´ı do modul˚

u – bal´ık˚

u

´

Uplnˇe nejprve je tˇreba si uvˇedomit a m´ıt na pamˇeti celkovou strukturu aplikace, i kdyˇz z n´ı zat´ım budou implementov´any nˇekter´e ˇc´asti. Mohlo by se st´at, ˇze nˇeco naimplementuji a pak to budu pracnˇe pˇredˇel´avat1, protoˇze to nep˚ujde spojit. Na obr´azku 5.1jsou ve vyˇsˇs´ı abstrakci zn´azornˇeny z´akladn´ı funkˇcn´ı moduly aplikace a komunikaci mezi nimy, tak jak jsem pˇredpokl´adal na zaˇc´atku n´avrhu. Program m´a pracovat ve dvou m´odech: editace a simulace. Zde jsem se rozhodl, ˇze bude lepˇs´ı vytvoˇrit si ob´alku pro pˇr´ıstup k datov´emu mo-delu. M´ody maj´ı spoleˇcn´e operace, ale tak´e ty, kter´e jsou moˇzn´e jen v tom urˇcit´em m´odu. Toto tedy zapouzdˇruje rozhran´ı2Contexta jeho podrozhran´ı. Jeho zat´ım jedin´a

implemen-tace DefaultContextna prvn´ı pohled vypad´a jako jako vˇsevˇedouc´ı tˇr´ıda ˇci jako odkladna neum´ıstiteln´ych funkˇcnost´ı. Faktem ale je, ˇze jsou zde vˇetˇsinou soustˇredˇeny metody, pro-pojuj´ıc´ı r˚uzn´e ˇc´asti programu. Pro z´aklad projektu vˇsak nepotˇrebuji m´ıt zat´ım dvˇe r˚uzn´e implementace, postaˇc´ı db´at na oddˇelov´an´ı pomoc´ı rozhran´ı. Ale umoˇzˇnuje to, ˇze simulaˇcn´ı kontext nebude jen v pamˇeti, ale m˚uˇze b´yt sd´ılen mezi aplikacemi napˇr´ıklad po s´ıti nebo v datab´azi.

Mezi moduly (bal´ıky) vznikaj´ı z´avislosti, tj. k´od jednoho bal´ıku se odkazuje na jin´y. Zvl´aˇst’ nepˇr´ıjemn´e jsou cyklick´e, kter´e nejsou znakem dobr´eho n´avrhu, pokud vznikaj´ı neˇr´ızenˇe ve velk´em mnoˇzstv´ı. Je-li snaha vytv´aˇret moduly co nejv´ıc nez´avisl´e, bude k´od znovupouˇzitelnˇejˇs´ı. Na obr´azku5.2jsou zn´azornˇeny stanoven´e z´avislosti modul˚u v souˇcasn´e implementaci. Pˇredpokl´ad´am, ˇze ˇcten´aˇri z toho vyplynou i tranzitivn´ı. T´eto z´asady jsem drˇzel aˇz na nˇejak´e v´yjimky, zanˇeˇz v budoucnu pravdˇepodobnˇe zaplat´ım. Zpˇetn´a z´avislost dat na kontextu je ale ˇreˇsena pˇres rozhran´ı. Nav´ıc tˇreba tˇr´ıda AbstractPathje sp´ıˇse z´akladem pro bal´ık ˇr´ızen´ı.

Vˇsechny bal´ıky z obr´azku 5.2 jsou tak´e z´avisl´e na bal´ıku util, ten uˇz je z´avisl´y jen na standardn´ıch knihovn´ach. Zejm´ena na kolekc´ıch, kter´e rozˇsiˇruje o dalˇs´ı potˇrebn´e datov´e

1ehem n´avrhu nelze m´ıt na mysli vˇsechny detaily, obzvl´st’ tam kde se mˇen´ı poˇzadavky – tak se sem

tam provede menˇs´ı pˇredˇel´avka

(20)

editing

inner model

structure changes

simulation

state changes

control

low level commands

commands

state

Obr´azek 5.1: Z´akladn´ı struktura aplikace a tok dat

gui

xml

sim

context

objects

(21)

struktury, jako napˇr´ıklad neorientovan´y graf. O tˇechto struktur´ach v´ıce na stranˇe11. V n´ a-sleduj´ıc´ıch podkapitol´ach pop´ıˇsi dalˇs´ı bal´ıky jednotlivˇe.

5.2

S´ıt’ a datov´

y model

V t´eto sekci je bl´ıˇze pops´ana vnitˇrn´ı reprezentace s´ıtˇe. [13] ˇC´asteˇcnˇe jsem se inspiroval tak´e v [4].

Z pohledu dispeˇcera je to neorientovan´y graf G = (U, H). Ke kaˇzd´e dvojici objekt˚u (uzel1, uzel2) kde uzel1 6= uzel2 je pˇriˇrazen maxim´alnˇe jeden objekt hrany. Tento graf (pˇredevˇs´ım jeho uzly) je um´ıstˇen ve dvourozmˇern´em prostoru s celoˇc´ıseln´ymi indexy. Tento prostor je jak´ysi pseudorastr – matice objekt˚u. Hrana je rozdˇelena na ˇc´asti a ty vyplˇnuj´ı voln´e buˇnky na pˇr´ımce3 mezi nimy. V kaˇzd´e buˇnce se samozˇrejmˇe m˚ze nach´azet nejv´se

jeden objekt. Uzly jsou na hrany propojeny pomoc´ı urˇcen´ı okol´ı buˇnky (pˇri editaci je nalezena), kter´e zapouzdˇruje v´yˇctov´y typ Cell.Segment. Kaˇzd´a buˇnka m´a mnoˇzinu seg-ment˚u4 , a pouze do tohoto okol´ı lze ke kaˇzd´e dvojici (segment, uzel) lze pˇripojit

ma-xim´alnˇe jednu hranu. Z pohledu vlaku se blok, pˇredstavovan´y hranou, m˚uˇze skl´adat z v´ıce odd´ıl˚u, mezi nimiˇz jsou dispeˇcerem neovlivniteln´a (automatick´a) n´avˇestidla. D´ale existuje tzv. TrackFacility – je to nejmenˇs´ı i v´ıce-odd´ılov´a jednotka, ve kter´e se m˚uˇze nach´azet maxim´alnˇe jeden vlak. Na obr´azku 5.3 jsou zn´azornˇeny stavy koleje a co m˚uˇze vyvolat

reserved

occupied

free

train

train

command

command

Obr´azek 5.3: ˇZivotn´ı cyklusTrackFacility

jejich pˇrechod. Tyto stavy jsou diskr´etn´ı a vyj´adˇril jsem je pomoc´ı v´yˇctov´eho typu. Mˇelo by b´yt jasn´e, ˇze vlak m˚uˇze vjet pouze na rezervovanou kolej, tak´e ˇze rezervovat nelze pokud jiˇz je rezervovan´a ˇci obsazen´a. Rezervuje ji pˇr´ıkaz dispeˇcera a obsazuje resp. uvolˇnuje vlak.

3

Bresenham˚uv algoritmus

4

(22)

jsou n´asleduj´ıc´ı uzly orientovan´e.

V´yhybka je nastavena bud’ na hlavn´ı smˇer nebo do odboˇcky

Hlavn´ı n´avˇest mˇen´ıc´ı se sign´al

Vstupnˇe-v´ystupn´ı bod pˇredstavuje extern´ı kolejov´y syst´em. Nebo m˚uˇzou b´yt jako rozˇs´ıˇren´ı propojeny dva uvnitˇr modelu bez simulaˇcn´ıho Workeru – podpora mimo´urovˇnov´ych kˇr´ıˇzen´ı.

Zakonˇcen´ı koleje konstantn´ı n´avˇest

”St˚uj“

• Hrany:TrackBlockObr´azek5.4zn´azorˇnuje odvozen´ı bloku od dr´ahy. Jednu z moˇzn´ych hran pˇredstavuje jednoduch´a kolejSimpleTrackBlock. Je toTrackFacilitys jedn´ım odd´ılem. Dalˇs´ımi hranami mohou b´yt mezistaniˇcn´ı ´useky:

Automatick´y blok m´a v´ıce odd´ıl˚u – viz strana21

Poloautomatick´y blok facility, 1 hlavn´ı odd´ıl + 2 pˇredstaniˇcn´ı

« i n t er f ace » T rac kS ec ti on + en t er () + l eave () + ge tT rac k B l oc k() « i n t er f ace » P a t h + ge tL as tP a t hS emap h ore () + max S pee d() + reverse P a t h() + ge tFi rs t() + ge tL as t() + eq u a l s W i t h E l emen t s () « i n t er f ace » T rac k B l oc k + ge tN ex tT rac kS ec ti on () + i s I nner E l emen t () + ge tJ o i n () + max S pee d() « i n t er f ace» D eq u e « i n t er f ace» T rac kF ac ilit y + ge t S t a t e () « i n t er f ace » T rac k + i s F ree F rom () + se tU p P a th() + i s S e tU p P a th() + cance l P a t h S e t u p () + ge t S econ d E n d() + l eng t h() + max S pee d() + en d s ()

(23)

5.2.2 Dynamick´a konfigurace a cesty v s´ıti

Rezervovan´e koleje a dovoluj´ıc´ı sign´aly pˇredstavuj´ı jednu ˇci v´ıce tzv.

”postaven´ych vlakov´ych cest“. Tato cesta se j´ızdou vlaku postupnˇe rozpad´a a m˚uˇze se za urˇcit´ych podm´ınek mˇenit. Form´alnˇe je to cesta z teorie graf˚u tj. posloupnost uzl˚u a neobsazen´ych hran, ale s ohledem na konfiguraci prvk˚u – konkr´etnˇeji:

• poˇc´ateˇcn´ı a koncov´y uzel je n´avˇestidlo ve smˇeru cesty ˇci vstupnˇe-v´ystupn´ı bod • v´yhybky propojuj´ı hrany (oba sousedy z posloupnosti)

• n´avˇestidla ve smˇeru mus´ı dovolovat j´ızdu, aˇz na posledn´ı, kter´e ji zakazuje

• protismˇern´a n´avˇestidla: hlavn´ı zakazuj´ı (d´ale v nedoimplementovn´ych – odd´ılov´a jsou vypnut´a a na pˇredzvˇesti nem´a cesta vliv)

Tato funkˇcnost5 je implementov´ana v AbstractPath. Na obr´azku 5.4 je tak´e zn´azornˇena n´avaznost cesty na dr´ahu.

5.2.3 Datov´y soubor

Pro ukl´ad´an´ı a naˇc´ıt´an´ı dat jsem navrhl tzv.ContextFactory. Zvolil jsem XML s validac´ı pomoc´ı XML Schema (viz4.1). Souˇcasn´y datov´y form´at je v z´akladn´ı podobˇe a pˇredstavuje skl´ad´an´ı prvk˚u s´ıtˇe na nejniˇzˇs´ı uˇzivatelem upraviteln´e ´urovni. Pˇredstavuje statick´y popis s´ıtˇe stanice. Jednotiv´e uzly a hrany jsou obyˇcejnˇe vyjmenov´any jako podelementy koˇrenov´eho elementu. K rozliˇsen´ı typ˚u prvk˚u pouˇz´ıv´am mj. v´yˇctov´e typy. Nejenˇze ˇsetˇr´ı m´ısto a jsou jednoduˇse rozˇsiˇriteln´e, ale snadno se i naˇc´ıtaj´ı a zapisuj´ı.

5.3

Simulace

Tato sekce popisuje pr˚ubˇeh simulace – neform´aln´ım popisem a pomoc´ı vybran´ych abs-traktn´ıch model˚u nejd˚uleˇzitˇejˇs´ıch proces˚u.

Proˇc kombinovan´a simulace?

Poloha vlaku se d´a pojmout jak diskr´etnˇe - tj. kter´e kolejov´e obvody obsazuje. Tak´e je vˇsak tˇreba zn´at jeho pˇresnˇejˇs´ı polohu, rychlost a zrychlen´ı v kaˇzd´em okamˇziku. M´ıra pˇresnosti je nastaviteln´a. Umoˇzˇnuje v´ıce moˇznost´ı a l´epe se mˇen´ı. Napˇr´ıklad lze zmˇenit rovnici v popisu pohybu.

5.3.1 Vstupnˇe-v´ystupn´ı body – InOut

Pˇredstavuje vstup a v´ystup do kolejiˇstˇe. Jeho chov´an´ı, jehoˇz z´akladem je fronta vlak˚u, popisuje InOutWorker. V jednoduch´ych modelech lze do n´ı vkl´adat pˇr´ımo gener´atorem, ve sloˇzitˇejˇs´ıch to mus´ı prov´est vyˇsˇs´ı ˇr´ıd´ıc´ı logika – dispeˇcer. S´am o sobˇe um´ı povolit cestu k nejbliˇzˇs´ımu n´avˇestidlu orientovan´emu ve smˇeru j´ızdy, pokud v´yhybky k nˇejak´emu cestu propojuj´ı6 a z´aroveˇn je nˇejak´y vlak ve frontˇe a z´aroveˇn jsou na n´ı voln´e vˇsechny koleje. V budoucnosti m˚uˇze pˇredstavovat pˇripojen´ı extern´ıho kolejiˇstˇe. Moment´alnˇe uvaˇzuji modely o dvou InOut. Kdyˇz propoj´ım pouze dva tyto InOut jednou kolej´ı, rozpout´a se mezi nimi

5

pracuj´ıc´ı s hlavn´ımi n´avˇestidly, protoˇze ostatn´ı jsou uvnitˇr bloku

6

(24)

Vlak ˇcek´a ve frontˇe vstupnˇe-v´ystupn´ıho bodu na povolen´ı k j´ızdˇe. Po jeho z´ısk´an´ı se spust´ı podproces Train.Front, kter´y pˇri tom, kdyˇz naraz´ı na uzel (PathSeparator), pˇr´ıpadnˇe zmˇen´ı parametry podle nˇej a obsad´ı odd´ıl pˇred n´ım. Aˇz vyjede vlak cel´y spust´ı seTrain.Tail. Ten pˇri pr˚ujezdu kaˇzd´ym uzlem uvoln´ı odd´ıl za n´ım.

Kaˇzd´e n´avˇestidlo poskytuje informaci o povolen´e rychlosti za n´ım a o sign´alu na n´ a-sleduj´ıc´ım n´avˇestidle, pokud ovˇsem nesv´ıt´ı sign´al

”St˚uj“. V tomto pˇr´ıpadˇe by mˇel vlak dobrzdit pˇred n´ım a ˇcekat na sign´al umoˇzˇnuj´ıc´ı j´ızdu. Pro zjednoduˇsen´ı pˇredpokl´ad´am, ˇze stav n´avˇestidel m˚uˇze b´yt zjiˇst’ov´an pouze v diskr´etn´ım stavu, kdyˇz vlak dojede k n´avˇestidlu, protoˇze stanovit, kdy m˚uˇze zaregistrovat zmˇenu sign´alu je v re´alu neurˇcit´e narozd´ıl od programu.

Pˇri pr˚ujezdu kolem n´avˇestidla zaˇc´ın´a mˇenit rychlost v z´avislosti na sign´alu. Tzv.

”rozjezd na v´ystrahu“, kdy se vlak u prvn´ıho n´avˇestidla zaˇc´ın´a rozj´ıˇzdˇet a pˇred n´asleduj´ıc´ım zastav´ı, je oˇsetˇrena zvl´aˇst’. Podprocesy konˇc´ı v koncov´ych vstupnˇe-v´ystupn´ıch bodech InOut. Zde jsem zjednoduˇsil model pˇredpokladem, ˇze nejvˇetˇs´ı d´elka vlaku mus´ı b´yt pˇreci menˇs´ı neˇz nejmenˇs´ı moˇzn´a d´elka kolejov´eho bloku mezi dvˇema InOut. Takov´ehle podobn´e okrajov´e pˇr´ıpady nem´a cenu jinak oˇsetˇrovat, neˇz prohl´asit model za chybn´y. Detekce t´eto chyby vyˇzaduje hled´an´ı minim´aln´ıch cest.

Form´alnˇe je to kombinovan´y proces (viz sekce 3.2.3). Diskr´etn´ı ˇc´ast ˇcek´a na stavov´e podm´ınky dojezdu k semaforu a nastavuje zrychlen´ı. Tuto interakci popisuje Petriho s´ıt’ na obr´azku3.2, ta slouˇz´ı vˇsak jen pro n´azornost. Simulace nen´ı implementov´ana pˇr´ımo pomoc´ı PS. Zvolil jsem jednouch´y spojit´y model, protoˇze je zhlediska odladˇen´ı diskr´etn´ıch interakc´ı pˇredv´ıdatelnˇejˇs´ı. Z´akladn´ı pohybov´e rovnice5.1a5.2pro zrychlen´ıa, rychlostva dr´ahus:

v = Z adt (5.1) s = Z vdt (5.2)

V´ypoˇcet zrychlen´ıav rovnici 5.3z poˇc´ateˇcn´ı rychlosti v0, c´ılov´e rychlostiv1 a dr´ahy s

pro zrychlov´an´ı:

∆v = v1−v0

a = ∆v(v1+v0)

2s (5.3)

5.4

r´ıklad – V´

yhybna

Pro lepˇs´ı demonstraci jak funguje simulaˇcn´ı model jsem vytvoˇril

”v´yhybnu“ ˇr´ızenou na z´akladˇe jednoduch´ych pravidel. Ke kaˇzd´emu ovlivniteln´emu n´avˇestidlu je na pevno pˇriˇrazena alespoˇn jedna vytvoˇren´a cesta, kter´a vede na dalˇs´ı kolej bud’ s moˇznost´ı odst´avky ˇci opuˇstˇen´ı syst´emu, tedy z urˇcit´eho pohledu pˇredstavuje jednu nedˇelitelnou operaci pˇresunu. Vlaky jsou vytv´aˇreny s jednoduch´ym j´ızdn´ım ˇr´adem (dva ´udaje odkud, kam –InOut) pomoc´ı ge-ner´atoru s exponenci´aln´ım rozloˇzen´ım doby mezi jednotliv´ymi generov´an´ımi. Dˇr´ıve neˇz jsou

(25)

pˇred vloˇzeny do frontyInOut, mˇelo by se pˇredej´ıt zahlcen´ı kolejiˇstˇe. ˇR´ıd´ıc´ı proces iterativnˇe proch´az´ı znalostmi o syst´emu:

1. zapomene vlaky, kter´e uˇz projely syst´emem

2. z vlak˚u, kter´e ˇcekaj´ı na vstup vybere tolik, aby byly celkem v syst´emu nejv´yˇse dva a udˇel´ı jim souhlas (aktivov´an´ım procesu)

3. projde vˇsechny kolejov´e bloky

(a) ve kter´ych se nach´az´ı vlak nebo je rezervovan´a cesta, zjist´ı jeho resp. jej´ı smˇer – n´avˇestidlo ke kter´emu je vlak veden

(b) pokud je z tohoto n´avˇestidla voln´a cesta (pˇredem uloˇzen´a) postav´ı ji

Obr´azek 5.5: Kolejov´e sch´ema v´yhybny

Ke sch´ematu na obr´azku5.5: ´useˇcky jsou koleje, jejich spojen´ı jsou v´yhybky,•jeInOutaI je n´avˇestidlo. Po spuˇstˇen´ı simulace se na standardn´ı v´ystup programu vypisuj´ı po ˇr´adk´ach zpr´avy:

1. j´ızda vlaku, spojit´y vzorek:

ˇ

cas objekt zrychlen´ı rychlost dr´aha kolej_od kolej_do vzd_n´avˇestidlo

2. diskr´etn´ı ud´alost prvku:

ˇ

cas objekt zpr´ava

dr´aha je celkov´a dr´aha ujet´a vlakem, kolej_od kolej na kter´e se nach´az´ı zaˇc´atek vlaku,

kolej_dokolej na kter´e se nach´az´ı konec vlaku,vzd_n´avˇestidlovzd´alenost k nejbliˇzˇs´ımu n´avˇestidlu.

V grafu na obr´azku 5.6 je zn´azornˇeno, jak vlak v modelu reaguje na sign´aly bˇehem ud´alosti dojezdu k n´avˇestidlu. Zde je zrovna vidˇet jak ˇr´ıd´ıc´ı logika nestaˇc´ı povolit cestu do n´asleduj´ıc´ıho bloku vˇcas, a vlak se mezi semafory rozj´ıˇzd´ı a zastavuje. V sekci 5.3.2 je vysvˇetleno chov´an´ı vlaku.

(26)

0 5 10 15

0 5 10 15 20 25 30 35 40 45 50

(27)

Kapitola 6

avˇ

er

V t´eto kapitole jsou pops´ana moˇzn´a rozˇs´ıˇren´ı programu a zhodnocen´ı cel´e pr´ace.

6.1

amˇ

ety na rozˇ

s´ıˇ

ren´ı

N´apad˚u na to jak rozˇs´ıˇrit souˇcasnou aplikaci je plno, ale zde se zamˇeˇr´ım sp´ıˇse na ty, pro kter´e je souˇcasn´a implementace pˇr´ımo navrˇzena, nebo z n´ı vypl´yvaj´ı a jsou v nejbliˇzˇs´ı dobˇe realizovateln´e.

C´ıle v´ysledn´e aplikace

Tyto c´ıle jsem vytyˇcil z d˚uvodu, ˇze nechci, aby naimplementovan´y k´od byl vytvoˇren jen pro jeden ´uˇcel. T´ımto bych chtˇel nˇejak vyj´adˇrit moˇznosti dalˇs´ıho rozvoje cel´e aplikace. Na mou pr´aci mohou nav´azat a uskuteˇcnit je jin´ı studenti.

• grafick´y editor a simul´ator ˇr´ızen´ıˇzelezniˇcn´ı s´ıtˇe v jedn´e aplikaci, zamˇeˇren´ı na funkˇcnost, minimalizace klik´an´ı

• platformn´ı nez´avislost – alespoˇn na ´urovni zdrojov´ych k´od˚u

• form´at dat, kter´y umoˇzˇnuje vytv´aˇret ˇsablony prvk˚u kompozic´ı z jin´ych

Fyzik´aln´ı model j´ızdy

Pro souˇcasn´y popis j´ızdy existuje i analytick´e ˇreˇsen´ı. Popis pomoc´ı diferenci´aln´ı rovnice ale umoˇzˇnuje jej´ı zmˇenu za sloˇzitˇejˇs´ı, kter´a bude vˇernˇeji modelovat dalˇs´ı moˇzn´e pˇr´ıpady. Dr´ahu vlaku (hlavnˇe v mezistaniˇcn´ıch ´usec´ıch) bych pojal jako kˇrivku v trojrozmˇern´em prostoru – tj. dalˇs´ı vlastnost hrany. Pˇri tom je tˇreba rozloˇzit si souˇcasnou jedinou s´ılu udˇeluj´ıc´ı v´ysledn´e zrychlen´ı na nˇekolik sloˇzek – naklonˇen´a rovina v kopc´ıch, tˇren´ı, taˇzn´a s´ıla motoru, ta by mohla b´yt ˇr´ızena napˇr´ıklad fuzzy regul´atorem. M˚uˇzu pak uvaˇzovat i poruchy, pˇri kter´e je s´ıla motoru nulov´a.

Automatick´y blok

Automatick´y blok (AB) je pevnˇe postaven´a, automaticky obnovovan´a, cesta pro v´ıce vlak˚u. M˚uˇze to b´yt napevnoTrackBlockposkl´adan´y z nˇekolika odd´ıl˚uSimpleTrack. AB jako celek m´a dipeˇcerem nastaven´y smˇer. Jednotliv´e odd´ıly okamˇzitˇe rezervuj´ı cestu v tom smˇeru, kdyˇz dojde k jejich uvolnˇen´ı. Na obr´azku6.1je zn´azornˇeno chov´an´ı odd´ılu AB. AB by tak´e mˇelo

(28)

druh˚u n´avˇest´ı (z´aleˇz´ı kde budou v s´ıti um´ıstˇeny):

Odd´ılov´a n´avˇest v autobloku

Pˇredzvˇest pomoc´ı konstantn´ı n´avˇesti s

”Volno“

Ukl´ad´an´ı stavu simulace

Diskr´etn´ı proces je rozkouskovan´y na ud´alosti pˇr´ıkazy, jako je ˇcek´an´ı, vedouc´ı ke ztr´atˇe akti-vity. Pokud nˇejak´ym univerz´aln´ım zp˚usobem vytvoˇr´ım moˇznost pamatovat stav ve kter´em je kaˇzd´y proces zrovna pasivn´ı mezi ud´alostmi a definuji transformaci z poˇc´atku do tohoto stavu, m˚uˇzu tuto informaci uloˇzit spoleˇcnˇe s dalˇs´ımi vlastnostmi pˇri serializaci. Proces by mohl b´yt vnitˇrnˇe reprezentov´an jako automat ˇci Petriho s´ıt’ a jeho resp. jej´ı stav by se uloˇzil a obnovil. U spojit´ych promˇenn´ych je tˇreba ukl´adatjDisco.Variable. Je moˇzn´e, ˇze kv˚uli univerz´aln´ımu ˇreˇsen´ı, bude vyˇzadovat ´upravy v knihovnˇe jDisco pro podporu serializace. Stav potomk˚u LoopProcess, kter´y uvnitˇr iterace nepˇrich´az´ı do pasivn´ıho stavu, je moˇzn´e jiˇz ukl´adat.

Vizualizace pomoc´ı celul´arn´ıch automat˚u, Real-time

ˇ

Ctvercov´a s´ıt’ modelu pˇr´ımo pˇredurˇcuje pouˇz´ıt pro ˇr´ızen´ı vykreslov´an´ı celul´arn´ı automaty. Snahou je minimalizovat mnoˇzstv´ı pˇrekreslovan´e plochy a zbyteˇcnou v´ypoˇcetn´ı z´atˇeˇz, zp˚ uso-benou proch´azen´ım stav˚u vˇsech bunˇek, omezen´ım pouze na mal´e mnoˇzstv´ı bunˇek nˇekter´ych typ˚u a u ostatn´ıch budu vych´azet z pˇredpokladu, ˇze pokud se zmˇen´ı jedna buˇnka, tak pravdˇepodobnost zmˇeny v buˇnk´ach v okol´ı1 se nastav´ı na maximum a pak kles´a s ˇcasem. D´ale bude vhodn´e vytvoˇrit Monitor se synchronizac´ı re´aln´eho ˇcasu s modelov´ym. Ten by mˇel l´epe detekovat a vhodnˇe vkl´adat

”odmlky“ mezi spojit´y v´ypoˇcet. V souˇcasnosti to oˇsetˇruji diskr´etn´ım procesem, kter´y pro kaˇzdou sekundu modelov´eho ˇcasu, po kterou ˇcek´a tj. simuluj´ı se jin´e procesy, spoˇc´ıt´a ubˇehl´y ˇcas a vloˇz´ı pˇr´ımo potˇrebnou pauzu javov´eho vl´akna. Kvaziparalelismus zajist´ı, ˇze se pozdrˇz´ı v´ypoˇcet cel´e simulace. Je to tedy vloˇzen´ı jak´ychsi synchronizaˇcn´ıch impuls˚u, kter´e je vˇsak tˇreba napl´anovat v lepˇs´ı okamˇzik.

(29)

Rozhran´ı do modelu pro ˇr´ızen´ı dispeˇcerem

Nav´azat je moˇzn´e na souˇcasnou formalizaci cest, doimplementovat jejich vyhled´av´an´ı. Vy-tvoˇrit bal´ıˇcek rutin a funkc´ı zastˇreˇsuj´ıc´ı pˇr´ıstup do modelu pro ˇr´ızen´ı z nˇekolika ´urovn´ı. Na to tak´e navazuje dodˇelat pˇr´ıkazy z GUI rozhran´ı. Vhodn´e bude zformalizovat posloupnost pˇr´ıkaz˚u jako jazyk, kter´y se d´a pˇr´ıpadnˇe optimalizovat.

6.2

Zhodnocen´ı dosaˇ

zen´

ych v´

ysledk˚

u

Program simuluje pohyb nˇekolika vlak˚u v s´ıti souˇcasnˇe. Kaˇzd´y vlak se pohybuje podle bˇehem simulace stanoven´e cesty – reaguje na sign´aly n´avˇestidel. Do obsazen´ych kolej´ı nem˚uˇze vjet dalˇs´ı vlak. Stanoven´ych minim´aln´ıch c´ıl˚u bylo tedy dosaˇzeno, coˇz demonstruje pˇr´ıklad. Sloˇzitˇejˇs´ı s´ıt’ je rozumnˇe pˇredvediteln´a aˇz v pˇr´ıpadˇe doimplementov´an´ı ˇr´ıd´ıc´ıho mo-dulu a vizualizace simulace, kdy kontrolu mus´ı pˇrevz´ıt ˇclovˇek. Validita tohoto simulaˇcn´ıho modelu by ˇsla ovˇeˇrit sb´ır´an´ım statistik o skuteˇcn´ych vlakov´ych s´ıt´ıch a srovn´an´ım s mode-lem.

Vhodn´e rysy jazyk˚u resp. n´astroj˚u nakonec pˇrevaˇzuj´ı, pˇrestoˇze nˇekter´e konstrukce v nich byly obt´ıˇznˇeji vyj´adˇriteln´e. Pokud jsem mˇel provˇeˇrit jakou z´atˇeˇz´ı je simulace na operaˇcn´ı syst´em, vˇzdy se hodnoty bˇehem spuˇstˇen´e instance virtu´aln´ıho stroje2 pohybovaly na m´em pˇr´ıstroji kolem tˇechto hodnot a nijak v´yraznˇe se nemˇenily: sd´ılen´a pamˇet’ – 10 MB, k´od a data ve fyzick´e pamˇeti – 25 MB, mnoˇzstv´ı virtu´aln´ı pamˇeti – 213 MB, v´ykon CPU 91 % (toto nen´ı pokus o sofistikovanou v´ykonostn´ı anal´yzu, jenom jsem sledoval, zda si program nevynucuje zbyteˇcnˇe moc prostˇredk˚u).

Z vlastn´ı iniciativy jsem si vyzkouˇsel moˇznost pracovat na takov´emto projektu a ponoˇrit se do problematiky anal´yzy a modelov´an´ı komplexn´ıch syst´em˚u, coˇz zahrnuje zab´yvat se pˇr´ıpadov´ymi studiemi technick´ych zaˇr´ızen´ı. D´ale jsem si rozˇs´ıˇril obzor, o to jak zakom-ponovat simulaci, a zdokonalil se v n´avrhu a programov´an´ı aplikace. Probl´em jsem mˇel zejm´ena ze zaˇc´atku s odhadem ˇcasov´e n´aroˇcnosti prac´ı. Samotn´e k´odov´an´ı ˇslo pomˇernˇe rychle, ale na ladˇen´ı jsem v odhadech ˇcasu pozapomnˇel. Radˇeji testuji pr˚ubˇeˇznˇe, chyba se potom snadnˇeji hled´a. U rozs´ahl´ych projekt˚u je vˇsak tˇreba jeˇstˇe vytv´aˇret testovac´ı skripty. V oblasti n´avrhu je st´ale se co uˇcit a v´ıce vyuˇz´ıt n´avrhov´ych vzor˚u a hlavnˇe se drˇzet jejich z´asad. Ale mus´ım poznamenat, ˇze doba str´aven´a studov´an´ım a n´avrhem syst´emu byla delˇs´ı neˇz doba programov´an´ı, kterou bych chtˇel v pokraˇcov´an´ı na v´ystavbˇe t´eto aplikace jeˇstˇe zkr´atit o vyvarov´an´ı se chyb´am, z kter´ych jsem se dopustil.

2

(30)

[1] Vyhl´aˇska Ministerstva dopravy, kterou se vyd´av´a dopravn´ı ˇr´ad drah. 1995. URLhttp://www.mvcr.cz/sbirka/

[2] XML Schema Part 1: Structures Second Edition. web, 2004. URLhttp://www.w3.org/TR/2004/REC-xmlschema-1-20041028/ [3] JDK 6 Documentation. web, 2006.

URLhttp://java.sun.com/javase/6/docs/

[4] FALKNER, A.; FLEISCHANDERL, G.: Configuration requirements from railway interlocking stations. Technick´a zpr´ava, Siemens Austria, 2001.

[5] HAROLD, E. R.; MEANS, W. S.:XML v kostce. Computer Press, 2002. [6] HELSGAUN, K.: jDisco – a Java package for combined discrete and continuous

simulation. Technick´a zpr´ava, Department of Computer Science, Roskilde University, 2001.

URLhttp://www.akira.ruc.dk/~keld/research/JDISCO/

[7] HEROUT, P.: Java - bohatstv´ı knihoven. Kopp, ˇCesk´e Budˇejovice, 2003.

[8] NOVOSAD, P.: V´yukov´y n´astroj pro pr´aci s C/E Petriho s´ıtˇemi. InPedagogick´y software 2006, Zemˇedˇelsk´a Fakulta, Jihoˇcesk´a Univerzita, 2006, ISBN 80-85645-56-4, s. 247–249.

URLhttp://www.fit.vutbr.cz/research/view_pub.php?id=8103

[9] PECINOVSK ´Y, R.: Java 5.0 – Novinky jazyka a upgrade aplikac´ı. Computer Press Brno, 2005.

[10] REKTORYS, K.; kol.: Pˇrehled uˇzit´e matematiky I. - II.Prometheus, 2000.

[11] R ´ABOV ´A, Z.; ˇCEˇSKA, M.; ZENDULKA, J.; aj.:Modelov´an´ı a simulace. VUT FEI, druh´e vyd´an´ı.

[12] SPELL, B.: Java Programujeme profesion´alnˇe. Computer Press Praha, 2002. [13] WR ´OBLEWSKI, P.: Algoritmy – Datov´e struktury a programovac´ı techniky.

(31)

Seznam pouˇ

zit´

ych zkratek

AB Automatick´y blok – trat’ov´e zabezpeˇcovac´ı zaˇr´ızen´ı rozdˇelen´e na prostorov´e odd´ıly

DOM Document Object Model – v´ıce v [5]

GCC GNU Compiler Collection – http://www.gnu.org/software/gcc/

JOP Jednotn´e obsluˇzn´e pracoviˇstˇe – ˇr´ıd´ıc´ı zaˇr´ızen´ı umoˇzˇnuj´ıc´ı kontrolovat nˇekolik stanic najednou

M&S Modelov´an´ı a simulace – viz sekce 3.2

PS Petriho s´ıt’ – viz sekce3.2

SAX Simple API for XML – v´ıce v [5]

SIMLIB SIMLIB/C++ –http://www.fit.vutbr.cz/~peringer/SIMLIB/

STL Standard Template Library – knihovn´ı funkce jazyka C++

XSLT eXtensible Stylesheet Language Transformations – funkcion´aln´ı programovac´ı ja-zyk v XML pro specifikaci pˇrevodu vstupn´ıho XML na v´ystupn´ı form´at (v´ıce v [5])

References

Related documents

Campus Select classes will vary from .17-1.0 high school credits all depending on the amount of college credits earned for the course. If it is a 100 level course and above it will

The first part you define is the control arm. You begin by building its hardpoints. You can later modify these hardpoints to determine their effects on your vehicle. Next, you

The long- term goal of this project is to introduce the notion of learning space and explore the role of the design of learning space context-aware ontologies with the ultimate aim

Ether- net is frequently the protocol of choice whether data is transported in a local network (LAN), over optical fibre rings in a metropolitan network (MAN) or over long

Working in conjunction with the Stroke Association this service provides a community approach in rehabilitation supporting those with an acquired brain injury and/or

Accordingly, the research problem tackled in this thesis is that learners from previously disadvantaged black schools in Cape Town lack knowledge of hospitality

This slope is inconsistent with theories of spiral galaxy structure, which predict metal-rich inner regions and relatively metal-poor outer regions; the observed oxygen

Three measurements of the longitudinal field over a time interval of 64 days are reported by Mathys &amp; Hubrig (1996): all yielded a field close to − 2. Since we found that it