Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Komponentov´ a aplikace ˇ ızen´ı silniˇ R´ cn´ı kˇ riˇ zovatky
Plzeˇ n 2012
ˇ unek Filip Sim˚
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. Nem´am n´amitek proti p˚ ujˇcen´ı pr´ace se souhlasem katedry ani proti zveˇrejnˇen´ı pr´ace nebo jej´ı ˇc´asti. V Plzni dne 22. ˇcervna 2012 ˇ unek Filip Sim˚
Podˇ ekov´ an´ı Chtˇel bych podˇekovat sv´emu vedouc´ımu bakal´aˇrsk´e pr´ace Ing. Tom´aˇsi Potuˇza´kovi Ph.D. za cenn´e a rady a pˇripom´ınky pˇri veden´ı bakal´aˇrsk´e pr´ace, kter´e mi pomohly pˇri jej´ım vypracov´an´ı. Dalˇs´ı podˇekov´an´ı patˇr´ı pedagog˚ um z Fakulty aplikovan´ ych vˇed, kteˇr´ı mnˇe po dobu studia pˇred´avali sv´e znalosti. Nakonec dˇekuji ˇclen˚ um sv´e rodiny za podporu bˇehem studia.
Abstract The purpose of this thesis was to design a model of component-based application for controlling a traffic crossroad and test it for extra-functional requirements. The main result of this thesis is an implementation of traffic crossroad model with two traffic control algorithms. It was developed by component model Spring DM, which is the extension of OSGi framework. This project was created as a bachelor´s thesis primary for Department of Computer Science and Engineering for simulation framework for testing components. The component application contains 11 components. They evaluate dates, save statistics and control simulated traffic crossroad from traffic crossroad component by two possible algorithms. Each component has its own functionality and provides services, which are defined in interface.
Obsah ´ 1 Uvod
1
2 Komponentov´ y pˇ r´ıstup k tvorbˇ e softwaru 2.1 Z´akladn´ı pojmy . . . . . . . . . . . . . . . 2.1.1 Komponenta . . . . . . . . . . . . 2.1.2 Komponentov´e rozhran´ı . . . . . . 2.1.3 Kontrakty a interakce komponent . 2.1.4 Komponentov´ y model . . . . . . . 2.1.5 Komponentov´ y framework . . . . . 2.2 Proces v´ yvoje komponent . . . . . . . . . 2.2.1 N´avrhov´a f´aze . . . . . . . . . . . . 2.2.2 V´ yvojov´a f´aze . . . . . . . . . . . . 2.2.3 F´aze sestaven´ı . . . . . . . . . . . . 2.2.4 F´aze nasazen´ı . . . . . . . . . . . . 2.2.5 Certifikace . . . . . . . . . . . . . . 2.3 Pˇr´ıklady komponentov´ ych model˚ u . . . . . 2.3.1 OSGi . . . . . . . . . . . . . . . . . 2.3.2 Spring . . . . . . . . . . . . . . . . 2.3.3 Spring DM . . . . . . . . . . . . . ˇ ızen´ı kˇ 3 R´ riˇ zovatek v silniˇ cn´ı dopravˇ e 3.1 Historie . . . . . . . . . . . . . . . . 3.2 Bezpeˇcnost . . . . . . . . . . . . . . 3.3 Druhy kˇriˇzovatek . . . . . . . . . . . 3.4 Technick´a ˇreˇsen´ı SSZ . . . . . . . . . 3.4.1 Svˇeteln´e semafory . . . . . . . 3.4.2 Detekce vozidel . . . . . . . . 3.5 Z´akladn´ı pojmy ˇr´ızen´ı kˇriˇzovatek . . 3.5.1 Pojem f´aze“ . . . . . . . . . ” 3.5.2 Druhy sign´aln´ıch program˚ u“ ” 3.5.3 Dynamick´e“ ˇr´ızen´ı kˇriˇzovatky ”
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . . . . . . .
2 2 3 3 4 4 4 4 5 5 5 5 6 6 6 7 8
. . . . . . . . . .
9 9 9 10 10 10 11 12 12 12 13
OBSAH 3.6
OBSAH Strategie ˇr´ızen´ı kˇriˇzovatek . . . . . . . . . . 3.6.1 Strategie ze z´ıskan´ ych dopravn´ıch dat 3.6.2 Strategie v´ ykonnostn´ıch ukazatel˚ u. . 3.6.3 Strategie dle dopravn´ı hustoty . . . . 3.6.4 Strategie dle syst´emu ˇr´ızen´ı dopravy 3.6.5 Strategie dle rozvrˇzen´ı dopravy . . .
4 Komponentov´ a aplikace kˇ riˇ zovatky 4.1 Anal´ yza . . . . . . . . . . . . . . . . . 4.1.1 N´avrh kˇriˇzovatky . . . . . . . . 4.1.2 Postup vytv´aˇren´ı aplikace . . . 4.2 Implementace . . . . . . . . . . . . . . 4.2.1 Sezn´amen´ı s prostˇred´ım . . . . 4.2.2 Sch´ema komponentov´e aplikace 4.2.3 Traffic crossroad . . . . . . . . 4.2.4 Traffic control algorithm . . . . 4.2.5 Traffic control algorithm VASC 4.2.6 Light signal controller . . . . . 4.2.7 Variable sign controller . . . . . 4.2.8 Induction loop . . . . . . . . . . 4.2.9 Optic detection . . . . . . . . . 4.2.10 Vehicle observation . . . . . . . 4.2.11 Sensor access . . . . . . . . . . 4.2.12 Statistics collector . . . . . . . 4.2.13 Control panel . . . . . . . . . . 5 Algoritmy ˇ r´ızen´ı kˇ riˇ zovatky 5.1 Sezn´amen´ı se s kˇriˇzovatkou . . . . . 5.2 Statick´ y algoritmus . . . . . . . . . 5.3 VASC algoritmus . . . . . . . . . . 5.4 Nastaven´ı parametr˚ u pro algoritmy
. . . .
. . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
6 Testov´ an´ı kvality mimofunkˇ cn´ıch poˇ zadavk˚ u ´ 6.1 Uspˇeˇsnost ˇr´ızen´ı kˇriˇzovatky . . . . . . . . . . . 6.2 Rozd´ıl mezi statick´ ym algoritmem a VASC . . 6.3 Moˇznosti vylepˇsen´ı . . . . . . . . . . . . . . . 6.4 Moˇznosti dalˇs´ıho v´ yvoje . . . . . . . . . . . . 7 Z´ avˇ er
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
. . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . . . .
13 13 14 14 14 15
. . . . . . . . . . . . . . . . .
16 16 16 20 21 21 21 22 23 23 23 23 24 24 24 24 24 25
. . . .
26 26 26 28 28
. . . .
30 30 30 31 32 33
OBSAH
A Pˇ r´ılohy A.1 Uˇzivatelsk´a dokumentace . . . . A.1.1 Instalace workspace . . . A.1.2 Konfigurace komponenty A.1.3 Ovl´ad´an´ı aplikace . . . . A.2 F´aze ˇr´ızen´ı kˇriˇzovatky . . . . .
OBSAH
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
39 39 39 39 40 41
´ 1 Uvod Komponentovˇe orientovan´e programov´an´ı posledn´ıch deset let nab´ır´a na v´ yznamu. Hlavn´ı myˇslenkou tohoto pˇr´ıstupu je dekomponov´an´ı velk´ ych projekt˚ u na menˇs´ı ˇca´sti. Aplikace se rozdˇel´ı na element´arn´ı, ale samostatn´e a kompletn´ı jednotky — komponenty. Takov´ y pˇr´ıstup k tvorbˇe softwaru m´a v dneˇsn´ı dobˇe, kdy se mus´ı neust´ale v co nejkratˇs´ım ˇcase upravovat a doplˇ novat software k potˇreb´am z´akazn´ıka, velk´e opodstatnˇen´ı. Komponentu lze z cel´e aplikace snadno vyjmout a rychle opravit bez nutnosti zdlouhav´eho pˇredˇel´av´an´ı cel´e aplikace. Velkou v´ yhodou komponenty je tak´e moˇznost jej´ıho znovupouˇzit´ı do v´ıce jin´ ych aplikac´ı. C´ılem t´eto bakal´aˇrsk´e pr´ace je n´avrh a implementace aplikace sest´avaj´ıc´ı se z nˇekolika mezi sebou prov´azan´ ych komponent. Vznikl´a komponentov´a aplikace by mohla do budoucna slouˇzit k testov´an´ı v simulaˇcn´ım frameworku, kter´ y je vyv´ıjen na KIV1 . Proto byl tento projekt vyv´ıjen ve Spring DM frameworku2 , s jehoˇz pomoc´ı vznik´a i v´ yˇse zm´ınˇen´ y simulaˇcn´ı framework. Simulaˇcn´ı framework je zamˇeˇren na testov´an´ı mimofunkˇcn´ıch poˇzadavk˚ u a kvalitu sluˇzeb, coˇz jsou vedle samotn´e funkcionality d˚ uleˇzit´e vlastnosti softwarov´ ych komponent. Konkr´etn´ım t´ematem bakal´aˇrsk´e pr´ace je vytvoˇren´ı komponentov´e aplikace silniˇcn´ı kˇriˇzovatky, kter´a obsahuje komponenty zodpovˇedn´e za spr´avn´e ˇr´ızen´ı kˇriˇzovatky. Tyto komponenty budou napˇr´ıklad zajiˇst’ovat detekov´an´ı vozidel na kˇriˇzovatce pomoc´ı senzor˚ u, sb´ır´an´ı souhrnn´ ych dat a ovl´ad´an´ı svˇetel kˇriˇzovatky. Pro ovˇeˇren´ı spr´avn´eho fungov´an´ı aplikace, a komunikace mezi komponentami je m´ ym hlavn´ım u ´kolem implementovat dva algoritmy pro ˇr´ızen´ı kˇriˇzovatky. Prvn´ım je statick´ y algoritmus ˇr´ızen´ı a druh´ ym dynamick´ y algoritmus VASC3 , kaˇzd´ y implementovan´ y jako samostatn´a komponenta. Dynamick´ y algoritmus bude ke sv´e ˇcinnosti vyuˇz´ıvat na rozd´ıl od statick´eho t´emˇeˇr vˇsechny komponenty. U obou komponent budeme sledovat kvalitu sluˇzeb, konkr´etnˇe jejich schopnosti efektivnˇe ˇr´ıdit provoz v kˇriˇzovatce. T´ımto zp˚ usobem bychom mˇeli od dynamick´eho zp˚ usobu ˇr´ızen´ı kˇriˇzovatky dostat lepˇs´ı v´ ysledek ˇr´ızen´ı kˇriˇzovatky neˇz pouze pomoc´ı statick´eho a z´aroveˇ n tak z´ısk´ame ovˇeˇren´ı spr´avn´e funkˇcnosti a komunikace vˇsech komponent v aplikaci. 1 Katedra
informatiky a v´ ypoˇcetn´ı techniky komponentov´eho modelu Spring Dynamic Modules, viz 2.3.3 3 Vehicle actuated signal control viz 4.1.2 2 Implementace
1
2 Komponentov´y pˇr´ıstup k tvorbˇe softwaru Jak uˇz bylo ˇreˇceno v u ´vodu, komponentovˇe orientovan´e programov´an´ı, nebo tak´e CBSE (Component-based Software Engineering), popˇr. CBD (Componentbased Development) je v dneˇsn´ı dobˇe na vzestupu. Problematika CBSE pomohla ke vzniku komponentov´ ych model˚ u, coˇz jsou specifikace komponentov´e tvorby softwaru. Dˇelen´ım aplikace na menˇs´ı autonomn´ı ˇc´asti vznikaj´ı komponenty. Ty jsou vol´any pˇres rozhran´ı a jejich implementace z˚ ust´av´a navenek skryt´a. Takov´ y pˇr´ıstup m´a pro dneˇsn´ı dobu spoustu v´ yhod, mezi nˇeˇz patˇr´ı[1]: ∙ rozdˇelen´ı aplikace jednotliv´e ˇca´sti, kter´e jsou t´ım p´adem snadnˇeji opraviteln´e, neˇz kdyˇz se mus´ı zasahovat do cel´e aplikace ∙ zrychlen´ı v´ yvoje aplikace a tud´ıˇz zlevnˇen´ı ceny softwaru ∙ pˇredpokladem je znovupouˇzit´ı, popˇr. pouˇzit´ı jiˇz otestovan´ ych komponent tˇret´ıch stran ∙ pˇredv´ıdatelnost chov´an´ı komponenty, ale na druhou stranu skryt´ı obsahu komponent za rozhran´ı Je ovˇsem tˇreba zm´ınit i nev´ yhody: ∙ velk´a reˇzie pˇri pˇrechodu od jin´eho pˇr´ıstupu k programov´an´ı k v´ yvoji komponent ∙ existence pˇr´ıliˇs velk´eho mnoˇzstv´ı framework˚ u ∙ v´ yvoj komponent tˇret´ıch stran je tˇreba sledovat, protoˇze se rychle vyv´ıjej´ı
2.1
Z´ akladn´ı pojmy
Na Obr.2.1 m˚ uˇzeme vidˇet, jak vypad´a sch´ema komponentovˇe orientovan´eho softwaru. 2
Komponentov´y pˇr´ıstup k tvorbˇe softwaru
Z´akladn´ı pojmy
Obr´azek 2.1: sch´ema souˇca´st´ı komponentov´eho softwaru pˇrevzato z [2] Nyn´ı si pop´ıˇseme z´akladn´ı pojmy vyskytuj´ıc´ı se v souvislosti komponentovˇe orientovan´ ym programov´an´ım.
2.1.1
Komponenta
Komponenty jsou ˇc´asti softwaru s definovan´ ym rozhran´ım a funkcionalitou. Kaˇzd´a softwarov´a komponenta je navrhov´ana pro maximalizaci znovupouˇzitelnosti a vyuˇz´ıv´an´ı komponenty tˇret´ı stranou. Chov´a se podle principu ˇcern´e skˇr´ıˇ nky, coˇz znamen´a, ˇze vnitˇrn´ı implementace z˚ ust´av´a skryt´a navenek[3]. Kromˇe samotn´e funkcionality maj´ı softwarov´e komponenty i dalˇs´ı vlastnosti, ovlivˇ nuj´ıc´ı jejich pouˇzitelnost v komponentov´ ych aplikac´ıch. Tyto vlastnosti jsou souhrnnˇe naz´ yv´any mimofunkˇcn´ı poˇzadavky a kvalita sluˇzeb. ˇ Casto jsou pˇredmˇetem testov´an´ı[4].
2.1.2
Komponentov´ e rozhran´ı
Rozhran´ı je tou ˇc´ast´ı komponenty, kter´a je viditeln´a ostatn´ım a popisuje, jak´e sluˇzby komponenta poskytuje. Komponenty jsou na sobˇe implementaˇcnˇe nez´avisl´e, takˇze rozhran´ı slouˇz´ı k jejich komunikaci. Pro spr´avnou komunikaci si na sebe komponenty definuj´ı z´avislosti(dependency1 ). Tento proces se 1 odkaz
na jin´ y objekt resp. komponentu
3
Komponentov´y pˇr´ıstup k tvorbˇe softwaru
Proces v´yvoje komponent
liˇs´ı od bˇeˇzn´eho postupu t´ım, ˇze komponenta sama hled´a objekt na kter´em z´avis´ı[2].
2.1.3
Kontrakty a interakce komponent
Kontrakty urˇcuj´ı pr´ava a povinnosti“ z´ uˇcastnˇen´ ych komponent a mˇely ” by zajiˇst’ovat dobr´e spojen´ı rozhran´ı. Teoreticky maj´ı moˇznost se mˇenit za bˇehu nebo se mohou z´ uˇcastnˇen´e strany i domluvit na vyprˇsen´ı kontraktu[2]. Existuj´ı r˚ uzn´e druhy vztah˚ u komponenty viz rozdˇelen´ı podle [2]. Kromˇe norm´aln´ıho spojen´ı existuje jeˇstˇe vnoˇren´ı komponent, nasazen´ı komponenty do frameworku, nebo rozˇs´ıˇren´ı vnoˇren´eho frameworku komponentou.
2.1.4
Komponentov´ y model
Komponentov´ y model specifikuje, jak m´a komponenta vypadat, jak se m´a chovat a jak m´a komunikovat s ostatn´ımi komponentami Tak´e specifikuje, zda existuje v´ıce druh˚ u komponent a jak prob´ıh´a jejich skl´ad´an´ı [3].
2.1.5
Komponentov´ y framework
Komponentov´ y framework je implementac´ı specifikace komponentov´eho modelu. Existuje velk´e mnoˇzstv´ı komponentov´ ych model˚ u, kter´e se daj´ı rozdˇelit do r˚ uzn´ ych kategori´ı. Framework˚ u pro nˇe existuje dokonce jeˇstˇe v´ıce a jsou vyv´ıjeny a vyuˇz´ıv´any ve v´ yzkumn´e sf´eˇre i pr˚ umyslu [3].
2.2
Proces v´ yvoje komponent
Proces v´ yvoje komponent m˚ uˇzeme rozdˇelit na nˇekolik f´az´ı, z nichˇz se jednotliv´e mohou v z´avislosti na pouˇz´ıvan´em komponentov´em modelu liˇsit[5].
4
Komponentov´y pˇr´ıstup k tvorbˇe softwaru
2.2.1
Proces v´yvoje komponent
N´ avrhov´ a f´ aze
Zde je tˇreba rozdˇelit aplikaci na nˇekolik logick´ ych celk˚ u (komponent), z nichˇz kaˇzd´ y m´a svoj´ı danou funkcionalitu. Pro kaˇzdou komponentu jsou jasnˇe definov´any sluˇzby, kter´e bude poskytovat a kter´e bude poˇzadovat. Tento postup se opakuje, dokud nejsou jednotliv´e komponenty primitivn´ı2 . Takov´e komponenty mohou b´ yt pouˇzity znovu a lze z nich sestavovat vˇetˇs´ı komplexnˇejˇs´ı komponenty, kter´e n´asledn´ı utvoˇr´ı celou aplikaci.[5].
2.2.2
V´ yvojov´ a f´ aze
V druh´e f´azi procesu prob´ıh´a v´ yvoj k´odu pro primitivn´ı komponenty. Komponentov´e modely umoˇzn ˇuj´ı na z´akladˇe specifikace komponenty ˇca´st zdrojov´eho k´odu vygenerovat. V´ ysledn´ y zkompilovan´ y k´od tvoˇr´ı komponentu, kter´a se pouˇz´ıv´a pro dalˇs´ı v´ yvoj[5].
2.2.3
F´ aze sestaven´ı
V t´eto f´azi se vˇsechny komponenty sestav´ı do assembly tree. Koˇren stromu reprezentuje celou aplikaci a potomci kaˇzd´eho uzlu reprezentuj´ı komponenty, ze kter´ ych je jejich rodiˇcovsk´ y uzel sloˇzen. Listy stromu tvoˇr´ı komponenty pouˇz´ıvan´e pro sestaven´ı aplikace. Zde se konfiguruj´ı hodnoty properties3 [5].
2.2.4
F´ aze nasazen´ı
Nasazen´ı je posledn´ı f´az´ı vedouc´ı k funguj´ıc´ı aplikaci. Konfiguraˇcn´ı hodnoty v assembly deskriptoru jsou zde nastaveny podle potˇreb. Komponenty jsou rozdˇeleny do DU(Deployment Units) podle toho, na jak´em serveru pobˇeˇz´ı[5]. 2 dostateˇ cnˇe 3 defaultn´ ı
jednoduch´e k implementaci — neskl´adaj´ı se z dalˇs´ıch komponent konfiguraˇcn´ı data, kter´a maj´ı podobu XML souboru naz´ yvan´eho assembly
descriptor
5
Komponentov´y pˇr´ıstup k tvorbˇe softwaru Pˇr´ıklady komponentov´ych model˚ u
2.2.5
Certifikace
O certifikaci se star´a nˇekdo d˚ uvˇeryhodn´ y, kdo vyd´a prohl´aˇsen´ı o certifikovan´em subjektu. T´ım m˚ uˇze b´ yt napˇr. komponenta, framework nebo syst´em z nich sloˇzen´ y. Je to d˚ uleˇzit´a f´aze pro pˇredv´ıd´an´ı v´ ysledn´ ych vlastnost´ı kompozice celku[5].
2.3
Pˇ r´ıklady komponentov´ ych model˚ u
Pro implementaci tohoto projektu byl zad´an komponentov´ y model Spring DM. Pouˇz´ıv´an´ı tohoto modelu zahrnuje i potˇrebu znalost´ı o komponentov´ ych modelech Spring a OSGi, ze kter´ ych Spring DM vych´az´ı. Proto zde budou pops´any pˇr´ıklady tˇechto tˇr´ı komponentov´ ych model˚ u resp. framework˚ u.
2.3.1
OSGi
OSGi4 framework implementuje dynamick´ y komponentov´ y model a nab´ız´ı platformu sluˇzeb pro programovac´ı jazyk Java. Poskytuje prostˇred´ı pro komponentovˇe orientovan´e aplikace a samostatn´e komponenty, kter´e zde mohou b´ yt na d´alku instalov´any, spouˇstˇeny, vyp´ın´any, aktualizov´any a odinstalov´av´any bez nutnosti restartu. OSGi framework je bˇeˇznˇe pouˇz´ıv´an v r˚ uzn´ ych odvˇetv´ıch pr˚ umyslu jako napˇr. v autech, mobilech, PDA, atd.[6] Komponenta se v OSGi naz´ yv´a OSGi bundle. OSGi bundle m˚ uˇze obsahovat libovoln´ y poˇcet tˇr´ıd zabalen´ ych v klasick´em .jar souboru. Jedin´ ym rozd´ılem je, ˇze soubor manifestu OSGi popisuje relace mezi bundly, jejich n´azvy, atd.[6]. OSGi bundly spolu komunikuj´ı skrze sluˇzby. Sluˇzby jsou implementac´ı konkr´etn´ıch rozhran´ı, kter´e jsou registrov´any v OSGi frameworku pomoc´ı OSGi bundl˚ u obsahuj´ıc´ıch tyto implementace. Sluˇzby jsou jednou z nejd˚ uleˇzitˇejˇs´ıch ˇc´ast´ı OSGi frameworku a jako komponentovˇe orientovan´e aplikace jsou vytv´aˇreny z bundl˚ u, kter´e jsou spojen´e s tˇemito sluˇzbami. Sluˇzby jsou registrov´any pˇr´ımo v k´odu bundlu. OSGi bundle potˇrebuje vˇedˇet kontext bundlu, kter´ y je drˇzen na vstupn´ım bodu bundlu s n´azvem bundle activator. 4 Open
Services Gateway initiative — modul´arn´ı syst´em pro Javu
6
Komponentov´y pˇr´ıstup k tvorbˇe softwaru Pˇr´ıklady komponentov´ych model˚ u
Sluˇzby mohou b´ yt jednoduˇse registrov´any, jak je vidˇet na Obr.2.2)[6]. Kaˇzd´ y OSGi bundle m˚ uˇze poskytovat svoje tˇr´ıdy a interfacy t´ım, ˇze je zveˇrejn´ı. Po jejich zveˇrejnˇen´ı je mohou vyuˇz´ıvat ostatn´ı bundly ve frameworku. Tato funkcionalita je dalˇs´ı formou komponentov´e interakce a m˚ uˇze b´ yt nejl´epe vysvˇetlena porovn´an´ım v˚ uˇci sd´ılen´ ym knihovn´am v operaˇcn´ıch syt´emech[6].
Obr´azek 2.2: Pˇr´ıklad registrace sluˇzby v OSGi, pˇrevzato z [6]
2.3.2
Spring
Spring framework poskytuje r˚ uzn´e vlastnost´ı pro podporu v´ yvoje podnikov´ ych aplikac´ı. Mezi nejcharakteristiˇctˇejˇs´ı vlastnosti tohoto frameworku patˇr´ı vzd´alen´ y pˇr´ıstup, ˇr´ızen´ı transakc´ı, datov´ y pˇr´ıstup aspektovˇe orientovan´eho programov´an´ı a IoC (Inversion of Control), coˇz je proces, pˇri kter´em si komponenty definuj´ı sv´e z´avislosti.[6] Spring tak´e poskytuje snadnou konfiguraci element˚ u pomoc´ı konfiguraˇcn´ıho XML souboru. Tento soubor mus´ı obsahovat XML namespace pro Spring beany. Spring beana je z´akladn´ı element v konfiguraˇcn´ım XML souboru. Lze j´ı popsat tak´e jako komponentu nebo jako implementaci konkr´etn´ı tˇr´ıdy. V konfiguraˇcn´ım souboru je moˇzn´e definovat z´avislosti mezi komponentami, jak je vidˇet v jednoduch´em pˇr´ıkladu viz Obr.2.3[6].
Obr´azek 2.3: Pˇr´ıklad definice beany ve Springu, pˇrevzato z [6] 7
Komponentov´y pˇr´ıstup k tvorbˇe softwaru Pˇr´ıklady komponentov´ych model˚ u
2.3.3
Spring DM
Spring DM pro platformu OSGi sluˇzeb umoˇzn ˇuje vyv´ıjet OSGi komponenty pomoc´ı Spring frameworku. Nav´ıc vylepˇsuje ovladatelnost OSGi sluˇzeb pˇrevzato z [6]. Spring DM je distribuov´an jako nˇekolik OSGi bundl˚ u, kter´e se instaluj´ı a spouˇst´ı v c´ılov´em OSGi frameworku. Jeden z bundl˚ u pak zkontroluje kaˇzd´ y nov´ y bundle instalovan´ y do frameworku a provˇeˇr´ı, jestli je to Spring DM bundle nebo ne. OSGi bundle je transformov´an na Spring DM bundle jednoduch´ ym pˇrid´an´ım konfiguraˇcn´ıch XML soubor˚ u Springu do meta-information adres´aˇre bundlu. Nov´e nastaven´ı tohoto XML souboru mus´ı obsahovat nov´ y namespace Spring-OSGi, aby byla zachov´ana podpora vlastnost´ı OSGi. Pˇr´ıklad registrace do Spring DM je vidˇet na Obr.2.4[6].
Obr´azek 2.4: Pˇr´ıklad registrace sluˇzby ve Springu DM Pouˇzit´ım Spring DM tedy dost´av´ame z´aklad modelu OSGi a moˇznost zjednoduˇsen´e pr´ace se sluˇzbami a vlastnosti Springu pˇri v´ yvoji komponentov´e aplikace.
8
ˇ ızen´ı kˇ 3 R´ riˇ zovatek v silniˇ cn´ı dopravˇ e V t´eto kapitole se pod´ıv´ame na moˇznosti ˇr´ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe. Z´ısk´ame teoretick´e povˇedom´ı o tom, jak´e existuj´ı aspekty pro ˇr´ızen´ı kˇriˇzovatek. A tyto informace budeme moci vyuˇz´ıt pˇri n´avrhu a porovn´av´an´ı s praktickou ˇc´ast´ı projektu.
3.1
Historie
ˇ ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe m´a svou bohatou historii, na kterou R´ je u ´ˇceln´e pˇri hled´an´ı nov´ ych optimalizovan´ ych ˇreˇsen´ı nav´azat. Prvn´ı ˇreˇsen´ı vznikala zaˇca´tkem minul´eho stolet´ı a jsou spojena s rozvojem automobilov´eho pr˚ umyslu. Zpoˇc´atku ˇr´ıdili kˇriˇzovatky str´aˇzn´ıci, pozdˇeji se zaˇcaly na vybran´ ych kˇriˇzovatk´ach pouˇz´ıvat mechanick´e a pot´e i semafory svˇeteln´e. Jejich pouˇzit´ı bylo pˇrevzato z ˇzelezniˇcn´ı a tramvajov´e dopravy. V ˇceˇstinˇe z´ıskalo svˇeteln´e ˇr´ızen´ı dopravy oznaˇcen´ı Svˇeteln´a signalizaˇcn´ı zaˇr´ızen´ı“ se zavede” nou zkratkou SSZ. V´ yznamn´a historick´a data zav´adˇen´ı SSZ ve svˇetˇe: ∙ r.1868 Lond´ yn, prvn´ı instalace svˇeteln´eho semaforu v dopravˇe[7] ∙ r.1918 Salt Lake City, realizovan´a prvn´ı zelen´a vlna“1 [7] ” ∙ r.1960 Toronto, bylo pˇredstaveno prvn´ı integrovan´e ˇr´ızen´ı dopravy ve mˇestˇe[7]
3.2
Bezpeˇ cnost
Z d˚ uvod˚ u bezpeˇcnosti silniˇcn´ı dopravy mus´ı projektov´an´ı a provozov´an´ı SSZ splˇ novat Z´akon o provozu na pozemn´ıch komunikac´ıch (ˇc.361/2000 Sb.) a 1 pojem
pro synchronizovan´e f´ aze semafor˚ u tak, aby vozidlo jedouc´ı doporuˇcenou rychlost´ı zastihlo na vˇsech semaforech sign´al volno
9
ˇ ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe R´
Druhy kˇriˇzovatek
ˇ se jedn´a o souhrn CSN ˇ tak´e ˇradu technick´ ych norem. V CR norem vznikl´ ych pˇreloˇzen´ım evropsk´ ych norem EN[8].
3.3
Druhy kˇ riˇ zovatek
Kˇriˇzovatka je m´ısto, kde se pozemn´ı komunikace v p˚ udorysn´em pr˚ umˇetu prot´ınaj´ı nebo st´ ykaj´ı a alespoˇ n 2 z nich jsou vz´ajemnˇe propojeny. Druhy kˇriˇzovatek[9]: ∙ u ´rovˇ nov´e ´ ∙ mimo´ urovˇ nov´e(MUK) Z hlediska SSZ n´as zaj´ımaj´ı u ´rovˇ nov´e kˇriˇzovatky, kter´e rozdˇelujeme na: a) stykov´a (kolm´a / ˇsikm´a) b) pr˚ useˇcn´a c) vidlicovit´a d) odsazen´a e) hvˇezdicovit´a (alespoˇ n 5 paprsk˚ u) f) okruˇzn´ı Sch´emata tˇechto kˇriˇzovatek jsou vidˇet na Obr.3.1.
3.4 3.4.1
Technick´ aˇ reˇ sen´ı SSZ Svˇ eteln´ e semafory
Z´akladem technick´eho ˇreˇsen´ı SSZ pˇr´ısluˇsn´e kˇriˇzovatky je ˇradiˇc vˇetˇsinou um´ıstˇen´ y ve skˇr´ıˇ nce v bl´ızkosti kˇriˇzovatky. Vˇetˇsinou existuje moˇznost ovl´adat signalizaci kˇriˇzovatky manu´alnˇe policistou. Modernˇejˇs´ı SSZ b´ yv´a napojeno 10
ˇ ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe R´
Technick´a ˇreˇsen´ı SSZ
Obr´azek 3.1: Ilustraˇcn´ı sch´ema druh˚ u kˇriˇzovatek, pˇrevzato z [9] d´alkovˇe na centr´aln´ı dispeˇcink, z nˇehoˇz m˚ uˇze dopravu ˇr´ıdit pˇr´ısluˇsn´ y pracovn´ık na d´alku – zpˇetnou vazbu mu poskytuje kamerov´ y syst´em. Stˇr´ıd´an´ı svˇetel na semaforech se sestavuje v souladu s technick´ ymi pˇredpisy, kter´e respektuj´ı rychlost reakce ˇridiˇc˚ u, vozidel a chodc˚ u. Rychlost zmˇeny sign´alu mus´ı poˇc´ıtat zejm´ena s ˇcasem pro opuˇstˇen´ı kˇriˇzovatky. Souˇcasnˇe pˇr´ıliˇs dlouh´ y ˇcas ˇcek´an´ı na sign´al m˚ uˇze sv´adˇet ˇridiˇce k pˇredˇcasn´e j´ızdˇe na ˇcervenou[10].
3.4.2
Detekce vozidel
Starˇs´ı SSZ pouˇz´ıvaj´ı ˇcasovˇe pevnˇe nastaven´e cykly, kter´e se v pˇredem stanoven´em poˇrad´ı stˇr´ıdaj´ı. Tyto cykly se maxim´alnˇe jen nˇekolikr´at za den mˇen´ı dle pˇredpokl´adan´eho provozu v pˇr´ısluˇsn´e denn´ı dobˇe. I tato starˇs´ı technologie umoˇzn ˇuje vytv´aˇren´ı zelen´e vlny, coˇz je sladˇen´ı sign´al˚ u na semaforech na navazuj´ıc´ıch kˇriˇzovatk´ach. Novˇejˇs´ı SSZ pouˇz´ıvaj´ı dynamick´e ˇr´ızen´ı provozu, kter´e nastavuje d´elku a poˇrad´ı svˇeteln´ ych cykl˚ u na z´akladˇe pasivn´ı i aktivn´ı detekce u ´ˇcastn´ık˚ u provozu. Pro pasivn´ı detekci vozidel se pouˇz´ıvaj´ı tlakov´a, optick´a nebo kamerov´a bezkontaktn´ı ˇcidla, poˇc´ıtaˇce n´aprav, tramvaje a trolejbusy jsou vˇetˇsinou registrov´any pomoc´ı trolejov´ ych kontakt˚ u reaguj´ıc´ıch na elektrick´ y sbˇeraˇc, autobusy MHD radiov´ ym sign´alem. Pro chodce a cyklisty se uˇz´ıv´a aktivn´ı detekce pomoc´ı tlaˇc´ıtka na semaforov´ ych sloupc´ıch. Modern´ı semafory jsou souˇcasnˇe vybaveny zvukovou signalizac´ı pro nevidom´e[10].
11
ˇ ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe R´
3.5 3.5.1
Z´akladn´ı pojmy ˇr´ızen´ı kˇriˇzovatek
Z´ akladn´ı pojmy ˇ r´ızen´ı kˇ riˇ zovatek Pojem f´ aze“ ”
V souˇcasn´e dobˇe jsou kˇriˇzovatky ˇr´ızen´e v´ yhradnˇe SSZ, tj. souborem semafor˚ u, kter´e maj´ı v re´aln´em ˇcase v˚ uˇci sobˇe navz´ajem pevnˇe nastaveny svˇeteln´a oznaˇcen´ı (ˇcerven´a = st˚ uj“ , zelen´a = volno“) v jednotliv´ ych dopravn´ıch ” ” ” proudech“ tak, aby nemohlo doj´ıt ke kolizi vozidel, pˇr´ıpadnˇe vozidel s chodci. Toto vz´ajemn´e nastaven´ı svˇetel se naz´ yv´a svˇeteln´a f´aze“. Stˇr´ıd´an´ı tˇechto ” f´az´ı“ postupnˇe umoˇzn´ı automobil˚ um pr˚ ujezd kˇriˇzovatkou vˇsemi smˇery bez ” ohroˇzen´ı vz´ajemnou koliz´ı (u sloˇzitˇejˇs´ıch kˇriˇzovatek mus´ı ˇridiˇc souˇcasnˇe se sign´alem volno“ (zelen´a) respektovat pˇri odboˇcov´an´ı z´akladn´ı pravidla sil” niˇcn´ıho provozu (pˇrednost chodc˚ u na pˇrechodu nebo pˇrednost automobil˚ u jedouc´ıch v protismˇeru na zelenou rovnˇe). Kaˇzd´a kˇriˇzovatka m´a sv˚ uj sign´aln´ı ” program“ stˇr´ıd´an´ı f´az´ı“. Minim´aln´ı poˇcet f´az´ı jedn´e kˇriˇzovatky jsou dvˇe a ” d´ale plat´ı, ˇze souˇcasnˇe v ˇcinnosti m˚ uˇze b´ yt pouze jedna f´aze[11].
3.5.2
Druhy sign´ aln´ıch program˚ u“ ”
V provoze rozliˇsujeme statick´ y“ sign´aln´ı program“, kter´ y nereaguje na ” ” dopravn´ı proud a dynamick´ y“ sign´aln´ı program“, kter´ y reaguje na okamˇzit´e ” ” potˇreby provozu. Podle poˇzadavk˚ u na ˇr´ızen´ı kˇriˇzovatky existuje norm´aln´ı automatick´ y f´azov´ y“ reˇzim, ruˇcn´ı pˇrep´ın´an´ı f´azov´eho“ reˇzimu policistou, ” ” blik´an´ı oranˇzov´e na vˇsech semaforech a vypnut´a SSZ. Sign´aln´ı program“ ” statick´eho“ ˇr´ızen´ı provozu pracuje se zmˇenou jednotliv´ ych f´az´ı“. Ty mus´ı ” ” prob´ıhat s ˇcasovou prodlevou, kter´a respektuje vyklizen´ı kˇriˇzovatky automobily pˇred dalˇs´ı f´az´ı. Pro tuto ˇcasovou prodlevu se vyuˇz´ıv´a ve svˇeteln´em oznaˇcen´ı oranˇzov´a = pˇriprav se“ resp. dokonˇci pr˚ ujezd“. Doba potˇrebn´a ” ” na ˇcasovou prodlevu se stanovuje pro kaˇzdou kˇriˇzovatku a pro kaˇzdou f´azi“ ” samostatnˇe a z bezpeˇcnosti provozu vypl´ yv´a, ˇze se sign´aly pˇriprav se“ a ” dokonˇci pr˚ ujezd“ u ´plnˇe nepˇrekr´ yvaj´ı. Kromˇe stavu zmˇeny jednotliv´ ych f´az´ı“ ” ” je nezbytn´e i signalizaˇcnˇe oˇsetˇrit spuˇstˇen´ı funkce SSZ a ukonˇcen´ı funkce SSZ, tj. blikaj´ıc´ı semafory, pˇr´ıpadnˇe vypnut´ı semafor˚ u. Tyto pˇrechody je nezbytn´e ˇreˇsit pˇres nastaven´ı sign´alu ˇcerven´e na vˇsech svˇetlech a po dostateˇcn´e ˇcasov´e prodlevˇe nastavit blik´an´ı oranˇzov´e a pot´e zcela vypnout SSZ[11].
12
ˇ ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe R´
3.5.3
Strategie ˇr´ızen´ı kˇriˇzovatek
Dynamick´ e“ ˇ r´ızen´ı kˇ riˇ zovatky ”
Sign´aln´ı program“ dynamick´eho“ ˇr´ızen´ı provozu nav´ıc pracuje s de” ” ´ tekc´ı pˇr´ıtomnosti vozidel v jednotliv´ ych dopravn´ıch proudech“. Udaje z ” detekc´ı jsou zpracov´av´any a samoˇcinnˇe upravuj´ı sled a d´elku jednotliv´ ych f´az´ı“. Tento proces se oznaˇcuje jako voln´a tvorba sign´aln´ıho programu“. ” ” Dynamick´e ˇr´ızen´ı“ SSZ funguje na principu spouˇstˇen´ı f´az´ı“ na ˇz´adost. Tato ” ” ˇz´adost je vyvolan´a aktivac´ı pˇr´ısluˇsn´eho detektoru. Ovlivˇ nuje-li detektor v´ıce f´az´ı“, je logickou funkc´ı vybran´a ta, kter´a vyhovuje poˇzadavk˚ um nejv´ıce ” smˇer˚ u. V dynamick´em ˇr´ızen´ı“ m´a f´aze“ promˇennou d´elku trv´an´ı, kter´a je ” ” omezen´a zdola i shora. Minim´aln´ı d´elka trv´a 5 sec., maxim´aln´ı d´elka pro tˇri f´aze b´ yv´a 20 sec. V pˇr´ıpadˇe detekce vozidla MHD neb´ yv´a dodrˇzov´an´ı maxim´aln´ıho limitu tak striktn´ı a je snaha, aby vozidlo zelenou stihlo. Vedle statick´eho“ a dynamick´eho“ ˇr´ızen´ı SSZ existuje jeˇstˇe modernˇejˇs´ı ˇreˇsen´ı tzv. ” ” adaptivn´ı“ ˇr´ızen´ı. V nˇem nem´a ˇr´ıd´ıc´ı syst´em kˇriˇzovatky ˇz´adn´ y konkr´etn´ı ” sign´aln´ı program a kaˇzd´a kˇriˇzovatka je ˇr´ızena komplexnˇe v r´amci rozlehl´e dopravn´ı oblasti[11].
3.6
Strategie ˇ r´ızen´ı kˇ riˇ zovatek
Pro optim´aln´ı ˇr´ızen´ı konkr´etn´ı kˇriˇzovatky je d˚ uleˇzit´e zvolit spr´avnou strategii[7].
3.6.1
Strategie ze z´ıskan´ ych dopravn´ıch dat
Podle vlivu dopravn´ıch dat z´ıskan´ ych v re´aln´em ˇcase pro ˇr´ızen´ı dopravy na tuto charakteristiku existuj´ı dvˇe strategie[7]: ∙ strategie s hotov´ ym programem. Sign´aln´ı program“ je vypoˇc´ıt´an pˇre” dem s pouˇzit´ım statistick´ ych dat. ∙ Strategie s programem v re´aln´em ˇcase. Data o dopravn´ı situaci z´ıskan´a v re´aln´em ˇcase jsou pouˇzita k ˇr´ızen´ı kˇriˇzovatky pˇr´ıpadnˇe k modifikaci hotov´eho programu
13
ˇ ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe R´
3.6.2
Strategie ˇr´ızen´ı kˇriˇzovatek
Strategie v´ ykonnostn´ıch ukazatel˚ u
Nejˇcastˇeji pouˇz´ıvan´e ukazatele jsou[7]: ∙ pro ˇr´ızen´ı dopravy na izolovan´e kˇriˇzovatce — vˇsechny hodnoty zpoˇzdˇen´ı“ ” (souˇcet vˇsech zpoˇzdˇen´ı“ ve vˇsech smˇerech kˇriˇzovatky bˇehem urˇcit´eho ” ˇcasov´eho intervalu, obvykle se jedn´a o ˇcas jednoho cyklu“); poˇcet sig” n´al˚ u st˚ uj“; v´aˇzen´ y souˇcet hodnot zpoˇzdˇen´ı“ a poˇctu sign´al˚ u st˚ uj“ ; ” ” ” souˇcet vˇsech zelen´ ych“ ˇcas˚ u v pr˚ ubˇehu cyklu“; vˇsechny intenzity“ ” ” ” dopravn´ıho proudu“ pˇreplnˇen´e kˇriˇzovatky bˇehem cyklu“; poˇcet ne” ” hod; doba trv´an´ı cyklu“ atd. ” ∙ pro ˇr´ızen´ı dopravn´ı tepny — rozpˇet´ı intervalu dopravn´ıho p´asu, tj. interval, ve kter´em je moˇzn´e projet kˇriˇzovatkou na zelenou vlnu“ bez ” zastaven´ı ∙ pro ˇr´ızen´ı dopravy s´ıtˇe vz´ajemnˇe navazuj´ıc´ıch kˇriˇzovatek — souˇcet vˇsech hodnot zpoˇzdˇen´ı“ v s´ıti kˇriˇzovatek; souˇcet sign´al˚ u st˚ uj“ v s´ıti kˇriˇzova” ” tek; v´aˇzen´ y souˇcet hodnot zpoˇzdˇen´ı“ a poˇcet sign´al˚ u st˚ uj“vˇsech spo” ” jen´ı v s´ıti kˇriˇzovatek; souˇcet spotˇreby paliva vˇsech vozidel v s´ıti kˇriˇzovatek; u ´roveˇ n zneˇciˇstˇen´ı vzduchu zplodinami“; u ´roveˇ n hladiny hluku; ” poˇcet nehod atd.
3.6.3
Strategie dle dopravn´ı hustoty
Dle t´eto charakteristiky hodnot´ıme strategie ˇr´ızen´ı dopravy na[7]: ∙ Strategie pro slabou dopravu ∙ Strategie pro norm´aln´ı dopravu ∙ Strategie pro pˇret´ıˇzenou dopravu v s´ıti kˇriˇzovatek ∙ Strategie pro speci´aln´ı u ´ˇcely (napˇr. d´an´ı pˇrednosti MHD, d´an´ı pˇrednosti hasiˇc˚ um atd.)
3.6.4
Strategie dle syst´ emu ˇ r´ızen´ı dopravy
Pro tuto charakteristiku existuj´ı dva typy ˇr´ızen´ı dopravy[7]: 14
ˇ ızen´ı kˇriˇzovatek v silniˇcn´ı dopravˇe R´
Strategie ˇr´ızen´ı kˇriˇzovatek
∙ Strategie, kter´a pouˇz´ıv´a centr´aln´ı syst´em ˇr´ızen´ı dopravy, kde jsou vˇsechny ˇr´ıd´ıc´ı funkce obsluhov´any z jednoho centr´aln´ıho poˇc´ıtaˇce ∙ Strategie postaven´a na dekompozici problematiky ˇr´ızen´ı – ˇc´ast ˇr´ıd´ıc´ıho probl´emu je ˇreˇsena mikroprocesorov´ ymi ovladaˇci jednotliv´ ych kˇriˇzovatek, zbytek problematiky je ˇr´ızen centr´aln´ım poˇc´ıtaˇcem.
3.6.5
Strategie dle rozvrˇ zen´ı dopravy
Na z´akladˇe t´eto charakteristiky m˚ uˇzeme uv´est dvˇe strategie[7]: ∙ Strategie, kter´a vych´az´ı z toho, ˇze rozvrˇzen´ı dopravy v s´ıti kˇriˇzovat je nez´avisl´e na ˇr´ızen´ı dopravn´ıch svˇetel ∙ Strategie, kter´a vych´az´ı z toho, ˇze oboje(nastaven´ı sign´aln´ıch parametr˚ u a dopravn´ı tok v dan´em smˇeru) nejsou fixn´ı, tj. strategie, kter´a optimalizuje vybran´ y v´ ykon indexu a m´a vliv na rozvrˇzen´ı dopravy
15
4 Komponentov´a aplikace kˇriˇzovatky 4.1
Anal´ yza
Ze zad´an´ı projektu je patrn´e, ˇze pˇred zah´ajen´ım samotn´eho vytv´aˇren´ı komponentov´e aplikace ˇr´ızen´ı silniˇcn´ı kˇriˇzovatky pro komponentov´ y model Spring DM bylo nutn´e se sezn´amit s prostˇred´ım, ve kter´em bude tento projekt vyv´ıjen a sezn´amit se tak´e s konfigurac´ı a prac´ı s komponentami. Pot´e bude potˇreba navrhnout, jak bude aplikace fungovat a jak se bude postupovat pˇri jej´ım vytv´aˇren´ı. Pro ponoˇren´ı se do probl´emu komponentov´eho programov´an´ı bylo vhodn´e vyzkouˇset si pr´aci s komponentami na dvou vzorov´ ych pˇr´ıkladech podle n´avodu, kter´ y mi byl dod´an. Po zkuˇsenosti s fungov´an´ım komponent pak bylo potˇreba vybrat si mezi dvˇema zp˚ usoby komunikace mezi komponentami. Byl zvolen zp˚ usob komunikace s vyuˇzit´ım rozhran´ı, nebot’ pro potˇreby aplikace plnˇe dostaˇcoval a byl implementaˇcnˇe jednoduˇsˇs´ı neˇz druh´ y zp˚ usob, kter´ y vyuˇz´ıval spr´avce ud´alosti pro pˇred´av´an´ı zpr´av.
4.1.1
N´ avrh kˇ riˇ zovatky
Jak jiˇz bylo uvedeno v kapitole 3.4, existuje mnoho element˚ u, kter´e mohou m´ıt vliv na ˇr´ızen´ı silniˇcn´ı kˇriˇzovatky a c´ılem bylo pˇribl´ıˇzit se co moˇzn´a nejv´ıce skuteˇcn´e situaci na re´aln´e kˇriˇzovatce. Prvn´ı n´avrh kˇriˇzovatky tedy vypad´a n´asledovnˇe viz Obr.4.1. Na obr´azku nen´ı zobrazena komponenta Traffic crossroad jej´ıˇz funkc´ı je simulov´an´ı provozu re´aln´e kˇriˇzovatky viz na pˇredchoz´ım sch´ematu. Tato komponenta byla dod´ana zadavatelem a cel´a komponentov´a aplikace ze sch´ematu bude vyuˇz´ıvat sluˇzby t´eto komponenty poskytovan´e pˇres jej´ı rozhran´ı. Je tedy potˇreba navrhnout, jak cel´a aplikace bude fungovat, resp. jak´ ym zp˚ usobem bude prob´ıhat komunikace mezi komponentami ze sch´ematu a dodanou komponentou Traffic crossroad. Vzhledem k tomu, ˇze Traffic crossroad obsahuje informace o vˇsech elementech1 kˇriˇzovatky nutn´ ych pro jej´ı ˇr´ızen´ı, bude se kaˇzd´a z komponent viz Obr.4.1 starat o tyto jednotliv´e elementy. Aplikace 1 napˇ r.
pruhy, semafory, auta, atd..
16
Komponentov´a aplikace kˇriˇzovatky
Anal´yza
Obr´azek 4.1: Sch´ema komponentov´e aplikace kˇriˇzovatky bez komponenty Traffic crossroad simuluj´ıc´ı kˇriˇzovatku, pˇrevzato z [12] se takto dle princip˚ u komponentov´eho programov´an´ı rozdˇel´ı na menˇs´ı ˇc´asti, kter´e je snadnˇejˇs´ı pozdˇeji nahradit. T´eto vlastnosti vyuˇzijeme napˇr´ıklad u komponenty Traffic control algorithm2 viz 4.1.1, zajiˇst’uj´ıc´ı algoritmus ˇr´ızen´ı kˇriˇzovatky. Lehce ji m˚ uˇzeme vymˇenit za jinou komponentu s jin´ ym algoritmem aniˇz by bylo nutn´e zasahovat do dalˇs´ıch ˇc´ast´ı aplikace. Nyn´ı pop´ıˇseme n´avrhy funkˇcnost´ı konkr´etn´ıch komponent tak, aby odpov´ıdaly re´aln´e kˇriˇzovatce a z´aroveˇ n byly schopny spolupracovat na ˇr´ızen´ı simulovan´e kˇriˇzovatky komponenty Traffic crossroad. 2 tento
n´ azev budeme zat´ım pouˇz´ıvat obecnˇe pro komponentu implementuj´ıc´ı bl´ıˇze nespecifikovan´ y algoritmus ˇr´ızen´ı kˇriˇzovatky
17
Komponentov´a aplikace kˇriˇzovatky
Anal´yza
Traffic crossroad Externˇe dodan´a kˇriˇzovatka, kter´a simuluje bˇeh re´aln´e kˇriˇzovatky. S touto komponentou budou komunikovat t´emˇeˇr vˇsechny komponenty aplikace.
Vehicle observation Tato komponenta funguje jako senzor vozidel zajiˇstˇen´ y pˇr´ım´ ym pozorovatelem. Re´alnˇe by jej´ı funkci zast´aval napˇr´ıklad ˇclovˇek, kter´ y by zaznamen´aval poˇcet vozidel proj´ıˇzdˇej´ıc´ıch pruhem. T´ımto senzorem bychom pak mˇeli dostat u ´plnou informaci o poˇctu aut v pruhu.
Optic detection Komponenta zast´avaj´ıc´ı funkci senzoru na principu optick´e detekce. V praxi by se takto detekoval poˇcet aut pomoc´ı rozpozn´av´an´ı obrazu z dat zachycen´ ych kamerou, kter´a je um´ıstˇena na kˇriˇzovatce. Tento senzor podle moˇznost´ı rozpozn´av´an´ı obrazu pod´a informace a poˇctu aut v pruhu aˇz do vzd´alenosti, kam je schopen auta rozpoznat.
Induction loop Komponenta Induction loop pln´ı funkci indukˇcn´ı smyˇcky. Tento typ senzoru je v praxi nainstalov´an pod vozovkou a je schopen rozpoznat, zda nad n´ım stoj´ı, nebo nestoj´ı nˇejak´e vozidlo. Indukˇcn´ı smyˇcka se m˚ uˇze nach´azet v r˚ uzn´e vzd´alenosti od hranice kˇriˇzovatky a v z´avislosti na tom je moˇzn´e usoudit, ˇze aˇz do tohoto m´ısta stoj´ı fronta vozidel. Nicm´enˇe toto nen´ı relevantn´ı u ´daj, protoˇze mezi autem nad smyˇckou a kˇriˇzovatkou m˚ uˇze b´ yt pr´azdn´a mezera. Smyˇcka tedy pod´av´a informaci pouze o tom, stoj´ı-li nad n´ı auto.
Sensor access Sensor access je komponenta, kter´a m´a pˇr´ıstup ke vˇsem senzor˚ um na kˇriˇzovatce. Tˇemito senzory jsou Vehicle observation, Induction loop a Optic
18
Komponentov´a aplikace kˇriˇzovatky
Anal´yza
detection. Komponenta shromaˇzd’uje informace ze senzor˚ u a pln´ı roli prostˇredn´ıka mezi senzory a komponentami poˇzaduj´ıc´ımi data o poˇctu aut ze senzor˚ u. V re´alu si jej lze pˇredstavit jako zaˇr´ızen´ı ukl´adaj´ıc´ı data ze senzor˚ u na datov´e u ´loˇziˇstˇe.
Statistics collector Komponenta shromaˇzd’uj´ıc´ı a vyhodnocuj´ıc´ı data z kˇriˇzovatky. Nahr´av´a shrom´aˇzdˇen´a data ze Sensor access. M˚ uˇze vyhodnocovat dlouhodob´e statistiky z bˇehu kˇriˇzovatky a podle toho pos´ılat komponentˇe traffic control algorithm n´avrhy na zmˇeny v algoritmu ˇr´ızen´ı kˇriˇzovatky.
Traffic control algorithm Hlavn´ı ˇr´ıd´ıc´ı komponenta kˇriˇzovatky. Obsahuje algoritmus pro mˇenˇen´ı f´az´ı kˇriˇzovatky a d´av´a pokyny komponentˇe Light Signal controller pro zmˇenu svˇetel na semaforech. Od Sensor access dost´av´a informace o pˇr´ıtomnosti vozidel v pruz´ıch a od Variable sign controller m˚ uˇze dostat zpr´avu o zmˇenˇe povolen´e rychlosti v pruhu. Tˇemto dat˚ um pak m˚ uˇze b´ yt doˇcasnˇe pˇrizp˚ usoben algoritmus ˇr´ızen´ı.
Control Panel Komponenta, kter´a se d´a charakterizovat jako ovl´adac´ı panel kˇriˇzovatky. Odtud je moˇzn´e nastavovat senzory pro sbˇer dat, vyp´ınat SSZ a zobrazovat statistiky shrom´aˇzdˇen´e v Statistics collectoru.
Light signal controller Light signal controller je komponenta, kter´a pln´ı funkci prostˇredn´ıka mezi Traffic control algorithm a Traffic crossroad. Jej´ı funkc´ı je mˇenit svˇetla na kˇriˇzovatce.
19
Komponentov´a aplikace kˇriˇzovatky
Anal´yza
Variable sign controller Tato komponenta nen´ı bˇeˇznou souˇc´ast´ı kaˇzd´e kˇriˇzovatky. Lze si ji pˇredstavit jako informativn´ı dopravn´ı znaˇcku jako displej. Ta by zobrazovala napˇr. informaci o sn´ıˇzen´ı maxim´aln´ı povolen´e rychlosti. Toto ˇr´ızen´ı mohou vyuˇz´ıvat nˇekter´e algoritmy ˇr´ızen´ı kˇriˇzovatky.
4.1.2
Postup vytv´ aˇ ren´ı aplikace
Sestavov´ an´ı komponent pro statick´ y algoritmus ˇ r´ızen´ı Nejrychlejˇs´ı cestou k dosaˇzen´ı prvn´ı funkˇcn´ı aplikace ˇr´ızen´ı n´am staˇc´ı vytvoˇrit komponentu Traffic control algorithm pro statick´ y algoritmus ˇr´ızen´ı. Pro tento pˇr´ıpad nen´ı potˇreba zat´ım vytv´aˇret dalˇs´ı komponenty, protoˇze algoritmus je zde ˇreˇsen staticky a nepotˇrebuje pro svou ˇcinnost extern´ı data z jin´ ych komponent. Komponenta je zat´ım propojena pouze s Traffic crossroad a pˇres interface t´eto komponenty bude jen nastavovat zmˇeny svˇetel pro jednotliv´e f´aze. V dalˇs´ım kroku je moˇzn´e aplikaci rozˇs´ıˇrit o dalˇs´ı komponentu — Light signal controller. Ta se stane prostˇredn´ıkem mezi komponentou Traffic crossroad a komponentou Traffic control algorithm a pˇrevezme od n´ı pˇrep´ın´an´ı svˇetel na konkr´etn´ıch pruz´ıch kˇriˇzovatky. Pˇripojen´ım komponenty Control panel pro ovl´ad´an´ı spouˇstˇen´ı a vyp´ın´an´ı algoritmu z´ısk´ame prvn´ı funkˇcn´ı komponentovou aplikaci pro ˇr´ızen´ı kˇriˇzovatky. Pˇripojen´ı dalˇs´ıch komponent pro statick´e ˇr´ızen´ı kˇriˇzovatky nem´a zat´ım moc v´ yznam.
Sestavov´ an´ı komponent pro dynamick´ y algoritmus ˇ r´ızen´ı VASC Jiˇz vytvoˇren´a komponentov´a aplikace n´am usnadˇ nuje pr´aci pˇri v´ yvoji cel´e komponentov´e aplikace podle sch´ema z Obr.4.1. Pro implementaci dynamick´eho algoritmu ˇr´ızen´ı bude potˇreba zapojit cel´ y zbytek komponent z obr´azku kromˇe komponenty Light signal controller, kter´a nem´a v dodan´e komponentˇe Traffic crossroad dle sv´eho popisu uplatnˇen´ı. Vytvoˇr´ı se tˇri komponenty senzor˚ u s podobnou funkˇcnost´ı — zjiˇst’ov´an´ım poˇctu, resp. pˇr´ıtomnosti vozidel v jednotliv´ ych pruz´ıch kˇriˇzovatky. Po z´ısk´an´ı
20
Komponentov´a aplikace kˇriˇzovatky
Implementace
tˇechto informac´ı z Traffic crossroad jsou tyto informace odesl´any do Sensor access. Komponenta Sensor access se spoj´ı s novou komponentou Traffic control algorithm VASC, kter´a nahradila m´ısto p˚ uvodn´ı komponenty Traffic control algorithm. T´eto nov´e komponentˇe pro dynamick´e ˇr´ızen´ı jsou odesl´any informace o pˇr´ıtomnosti voz˚ u v pruz´ıch a ta je vyhodnocuje v algoritmu a podle toho d´av´a pokyn ke zmˇenˇe f´aze svˇetel Light signal controlleru. Sensor access pos´ıl´a data jeˇstˇe posledn´ı komponentˇe ze sch´ematu Statistics collectoru. Ten sb´ır´a statistiky poˇctu vozidel v pruz´ıch. Tyto statistiky a moˇznost zvolit si typ senzoru pro sbˇer statistik jsou zobrazeny v pomoc´ı komponenty Control panel. Do t´eto komponentov´e aplikace je moˇzn´e kdykoliv vloˇzit zpˇet p˚ uvodn´ı komponentu Traffic crossroad algorithm se statick´ ym algoritmem ˇr´ızen´ı. Tento algoritmus sice funkce novˇe vznikl´ ych komponent neovlivˇ nuj´ı, ale je novˇe umoˇznˇeno sb´ırat ve Statistics collectoru data i se senzor˚ u jako u Traffic control algorithm VASC. Pak lze dˇelat alespoˇ n statistiku proj´ıˇzdˇej´ıc´ıch vozidel pro porovn´an´ı obou algoritm˚ u.
4.2 4.2.1
Implementace Sezn´ amen´ı s prostˇ red´ım
Pro v´ yvoj aplikace bylo pouˇzito v´ yvojov´e prostˇred´ı Eclipse pro J2EE verzi Eclipse IDE for Java EE Developers“. Toto prostˇred´ı bylo tˇreba nakonfigu” rovat pro pr´aci se Spring DM, k ˇcemuˇz staˇcilo doinstalovat Spring Source Tool Suite, importovat aktu´aln´ı verzi bal´ık˚ u Spring Dynamic Modules a importovat z nich bundly. Pro vytvoˇren´ı graf˚ u statistik byla do Control Panelu importov´ana opensourcov´a knihovna JFreeChart pro programovac´ı jazyk Java.
4.2.2
Sch´ ema komponentov´ e aplikace
Koneˇcn´e sch´ema implementace komponentov´e aplikace je vidˇet na Obr.4.2. Komponenta Traffic control algorithm je zn´azornˇena obecnˇe pro oba algoritmy. 21
Komponentov´a aplikace kˇriˇzovatky
Implementace
Obr´azek 4.2: V´ ysledn´ y implementovan´ y komponentov´ y model aplikace Jsou na nˇem zobrazeny vˇsechny implementovan´e komponenty a zn´azornˇena komunikace, kter´a prob´ıh´a pomoc´ı interfac˚ u mezi nimi. Kromˇe Control Panel kaˇzd´a komponenta implementuje sv˚ uj interface, kde jsou jasnˇe definov´any metody, kter´e komponenta poskytuje. T´emˇeˇr vˇsechny komponenty komunikuj´ı s rozhran´ım hlavn´ı komponenty Traffic crossroad, kter´a jim poskytuje vˇsechny potˇrebn´e metody pro jejich funkci.
4.2.3
Traffic crossroad
Zde je obsaˇzeno grafick´e uˇzivatelsk´e rozhran´ı, kter´e ze souboru naˇcte a zobraz´ı kˇriˇzovatku a pravdˇepodobnosti generov´an´ı vozidel na jednotliv´ ych pruz´ıch. Po spuˇstˇen´ı simulace se rozebˇehne vl´akno generuj´ıc´ı bˇeh kˇriˇzovatky. 22
Komponentov´a aplikace kˇriˇzovatky
Implementace
Traffic crossroad poskytuje t´emˇeˇr vˇsem komponent´am rozhran´ı metod postaˇcuj´ıc´ıch pro ˇr´ızen´ı kˇriˇzovatky. jako jsou poˇcty aut v pruz´ıch, nastaven´ı svˇetel na semaforech, aktu´aln´ı ˇcas.
4.2.4
Traffic control algorithm
Obsahuje spoustu metod naˇcten´ı pruh˚ u, spr´avn´e pˇrep´ın´an´ı oranˇzov´e na semaforu, ale hlavnˇe obsahuje algoritmus — definici f´az´ı pro pˇrep´ın´an´ı svˇetel. Bˇeˇz´ı na samostatn´em vl´aknˇe a pomoc´ı naˇc´ıt´an´ı ˇcasu z vl´akna komponenty Traffic crossroad pˇrep´ın´a f´aze semaforu v pˇresn´ ych intervalech.
4.2.5
Traffic control algorithm VASC
Stejnˇe jako pˇredchoz´ı komponenta bˇeˇz´ı na samostatn´em vl´aknˇe a mˇen´ı f´aze podle aktu´aln´ıho ˇcasu z Traffic crossroad. Narozd´ıl od pˇredchoz´ı komponenty, vyuˇz´ıv´a zpr´avy ze Sensor Access. Vybere si jeden ze senzor˚ u a dostane informaci o tom, zda se vozidla nach´az´ı v pruz´ıch, tuto informaci pak vyuˇz´ıv´a pˇri prodluˇzov´an´ı interval˚ u.
4.2.6
Light signal controller
Implementuje nastaven´ı konkr´etn´ıch svˇetel na konkr´etn´ıch semaforech, kter´e mu poskytuje Traffic Crossroad. Obsahuje metodu pro z´ısk´an´ı doby trv´an´ı oranˇzov´e na semaforu podle toho, jestli je pˇred zelenou, nebo pˇred ˇcervenou.
4.2.7
Variable sign controller
Tato komponenta je souˇca´st´ı komponentov´e aplikace a je pˇripravena k pouˇzit´ı, nicm´enˇe neobsahuje ˇza´dnou implementaci, protoˇze pro souˇcasnou implementaci Traffic crossroad nem´a uplatnˇen´ı.
23
Komponentov´a aplikace kˇriˇzovatky
4.2.8
Implementace
Induction loop
V Induction loop je implementov´ana metoda na zjiˇstˇen´ı, zda je vozidlo v pruhu a metoda poˇc´ıt´an´ı vozidel. Pro potˇreby Statistics collectoru maj´ı vˇsechny tˇri senzory metodu pro resetov´an´ı zaznamenan´ ych poˇct˚ u aut.
4.2.9
Optic detection
Obsahuje metody pro zjiˇstˇen´ı poˇctu vozidel a detekov´an´ı pˇr´ıtomnosti alespoˇ n jednoho vozidla na silnici. Metoda um´ı rozpoznat jedno, dvˇe nebo tˇri vozidla. Pˇri vˇetˇs´ım poˇctu vozidel rozpozn´a metoda maxim´alnˇe 4.
4.2.10
Vehicle observation
Obsahuje metody stejn´e jako Optic Detection s t´ım rozd´ılem, ˇze um´ı detekovat vˇsechna vozidla na vozovce. Pˇredpokl´ad´a se, ˇze by zde bylo moˇzn´e udˇelat funkˇcn´ı souˇcinnost s jedn´ım ˇci v´ıce pozorovateli.
4.2.11
Sensor access
Obdrˇz´ı data z komponent senzor˚ u. Je spojen s Control panelem pro v´ ybˇer nastaven´ı senzoru pro algoritmus a pro v´ ybˇer nastaven´ı senzoru pro statistiky. Tˇemto komponent´am pak poˇcty resp. informaci o obsazen´ı pruhu.
4.2.12
Statistics collector
Tato komponenta bˇeˇz´ı na vl´aknˇe, sˇc´ıt´a auta na kaˇzd´em pruhu d´ıky dat˚ um ze Sensor Access a naˇc´ıt´a si aktu´aln´ı ˇcas z Traffic crossroad. Tato data ve form´atu identifik´ator pruhu, poˇc´ateˇcn´ı ˇcas, koneˇcn´ y ˇcas a poˇcet aut ukl´ad´a do souboru XML. Ukl´ad´an´ı prob´ıh´a pomoc´ı knihovny java.beans.XMLEncoder. Toto ukl´ad´an´ı je zajiˇstˇeno ve tˇr´ıdˇe OutputData.java. Do jm´ena XML souboru se pˇrid´av´a datov´a znaˇcka pomoc´ı n´ıˇz se pak zobrazuje graf Control 24
Komponentov´a aplikace kˇriˇzovatky
Implementace
Panel, kaˇzd´e uloˇzen´ı se provede do nov´eho souboru.
4.2.13
Control panel
Obsahuje grafick´e uˇzivatelsk´e rozhran´ı, kter´e umoˇzn ˇuje na zaˇca´tku pˇred spuˇstˇen´ım simulace kˇriˇzovatky uˇzivateli nastavit intervaly pro 4 f´aze algoritmu VASC. Umoˇzn ˇuje vypnout ˇr´ızen´ı kˇriˇzovatky, ˇc´ımˇz zaˇcnou po p˚ ul vteˇrinˇe blikat oranˇzovˇe svˇetla. Umoˇzn ˇuje nastavit interval po jak´em se budou automaticky ukl´adat data. M´a i tlaˇc´ıtko na zapnut´ı nebo vypnut´ı sbˇeru statistik a tlaˇc´ıtko na uloˇzen´ı konkr´etn´ıch statistik do zvolen´eho souboru. Na panelu je moˇzn´e nastavit ze kter´eho senzoru budou sb´ır´any statistiky a ze kter´eho bude prob´ıhat detekce vozidla na pruhu pro bˇeh algoritmu.
25
5 Algoritmy ˇr´ızen´ı kˇriˇzovatky Komponentov´a aplikace zahrnuje dvˇe komponenty, kter´e obsahuj´ı implementaci algoritmu pro ˇr´ızen´ı kˇriˇzovatky. Tyto komponenty nemohou b´ yt v aplikaci spuˇstˇeny najednou, ale jedna se d´a plnohodnotnˇe nahradit druhou. Zad´an´ım bylo implementovat statick´ y algoritmus do jedn´e komponenty Traffic control algorithm a algoritmus VASC pro ˇr´ızen´ı vybran´e silniˇcn´ı kˇriˇzovatky do druh´e komponenty Traffic control algorithm VASC. Testovac´ı kˇriˇzovatka, na kter´e jsme mˇeli vyzkouˇset implementaci zmiˇ novan´ ych dvou algoritm˚ u ˇr´ızen´ı provozu, byla z´ısk´ana ze souboru map22.xml dodan´eho k projektu.
5.1
Sezn´ amen´ı se s kˇ riˇ zovatkou
Vybran´a kˇriˇzovatka se nach´az´ı v Plzni v m´ıstˇe kde se kˇriˇzuj´ı ulice Klatovsk´a a Sukova. Pro lepˇs´ı pochopen´ı ˇr´ızen´ı t´eto kˇriˇzovatky jsem ji byl pozorovat jeˇstˇe pˇredt´ım neˇz jsem zaˇcal s implementac´ı a zaznamenal jsem si, jak´ ym zp˚ usobem se v re´alu ˇr´ıd´ı. Bohuˇzel se uk´azalo, ˇze skuteˇcn´a kˇriˇzovatka neodpov´ıd´a u ´plnˇe kˇriˇzovatce viz Obr.5.1, kterou simuluje komponenta Traffic crossroad. Poˇcet pruh˚ u v kaˇzd´em smˇeru byl sice totoˇzn´ y, ale odboˇcovac´ı smˇery se ve tˇrech pruz´ıch liˇsily. Takov´ y detail je pˇri navrhov´an´ı zmˇeny f´az´ı kˇriˇzovatky pomˇernˇe z´asadn´ı. I tak jsem se pro n´avrh zp˚ usobu ˇr´ızen´ı kˇriˇzovatky inspiroval.
5.2
Statick´ y algoritmus
Jak statick´ y, tak i dynamick´ y algoritmus vych´azej´ı ze stejn´eho principu ˇr´ızen´ı kˇriˇzovatky, jak je pops´ano v 3.5.1. T´ımto principem je stˇr´ıd´an´ı nˇekolika f´az´ı kˇriˇzovatky — v kaˇzd´e jsou nastaveny vˇsechny semafory(v naˇsem pˇr´ıpadˇe jich je 11) na takovou barvu, aby nemohlo doj´ıt ke kolizi vozidel. Vˇsechny f´aze bˇeˇz´ı v ˇcasov´e smyˇcce a v pˇr´ıpadˇe statick´eho ˇr´ızen´ı maj´ı nastavenou pevnou dobu trv´an´ı, kter´a z˚ ust´av´a konstantn´ı. Poˇcet f´az´ı ˇr´ızen´ı kˇriˇzovatky je obvykle sud´ y — pouˇz´ıvaj´ı se 2 nebo 4 f´aze. Pro naˇsi kˇriˇzovatku byl na z´akladˇe pozorov´an´ı re´aln´e kˇriˇzovatky navrˇzen poˇcet f´az´ı na 4. Jednotliv´e f´aze pro Traffic control algorithm m˚ uˇzeme vidˇet na ˇctyˇrech obr´azc´ıch viz Pˇr´ıloha A.2. Jsou na nich vyobrazena rozsv´ıcen´a zelen´a svˇetla v konkr´etn´ıch pruz´ıch v kaˇzd´e ze ˇctyˇr f´az´ı. V kaˇzd´em stavu jsou rozsv´ıceny 3 nebo 4 zelen´e. Pˇresnˇe podle 26
Algoritmy ˇr´ızen´ı kˇriˇzovatky
Statick´y algoritmus
Obr´azek 5.1: Ilustraˇcn´ı obr´azek simulace provozu na testovan´e kˇriˇzovatce toho, jak je vidˇet na obr´azc´ıch, jsou jednotliv´e f´aze implementov´any stejnˇe v obou komponent´ach. D´elka trv´an´ı jedn´e f´aze m˚ uˇze b´ yt r˚ uzn´a. Nen´ı dobr´e nech´avat ˇcekat jednotliv´e pruhy dlouhou dobu. Na druhou stranu ani nastaven´ı pˇr´ıliˇs kr´atk´e doby intervalu — cca do 10 sekund nen´ı ide´aln´ı. Simulovan´a kˇriˇzovatka byla implementov´ana tak, ˇze vozidla nemohou vyjet do kˇriˇzovatky na oranˇzovou. To znamen´a, ˇze 3 sekundy kˇriˇzovatka stoj´ı, neˇz uplyne jednosekundov´a oranˇzov´a pˇred zelenou a dvousekundov´a oranˇzov´a pˇred ˇcervenou. To sice zabraˇ nuje tomu, ˇze na kˇriˇzovatku nevjedou dvˇe vozidla najednou do kolize, nicm´enˇe pˇri kr´atk´em intervalu trv´an´ı f´aze jsou pˇri fungov´an´ı algoritmu 3 sekundy st´an´ı v˚ uˇci napˇr´ıklad 5 sekund´am zelen´e zn´at. Nav´ıc kdyˇz jsou vozidla ˇcasto zastavov´ana, mus´ı se pomalu rozj´ıˇzdˇet, coˇz je oproti plynulejˇs´ımu pr˚ ujezdu na zelenou dalˇs´ı ztr´ata. Algoritmus by proto mˇel b´ yt horˇs´ı neˇz dynamick´ y VASC, kter´ y byl implementov´an v komponentˇe Traffic control algorithm VASC.
27
Algoritmy ˇr´ızen´ı kˇriˇzovatky
5.3
VASC algoritmus
VASC algoritmus
VASC je dynamick´ y algoritmus, kter´ y se v niˇcem neliˇs´ı od statick´eho algoritmu aˇz do chv´ıle, kdy vyprˇs´ı minim´aln´ı interval f´aze. V tomto okamˇziku pˇrich´az´ı na ˇradu senzor, kter´ y ve smyˇcce periodicky detekuje, zda je v pruz´ıch, kter´e maj´ı pr´avˇe zelenou, alespoˇ n jedno vozidlo. Takto kontroluje aˇz dokud neodjedou vˇsechna vozidla z pruh˚ u, nebo dokud nevyprˇs´ı maxim´aln´ı interval trv´an´ı f´aze. V pˇr´ıpadˇe, ˇze ani v jednom pruhu nen´ı po vyprˇsen´ı minim´aln´ıho intervalu trv´an´ı f´aze, pˇrepne algoritmus na dalˇs´ı f´azi. D´elka kroku — ˇcasu po kter´em se senzory snaˇz´ı detekovat se nastavuje na minim´aln´ı dobu, nebot’ by nemˇelo v´ yznam ˇcekat ve f´azi na pr´azdn´e pruhy. V pˇr´ıpadˇe VASC si m˚ uˇzeme dovolit nastavit minim´aln´ı interval klidnˇe jen na 5 sekund, protoˇze je pˇredpoklad, ˇze v pruhu bude alespoˇ n v jednom z pruh˚ u detekov´ano alespoˇ n jedno vozidlo, kter´e svou pˇr´ıtomnost´ı prodlouˇz´ı d´elku trv´an´ı intervalu. Nemˇelo by se tak st´at jako u statick´eho algoritmu, ˇze bude pˇri nastaven´ı mal´eho minim´aln´ıho intervalu trv´an´ı f´aze oranˇzov´e tvoˇrit velkou procentu´aln´ı ˇc´ast trv´an´ı f´aze. Nastaven´ı svˇetel jednotliv´ ych f´az´ı v komponentˇe Traffic control algorithm VASC vypad´a stejnˇe jako u statick´eho, opˇet viz Pˇr´ıloha A.2.
5.4
Nastaven´ı parametr˚ u pro algoritmy
Provoz na kˇriˇzovatce je generov´an exponenci´alnˇe pravdˇepodobnostn´ım rozdˇelen´ım ze tˇr´ıdy ExponetialTrafficGenerator v komponentˇe Traffic crossroad. Zde je velmi d˚ uleˇzit´e nastavit citlivˇe parametr lambda, protoˇze na nˇem m˚ uˇze z´aviset u ´spˇeˇsnost algoritm˚ u. Tento parametr mi bylo doporuˇceno nastavit na hodnotu lambda=0,01, kter´a by mˇela odpov´ıdat skuteˇcn´e hustotˇe provozu. T´ımto by mˇelo b´ yt zajiˇstˇeno, ˇze algoritmus bude moci efektivnˇe ˇr´ıdit provoz a nedojde k z´acpˇe jen kv˚ uli ˇspatn´emu nastaven´ı hustoty provozu. Spr´avn´e nastaven´ı interval˚ u jednotliv´ ych f´az´ı nen´ı v˚ ubec jednoznaˇcnou z´aleˇzitost´ı. Tomuto probl´emu se budeme v´ıce vˇenovat v kapitole 6. Pro statick´ y algoritmus lze v komponentˇe Traffic control algorithm nastavit v atributech tˇr´ıdy konstantn´ı intervaly trv´an´ı f´az´ı. Je doporuˇceno nastavit d´elku intervalu pˇribliˇznˇe 25 sekund a v z´avislosti na konkr´etn´ı f´azi sekundu nebo dvˇe ubrat kv˚ uli mal´emu vyt´ıˇzen´ı pruhu.
28
Algoritmy ˇr´ızen´ı kˇriˇzovatky
Nastaven´ı parametr˚ u pro algoritmy
Pro VASC algoritmus je moˇzn´e v komponentˇe Control panel nastavit v grafick´em uˇzivatelsk´em rozhran´ı pˇred spuˇstˇen´ım simulace kˇriˇzovatky ruˇcnˇe maxim´aln´ı a minim´aln´ı d´elku jednotliv´ ych f´az´ı. Doporuˇcen´a minim´aln´ı d´elka intervalu je, jak uˇz dˇr´ıve bylo uvedeno — 5 sekund. Maxim´aln´ı d´elka intervalu by mˇela b´ yt nastavena delˇs´ı neˇz ve statick´em algoritmu(pˇribliˇznˇe 27 sekund), aby bylo umoˇznˇeno projet v´ıce aut˚ um v pˇr´ıpadˇe, ˇze je pruh pˇreplnˇen´ y. Je v´ıcem´enˇe jasn´e, ˇze rozd´ıly mezi intervaly pro jednotliv´e f´aze nemohou b´ yt nastaveny velk´e, protoˇze by se ˇca´st kˇriˇzovatky ucpala. Maximem by mˇeli b´ yt pˇribliˇznˇe 3 sekundy mezi nejdelˇs´ım a nejkratˇs´ım intervalem f´aze u statick´eho algoritmu a 3 sekundy rozd´ılu mezi maxim´aln´ım intervaly f´az´ı u VASC. Hodnoty byly odzkouˇseny na simulovan´e kˇriˇzovatce.
29
6 Testov´an´ı kvality mimofunkˇcn´ıch poˇ zadavk˚ u U t´eto komponentov´e aplikace n´as samozˇrejmˇe zaj´ım´a nejv´ıce testov´an´ı dvou implementovan´ ych algoritm˚ u pro ˇr´ızen´ı kˇriˇzovatky.
6.1
´ eˇ Uspˇ snost ˇ r´ızen´ı kˇ riˇ zovatky
Nech´ame-li bˇeˇzet simulaci provozu kˇriˇzovatky nˇekolik tis´ıc sekund, zjist´ıme, ˇze kˇriˇzovatka se pˇri nastaven´ı parametru pro hustotu provozu lambda=0,01 vˇetˇsinou zahlt´ı1 .Nejnaplnˇenˇejˇs´ımi pruhy naˇs´ı kˇriˇzovatky byly t´emˇeˇr vˇzdy prostˇredn´ı pruhy a naopak nejpr´azdnˇejˇs´ı jsou ty, co mohou odboˇcit pouze doprava, ty jsou totiˇz obsaˇzeny ve v´ıce f´az´ıch. Nemysl´ım si vˇsak ˇze je to vinnou implementace a ani algoritm˚ u ˇr´ızen´ı. Je to sp´ıˇse t´ım, ˇze kˇriˇzovatka je ˇr´ızena n´ahodnou veliˇcinou, kter´a m˚ uˇze zp˚ usobit, ˇze se zahlt´ı v´ıce pruh˚ u a z tohoto stavu uˇz se algoritmus nedostane. Pokud je nastavena lambda=0,009, je uˇz provoz moc ˇr´ıdk´ y a ˇr´ızen´ı dopravy de facto permanentnˇe plynul´e. Pˇresto jsem testoval vˇetˇsinu spuˇstˇen´ı s hodnotou lambda=0,01. Takto vypadaj´ı statistiky aut ve spojov´em grafu pomoc´ı ˇr´ızen´ı statick´eho a VASC algoritmu viz pˇr´ıloha A.5 a .
6.2
Rozd´ıl mezi statick´ ym algoritmem a VASC
Rozd´ıly mezi grafy obou algoritm˚ u nejsou pˇr´ıliˇs velk´e. To je z d˚ uvodu velk´e hustoty provozu, tud´ıˇz VASC algoritmus neuplatn´ı svoji vlastnost zkr´acen´ı intervalu a umoˇznˇen´ı pˇrepnut´ı do dalˇs´ı f´aze v jejich prospˇech. Pˇri velk´em provozu se tedy rozd´ıl projev´ı aˇz po dlouh´e dobˇe, kdy mi vyˇslo, ˇze po 34000 sekund´ach je algoritmus VASC m´a o jedno procento projet´ ych poˇct˚ u aut v´ıce viz tabulka6.1 Pˇri hust´em provozu se tedy VASC algoritmus zaˇc´ın´a chovat podobnˇe jako 1 Na
kˇriˇzovatce jsou auta za pruhy generov´ana do poˇctu 51. Po dosaˇzen´ı takov´eho poˇctu vozidel ve v´ıce pruz´ıch z jin´ ych f´ az´ı m˚ uˇzeme povaˇzovat kˇriˇzovatku za zahlcenou.
30
Testov´an´ı kvality mimofunkˇcn´ıch poˇzadavk˚ u
Moˇznosti vylepˇsen´ı
Obr´azek 6.1: Tabulka k porovn´an´ı obou algoritm˚ u pˇri seˇcten´ı celkov´eho poˇctu projet´ ych aut pˇri 10000 sekund´ach a 34000 sekund´ach statick´ y algoritmus. Z odk´azan´ ych graf˚ u A.5 a v pˇr´ıloze ale pˇrece jenom m˚ uˇzeme nˇeco m´alo vyˇc´ıst. Je trochu patrn´e, ˇze statick´ y algoritmus m´a o nˇeco v´ıce v´ ychylek, coˇz by mohlo poukazovat na doˇcasn´e zahlcen´ı a tud´ıˇz menˇs´ı plynulost v dopravˇe. V z´asadˇe ale v´ıce vyˇcteme z bˇehu aplikace, kde m´a opravdu ve vˇetˇsinˇe pˇr´ıpad˚ u spuˇstˇen´ı kˇriˇzovatky VASC rovnomˇernˇejˇs´ı rozdˇelen´ı poˇct˚ u aut v pruhu. Je to d´ano t´ım, ˇze kdyˇz m´a VASC pln´ y pruh, pust´ı co nejv´ıc aut m˚ uˇze, zat´ımco statick´ y zapne pˇredˇcasnˇe ˇcervenou. Z toho plyne i to, ˇze se statick´ y algoritmus velmi ˇspatnˇe dost´av´a ze zahlcen´ı. U VASC je daleko vˇetˇs´ı ˇsance, ˇze se mu povede uvolnit zahlcen´ y pruh. M˚ uˇzeme tedy celkovˇe prohl´asit, ˇze VASC je tak teoreticky lepˇs´ı algoritmus, byt’ jen o velmi m´alo co se t´ yk´a celkov´eho poˇctu projet´ ych aut kˇriˇzovatkou za ˇcasov´ y interval.
6.3
Moˇ znosti vylepˇ sen´ı
Protoˇze senzory v komponentov´e aplikaci maj´ı pomˇernˇe jednoduchou implementaci, bylo by nejsp´ıˇs moˇzn´e dos´ahnout vˇetˇs´ı u ´spˇeˇsnosti zlepˇsen´ım detekce vozidla na konkr´etn´ı pozici ve vozovce. T´ım bychom zabr´anili ztr´at´am 31
Testov´an´ı kvality mimofunkˇcn´ıch poˇzadavk˚ u
Moˇznosti dalˇs´ıho v´yvoje
ˇcasu, kdyˇz je za autem dlouh´a mezera, ale pˇresto je v pruhu detekov´ano dalˇs´ı auto. Z toho vypl´ yv´a, ˇze kvalita sluˇzeb detekce vˇsech senzor˚ u by mˇela b´ yt vˇetˇs´ı, aˇckoliv senzory pln´ı svoji prim´arn´ı funkci spolehlivˇe. Dozvˇedˇeli jsme se tak´e, ˇze data zobrazuj´ıc´ı u ´daje o poˇctu aut, nevypov´ıdaj´ı u ´plnˇe stoprocentnˇe o plynulosti provozu.
6.4
Moˇ znosti dalˇ s´ıho v´ yvoje
Vzhledem k tomu, ˇze tato komponentov´a aplikace pracuje na v´ıce vl´aknech, je tˇreba se zaob´ırat probl´emem vyuˇz´ıv´an´ı pamˇeti. M˚ uˇze nastat situace, ˇze aplikace bude pouˇzita na kˇriˇzovatce v r´amci nˇejak´eho zastaral´eho hardwaru a bude na n´ı vznesen mimofunkˇcn´ı poˇzadavek na schopnost omezen´e pr´ace s pamˇet´ı. Dalˇs´ı komponenty nemaj´ı aˇz takov´ y vliv pro samotn´e algoritmick´e ˇr´ızen´ı kˇriˇzovatky, aby je bylo nutn´e podrobit nˇejak´ ym smyslupln´ ym test˚ um kvality.
32
7 Z´avˇer V r´amci t´eto bakal´aˇrsk´e pr´ace jsem se sezn´amil se z´aklady komponentov´eho programov´an´ı a podaˇrilo se mi implementovat navrˇzenou komponentovou aplikaci silniˇcn´ı kˇriˇzovatky. V´ yvoj aplikace prob´ıhal ve dvou etap´ach. Nejdˇr´ıve jsem vytvoˇril jednoduˇsˇs´ı aplikaci sest´avaj´ıc´ı se jen ze tˇr´ı komponent obsahuj´ıc´ıch komponentu se statick´ ym algoritmem pro ˇr´ızen´ı silniˇcn´ı kˇriˇzovatky. V druh´e etapˇe jsem rozˇs´ıˇril aplikaci na 10 komponent. Komponenty s algoritmem ˇr´ızen´ı kˇriˇzovatky jsou dvˇe a kaˇzdou z nich lze ve v´ ysledn´e aplikaci pouˇz´ıt. Druh´a z nich implementuje dynamick´ y algoritmus VASC, kter´ y vyuˇz´ıv´a ke sv´e ˇcinnosti ostatn´ı komponenty. Jeho spr´avnou ˇcinnost, kterou m˚ uˇzeme vidˇet v grafick´em uˇzivatelsk´em rozhran´ı simulovan´e kˇriˇzovatky, potvrzuje spr´avnou komunikaci komponent. Souˇcasnˇe s rozhran´ım kˇriˇzovatky se spouˇst´ı ovl´adac´ı panel, ve kter´em je nastaven´ı parametr˚ u algoritmu VASC nebo sbˇeru statistik z kˇriˇzovatky. Hlavn´ı c´ıl — implementace dvou algoritm˚ u ˇr´ızen´ı kˇriˇzovatky byl splnˇen. Obˇe komponenty obsahuj´ıc´ı algoritmy jsou pˇri spr´avn´em nastaven´ı parametr˚ u schopny plynule ˇr´ıdit provoz. Pˇri vˇetˇs´ı hustotˇe provozu se v´ yhody algoritmu VASC v˚ uˇci statick´emu algoritmu smaz´avaj´ı. Nicm´enˇe dlouhodobˇe z˚ ust´av´a algoritmus VASC o nˇeco efektivnˇejˇs´ı. Tyto poznatky jsem naˇcerpal pˇri testov´an´ı r˚ uzn´ ych moˇznost´ı nastaven´ı interval˚ u VASC a sledov´an´ım chov´an´ı kˇriˇzovatky bud’ z grafu, nebo z animace kˇriˇzovatky. Pˇri dalˇs´ım v´ yvoji aplikace by se dalo pokraˇcovat napˇr´ıklad vylepˇsen´ım citlivosti senzor˚ u, kter´ y by pod´aval konkr´etnˇejˇs´ı informace o aktu´aln´ı poloze vozidel pro vˇetˇs´ı zefektivnˇen´ı algoritmu VASC. V´ ysledn´a komponentov´a aplikace by mohla b´ yt v budoucnu vyuˇzita k testov´an´ı v simulaˇcn´ım frameworku vyv´ıjen´eho KIV.
33
Seznam obr´ azk˚ u
2.1
sch´ema souˇca´st´ı komponentov´eho softwaru pˇrevzato z [2] . . .
3
2.2
Pˇr´ıklad registrace sluˇzby v OSGi, pˇrevzato z [6] . . . . . . . .
7
2.3
Pˇr´ıklad definice beany ve Springu, pˇrevzato z [6] . . . . . . . .
7
2.4
Pˇr´ıklad registrace sluˇzby ve Springu DM . . . . . . . . . . . .
8
3.1
Ilustraˇcn´ı sch´ema druh˚ u kˇriˇzovatek, pˇrevzato z [9] . . . . . . . 11
4.1
Sch´ema komponentov´e aplikace kˇriˇzovatky bez komponenty Traffic crossroad simuluj´ıc´ı kˇriˇzovatku, pˇrevzato z [12] . . . . . 17
4.2
V´ ysledn´ y implementovan´ y komponentov´ y model aplikace . . . 22
5.1
Ilustraˇcn´ı obr´azek simulace provozu na testovan´e kˇriˇzovatce . . 27
6.1
Tabulka k porovn´an´ı obou algoritm˚ u pˇri seˇcten´ı celkov´eho poˇctu projet´ ych aut pˇri 10000 sekund´ach a 34000 sekund´ach . . 31
A.1 prvn´ı f´aze nastaven´ı svˇetel na kˇriˇzovatce . . . . . . . . . . . . 41 A.2 druh´a f´aze nastaven´ı svˇetel na kˇriˇzovatce . . . . . . . . . . . . 42 A.3 tˇret´ı f´aze nastaven´ı svˇetel na kˇriˇzovatce . . . . . . . . . . . . . 43 A.4 ˇctvrt´a f´aze nastaven´ı svˇetel na kˇriˇzovatce . . . . . . . . . . . . 44
34
´ ˚ SEZNAM OBRAZK U
´ ˚ SEZNAM OBRAZK U
A.5 Statistika poˇctu aut v jednotliv´ ych pruz´ıch bˇehem 34000 sekund statick´eho algoritmu . . . . . . . . . . . . . . . . . . . . . . . 45 A.6 Statistika poˇctu aut v jednotliv´ ych pruz´ıch bˇehem 34000 sekund algoritmu VASC . . . . . . . . . . . . . . . . . . . . . . . . . . 45 A.7 ovl´adac´ı panel . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
35
Seznam zkratek ∙ KIV — Katedra informatiky a v´ ypoˇcetn´ı techniky ∙ CBD — Component-based Develompment — komponentovˇe orientovan´ y v´ yvoj softwaru. ∙ CBSE — Component-based Software Engineering — Komponentovˇe orientovan´e softwarov´e inˇzen´ yrstv´ı ∙ VASC — Vehicle actuated signal control — Dynamick´ y algoritmus pro ˇr´ızen´ı kˇriˇzovatky ∙ SSZ — Svˇeteln´a signalizaˇcn´ı zaˇr´ızen´ı
36
Literatura [1] Clemens Szyperski: Component Software Beyond Object—Oriented Programming (2nd Edition), Addison—Wesley Professional, November 23, 2002 Dostupn´e z http://wiki.kiv.zcu.cz/UvodDoKomponent/HomePage [2] Bachmann, Felix; Bass, Len; Buhman, Charles; Comella—Dorda, Santiago; Long, Fred; Robert, John; Seacord, Robert; Wallnau, Kurt.: Volume II: Technical Concepts of Component—Based Software Engineering, 2nd Edition, Software Engineering Institute, Carnegie Mellon University, 2000. Dostupn´e z http://wiki.kiv.zcu.cz/UvodDoKomponent/HomePage [3] Szyperski, C., Gruntz, D., Murer, S.:Component Software – Beyond Object—Oriented Programming , ACM Press, New York (2000) [4] Becker, S., Koziolek, H., Reussner, R.:The Palladio component model for model—driven performance prediction., In: Journal of Systems and Software, Vol. 82, No. 1, pp.3–22 (2009) [5] Crnkovic, I., Larsson, M.: Building Reliable Component—Based Software Systems [Hardcover], Artech House; 1st edition (July 15, 2002) Dostupn´e z http://wiki.kiv.zcu.cz/UvodDoKomponent/HomePage [6] Rubio, D.:Pro Spring Dynamic Modules for OSGiTM Service Platform, Apress, USA, (2009) ˇ [7] Slobodan Guberiniˇc, Gordana Senborn, Bratislav Laˇziˇc: Optimal Traffic Control Urban Intersections, CRC Press 2008 [8] Projektanti: Syst´emy silniˇcn´ı technologie.vhd.cz/ssz-projekt.php
dopravn´ı
technologie,web
[9] Tom´aˇs Padˇelek: Z´aklady dopravn´ıho inˇzen´yrstv´ı Dostupn´e z http://www. fd.cvut.cz/personal/padeltom/.../ZDIR\%2009\%20T6.pdf 37
LITERATURA
LITERATURA
[10] Dostupn´e z http://preference.prazsketramvaje.cz [11] Vladim´ır Faltus: Aplikace Petriho s´ıtˇe pˇri modelov´an´ı dynamick´eho ˇr´ıˇ ıslo 2 – u zen´ı kˇriˇzovatek., Automatizace – Roˇcn´ık 48 – C´ ´nor 2005 Dostupn´e z http://www.automatizace.cz/article.php?a=530 [12] Tomas Potuzak, Richard Lipka, Jaroslav Snajberk, Premek Brada, Pavel Herout: Design of a Component-based Simulation Framework for Component Testing using SpringDM, University of West Bohemia, Pilsen, Czech Republic
38
A Pˇr´ılohy A.1 A.1.1
Uˇ zivatelsk´ a dokumentace Instalace workspace
Ke spuˇstˇen´ı programu staˇcit pˇripojit workspace do Eclipse, na CD je soubor map22.xml, ve kter´em jsou uloˇzeny data o kˇriˇzovatk´ach
A.1.2
Konfigurace komponenty
Na pˇrep´ın´an´ı mezi statick´ ym a VASC algoritmem pro ˇr´ızen´ı kˇriˇzovatky je nutn´e v komponentˇe 1.ControlPanel zakomentovat vˇsechny dosud pouˇz´ıvan´e metody a atributy dan´eho rozhran´ı Konkr´etnˇe pˇri pˇrepnut´ı z VASC na statick´ y algoritmus zakomentujeme: import cz.zcu....ITrafficControlAlgorithmVASC public ITrafficControlAlgorithmVASC itca metodu public void setTrafficCvasc tˇela metod vˇsech setr˚ u intervalu a odkomentujeme public ITrafficControlAlgorithm itca metodu public void setTrafficCA v pˇr´ıpadˇe opaˇcn´eho pˇrepnut´ı postupujte opaˇcnˇe 2. V manifestu.mf u ControlPanelu v z´aloˇzce Dependenciespˇrid´ame Imported package cz.zcu.kiv.crossroadcontrol. + jmeno poˇzadovan´eho algoritmu ˇr´ızen´ı a odebereme pouˇz´ıvan´ y algoritmus 3. Pot´e opˇet ve sloˇzce META-INF v komponentˇe ControlPanel v podsloˇzce spring otevˇreme CPconfig.xml kde pˇrid´ame znaˇcky koment´aˇr˚ u()k <property name=”trafficCvasc”ref=”RozhraniTCAVASC”/>
a odeberem u <property name=”trafficCA”ref=”RozhraniTCA”/> 4. V ControlPanel properties pˇridat v java buildy poˇzadovanou kompo39
Pˇr´ılohy
Uˇzivatelsk´a dokumentace
nentu a odebrat souˇcasnou 5. Control panel – run as – run configuration – nastavit poˇzadovanou komponentu a odebrat souˇcasnou 6. spustit program
A.1.3
Ovl´ ad´ an´ı aplikace
Prob´ıh´a intuitivnˇe pomoc´ı tlaˇc´ıtek z gui kˇriˇzovatky a d´ale pomoc´ı ovl´adac´ıho panelu obsluhovat funkce komponent:
Pˇ red spuˇ stˇ en´ım Nastaven´ı Interval˚ u — Pˇred spuˇstˇen´ım kˇriˇzovatky si uˇzivatel m˚ uˇze nastavit velikosti jednotliv´ ych f´az´ı. Interval uloˇzen´ı — Slouˇz´ı k nastaven´ı ˇcasu v sekund´ach, po kter´ ych prob´ıh´a automatick´e ukl´ad´an´ı statistik do souboru. Nastaveni senzor˚ u pro algoritmus ˇr´ızen´ı — Toto nastaven´ı je pak uloˇzeno a je s n´ım poˇc´ıt´ano pˇri chodu programu. Nastaven´ı senzor˚ u pro sbˇer statistik — Zvol´ı senzor pro senzor pro sbˇer statistik do souboru.
Za bˇ ehu Zapnout/Vypnout ˇr´ızen´ı kˇriˇzovatky — Pˇri bˇehu programu si uˇzivatel m˚ uˇze vypnout ˇr´ızen´ı kˇriˇzovatky, na semaforech zaˇcne blikat oranˇzov´a. Na zapnut´ı se vˇsude nastav´ı ˇcerven´a a pokraˇcuje f´aze, kter´a mˇela bˇeˇzet. Vypnut´ı/Zapnut´ı sbˇeru dat — Od spuˇstˇen´ı prob´ıh´a ukl´ad´an´ı dat v intervalech podle intervalu uloˇzen´ı. Data se ukl´adaj´ı do adres´aˇre XMLstats ve form´atu XML a do jm´ena souboru je vloˇzena datov´a znaˇcka ˇcasu uloˇzen´ı souboru, kter´a pak slouˇz´ı pro ˇcten´ı. Uloˇz data — Uloˇz´ı soubor do uˇzivatelem zvolen´eho adres´aˇre s u ´daji od 40
Pˇr´ılohy
F´aze ˇr´ızen´ı kˇriˇzovatky
posledn´ıho automatick´eho uloˇzen´ı, pro zahrnut´ı do statistik, mus´ı b´ yt soubor uloˇzen do adres´aˇre XMLstats Zobraz statistiku — Zobraz´ı spojnicov´ y graf s poˇctem projet´ ych aut v kaˇzd´em pruhu v ˇcase
A.2
F´ aze ˇ r´ızen´ı kˇ riˇ zovatky
Obr´azek A.1: prvn´ı f´aze nastaven´ı svˇetel na kˇriˇzovatce
41
Pˇr´ılohy
F´aze ˇr´ızen´ı kˇriˇzovatky
Obr´azek A.2: druh´a f´aze nastaven´ı svˇetel na kˇriˇzovatce
42
Pˇr´ılohy
F´aze ˇr´ızen´ı kˇriˇzovatky
Obr´azek A.3: tˇret´ı f´aze nastaven´ı svˇetel na kˇriˇzovatce
43
Pˇr´ılohy
F´aze ˇr´ızen´ı kˇriˇzovatky
Obr´azek A.4: ˇctvrt´a f´aze nastaven´ı svˇetel na kˇriˇzovatce
44
Pˇr´ılohy
F´aze ˇr´ızen´ı kˇriˇzovatky
Obr´azek A.5: Statistika poˇctu aut v jednotliv´ ych pruz´ıch bˇehem 34000 sekund statick´eho algoritmu
Obr´azek A.6: Statistika poˇctu aut v jednotliv´ ych pruz´ıch bˇehem 34000 sekund algoritmu VASC
45
Pˇr´ılohy
F´aze ˇr´ızen´ı kˇriˇzovatky
Obr´azek A.7: ovl´adac´ı panel
46