root/applications/doprava/texty/Zelena_vlna/vnitrek-kapitola3.tex @ 1126

Revision 1126, 21.3 kB (checked in by ondrak, 15 years ago)

texty...

Line 
1\chapter{Algoritmus ��
2\section{N�h algoritmu}
3�olem v~t� pr� bylo navrhnout algoritmus vyjedn�n�ezi jednotliv�i�ovatkami tak, aby koordinovanou zm�u sv�fset�vo�zelenou vlnu a~tedy aby projelo co nejv� vozidel bez zbyte�ho zastavov�.
4
5D�t�kem n�hu je funkce kter�ohodnot�astaven�ffsetu a umo�n�ak tedy porovnat r�jeho hodnoty a vybrat tu mo�n�ejlep��Jako m� kvality byl odhad po� aut, kter�rojedou k�atkou bez zastaven�
6
7Pro v� hodnocen�v programu naz� \texttt{rating}) je t�pro ka�d�n�ruh na vjezdu do k�atky zn�d�u fronty a o��n�asy p�d�idel od sousedn��atky. D�a fronty se v sou�n�ob��� ze simul�ru, p�dy pak p�od souseda. Ten je po��odle vztahu
8\begin{equation}
9        t_z = t_{zz} + \frac{d}{v_P} + \mathit{offset}
10        \label{eq:tz}
11\end{equation}
12a
13\begin{equation}
14        t_k = t_z + t_{dz} \;,
15        \label{eq:tk}
16\end{equation}
17kde $t_z$ je � za�ku p�du aut a $t_k$ � konce. D� pak $t_{zz}$ je � za�ku sv�n�elen�$d$ vzd�nost ke k�atce, kter�� o �y p�d�_P$ pr��ychlost vozidel, $\mathit{offset}$ nastaven�et a $t_{dz}$ d�a sv�n�eln�K t�o dv� hodnot�se je�t����kl�n�t aut. Jeho odhad je z��z hustoty provozu v minul�cyklu. K�atka zas�j� odhady takov�trojic � p���lik -- podle toho, kolik f� rozsv� zelenou ve sm� p��t�c�j�u k sousedovi, kter�hady ��l.
18
19Po shrom�� v�ech p�klad�soused�e agent p�upit k samotn� v�. Ten spo�� tom, �e agent spo���vky v�ech j�n� pruh�kter� n�k�nformace o �ech p�d�o ka�d� se pak nejprve spo���a fronty v �e, kdy se na jeho odjezdu rozsv� zelen�To znamen�
20\begin{equation}
21        Q_V = Q + \sum_{i=1}^{k}{t_i n_i}
22        \label{eq:qv}
23\end{equation}
24kde $Q_V$ je d�a tak zvan�irtu��ronty, zde jde o d�u fronty p�zsv�n�elen�$Q$ je odhadovan��a fronty, $t_i$ je d�a $i$-t� intervalu, ve kter�p�d� vozidla, $n_i$ je po� t�to vozidel a $k$ je po� interval��dy p�ozsv�n�zelen�
25
26D� se pak spo���a virtu��ronty v okam�iku, kdy zelen�� zp�na �venou. K tomu je t�rozd�t interval od prvn� o��n� p�du nebo rozsv�n�elen�podle toho, co nastane d� po zhasnut�elen�tento interval ozna�e $T$) na posloupnost interval�eft(T_i\right)^{k}_{i=1}$. $T_i$ jsou intervaly typu $\left<a_i;b_i\right>$, kde $b_i=a_{i+1}$ $\forall i \in \left\{ 2, \ldots, n-1\right\}$, $a_1$ a $b_k$ jsou krajn�ody intervalu $T$ a $a_i$ jsou chronologicky ���echny v��ody, tedy body, ve kter� m� signalizovan� nebo ve kter���i kon�p�d vozidel od souseda.
27
28S pomoc�ohoto d�n�ak m� po�at
29\begin{equation}
30        Q_K = Q_V + \sum_{i=1}^{k}{u(T_i)}\,,
31        \label{eq:qk}
32\end{equation}
33
34kde $u(T_i)$ je funkce $u:\; \left<a;b\right> \rightarrow \mathbb{R}$
35\begin{equation}
36        u(T_i)=
37        \begin{cases}
38                n_i                                                             &\text{pokud v intervalu } T_i \text{ pouze p�d� vozidla}  \\
39                -|T_i|\cdot c_o                 &\text{pokud v intervalu } T_i \text{ pouze odj�� vozidla}  \\
40                n_i-|T_i|\cdot c_o      &\text{pokud v intervalu } T_i \text{ p�d� i odj�� vozidla} 
41        \end{cases}
42        \;.
43        \label{eq:uti}
44\end{equation}
45
46$Q_K$ zna�kone�u d�u fronty, $Q_V$ je virtu��ronta z rovnice (\ref{eq:qv}), $k$ je po� interval�r�i vjezdy a v��. $|T_i|$ je d�a intervalu $T_i$, $n_i$ po� vozidel, kter��ou v intervalu $T_i$ a $c_o$ je empiricky zji�t� konstanta -- po� vozidel, kter�a sekundu opust��atku.
47
48Definice funkce $u(T_i)$ jak je zaps� vztahem (\ref{eq:uti}) nen�pln�Je�t�e nutn�oplnit omezen�\begin{equation}
49        |u(T_i)|
50        \begin{cases}
51                \leq Q_i                &\text{pokud v intervalu } T_i \text{ pouze odj�� vozidla}  \\
52                \geq n_i        &\text{pokud v intervalu } T_i \text{ p�d� i odj�� vozidla} 
53        \end{cases}\,,
54        \label{eq:uti-omez}
55\end{equation}
56kde $Q_i$ je d�a fronty na za�ku intervalu $T_i$.
57
58Tyto podm�y zar���e pokud z j�n� pruhu jen odj�� vozidla, nem�ich odjet v� ne� jich ��a za�ku ve front� �e pokud vozidla z�ve�ij�� a odj��, projede jich bez zastaven�axim��olik, kolik doraz�d souseda.
59
60Pokud vyjde $Q_K$ z�rn�p�avuje (odhadovan�et aut, kter�ohou k�atkou projet bez zastaven� tato hodnota se tedy ode� od hodnocen�an��atky (a t�se tedy hodnocen�v�
61
62Vyst� ot�a jak zjistit aktu���y fronta na jednotliv�menech jen pomoc�daj�etektor�er�sou k dispozici. Ukazuje se, �e toto nen�rivi��robl�a jeho ���uje r�c t� pr�. Z toho d� nejsou v programu d�y front odhadov� tak, jak by to bylo v re��ituaci, ale pou��j�e hodnoty, kter�ze z�at ze simul�ru Aimsun. Podrobn��nformace o modelov� d�y fronty p�avuje nap�d \cite{pecherkova}.
63
64P�motn�vyjedn�n�ak maj�genti dv�ole, jeden z nich je ozna� jako \emph{pasivn� zat�o druh� pozici aktivn�. Pasivn�gent m�evn�astaven�et a jen reaguje na pokyny aktivn�. Pokyny jsou bu��st o o��n�asy p�d�o n�h na zm� offsetu. Na prvn� nich agent v�dy odpov� zasl�m po�adovan�aj�druh� pak zva�uje, jestli by zm� v celkov�sou� p�la zlep�en�texttt{ratingu}. Z tohoto popisu u� pak vypl�le aktivn� agenta. Ten stejn�racuje se ��stmi o �y p�d�v�ale aktivn�� sv�fset a pokou��e vyjednat zm� u soused�
65Vyjedn�c�yklus pak prob� v n�lika kroc�. Nejprve si v�ichni agenti vy��j���n��dy vozidel na z�ad�ffset�taven�minul�cyklu. S p�dnut�k t�o o��n�pak aktivn�genti spo�aj�texttt{rating} sv� nastaven�ffsetu a pokus�e zjistit, jestli by n�k�m� jejich offsetu nevedla k zlep�en�odnocen�Hled� nejlep�� offsetu prob� ve t�kroc�. Nejprve se porovn�ktu��ffset, offset zv�o 8 sekund a offset sn�n�sekund. Vybere se nejlep��e t��nost� pokra�e se s n�stejn�sobem, jen uva�ovan�m� je $\pm$ 4 sekundy. V posledn�kroku je pak otestov�posun o $\pm$ 2 sekundy.
66
67Kdy� aktivn�genti naleznou sv�ejlep��ffsety, roze�le se v�em agent�r� o nalezen�tabiln� stavu, kter�bsahuje nov�odnoty o��n��zd�idel. Nyn�ktivn�genti vyzkou��jestli by k dal�� zlep�en�evedla zm� offsetu u n�er� z jejich soused�ejn�sobem jako p�ed� vlastn� nejlep�� offsetu zkus�dhadnout zm� \texttt{ratingu} p�sunu sousedova offsetu o $\pm$ 4, 2 a 1 sekundu. Pokud m�ejlep��odnocen�enulov�m�, za�le se sousedovi ��st o tuto zm� spolu se zm�u \texttt{ratingu}, kterou by p�la.
68
69Ka�d�vn�gent pot�esb� v�echny n�hy a otestuje, kter�ch m�ejv��ou� zm� ratingu u n�samotn� a zm� u navrhovatele a ten potom p� za vlastn�Pokud by v�echny n�hy p�ly z�rnou zm�, jsou zam�uty a ���m� nenast�. V ka�d�p��sou pak rozesl� informace o nov�stabiln�stavu a s nimi op�o��n��dy.
70
71T�o ka�d��atka nalezne sv�ne� offset. Probl�nast� p�sl� tohoto offsetu do �e k�atky. Od toho nen�arantov� okam�it�kce, zp�jak�an� offsetu dos�e je jen v jeho re�ii a ne� se tak stane m�rvat i n�lik cykl�toho d� se vypo�n�et nepos� hned po nalezen�ale agent v�dy v p� cyklech napo��ptim��ffset, z t�to p� hodnot spo��r�a a� ten se n�edn���i pro zpracov�. T�je tak�n�na reaktivnost agenta a zamez�e p�n�hnan�kc�na chvilkov�m� popt�y, kter�jn�en�o�n�e p�sobit.
72
73\section{Pou�it�nihovny}
74Pro usnadn� pr� a tak� d� lep�� za�n� do sou�n� ��e v~programu se pou��j��ln�ostupn�nihovny: \texttt{IT++}, zjednodu�uj� pr� s~vektory, maticemi a~poli, \texttt{BDM} (Bayesian Decision Making), kter�bsahuje u�ite� n�roje pro pr� s~popisy k~vektor�\texttt{libconfig}, slou�� p���pro pr� s~konfigura�mi soubory. Prvn�v�nihovny jsou distribuov� pod GPL licenc�t�pak pod licenc�GPL.
75
76\subsection{IT++}
77\texttt{IT++} je knihovna pro C++, kter�bsahuje t�a~funkce pro prov�n��er�tematick�erac�zpracov� sign� a~dal��Pro � t� pr� jsou zaj�v�r� funkce matematick�
78
79V~knihovn�sou mj. zavedeny typy \texttt{vec} a~\texttt{ivec}. Prvn�menovan�ektor obsahuj� prvky typu \texttt{double}, tedy �la s~desetinou �kou, druh�ak slo�en z~prvk�xttt{int}, tedy �el cel�r� s~vektory je velmi intuitivn�nav�lze �to pou��t syntaxi podobnou jako v~programu MATLAB.
80
81Vektor m� nadefinovat jedn�z~t�to zp�:
82\lstset{language=C++, showstringspaces=false}
83\begin{lstlisting}
84vec my_vector;
85vec my_vector(10);
86\end{lstlisting}
87p�� prvn�e zp� pro vektor nealokuje pam� To je pak nutn�d�t funkc�lstinline{setsize()}. N�edn�e pak mo�n�lo�it do vektoru jednotliv�rvky a~to nap�d jedn�z n�eduj�ch p��begin{lstlisting}
88vec  a = "0 0.7 5 9.3";        // tedy a = [0 0.7 5 9.3]
89ivec b = "0:5";                // tedy b = [0 1 2 3 4 5]
90vec  c = "3:2.5:13";           // tedy c = [3 5.5 8 10.5 13]
91ivec d = "1:3:5,0:2:4";        // tedy d = [1 3 5 0 2 4]
92vec e("1.2,3.4,5.6");          // tedy e = [1.2 3.4 5.6]
93\end{lstlisting}
94Nav�lze i-t� prvku vektoru \texttt{a} p�povat pomoc�lstinline!a(i)! nebo \lstinline[]!a[i]!.
95
96D� p�en�per�r� s~vektory p�prov�t b��atematick�perace, jako jsou:
97\begin{lstlisting}
98a+b     // sou� vektor�5        // p�n��a 5 ke v�em prvk�ktoru
99a*b     // skal��ou� vektor�9   // vyn�ben��ech prvk�toru �lem 9
100\end{lstlisting}
101a~tak podobn�
102
103Pr� s maticemi pak funguje podle obdobn�avidel.
104
105(Array)
106
107\subsection{BDM}
108Knihovna \texttt{BDM} (Bayesian Decision Making) se zab�ak n�v napov�, bayesovsk�hodov�m. Ov�em v~t� pr� jsou z~n�ou�ity jen t�\texttt{UI}, \texttt{RV}, \texttt{datalink} a~\texttt{logger}.
109
110T�\texttt{UI} (User Info) slou��ro ukl�n�~�n�ibovoln�ivatelsk�t. Zde se pou�� pro na�n�onfigurace pro simul�r a~pro jednotliv�genty a~d� jako form�pro ukl�n�~pos�n�pr�mezi agenty.
111
112�elem t�\texttt{RV} je poskytovat popisn�nformace k~datov� vektoru. Prom��ypu \texttt{RV} se skl� z~jedn�ebo n�lika polo�ek. Ka�d�akov�olo�ka m�voje jm� (\texttt{name}) a~d�u -- po� prvk�er�omuto jm� odpov�j�Sou� d�k v�ech takov�polo�ek se potom mus�ovnat d�e vektoru, kter�anou prom�ou typu \texttt{RV} popisov� Fungov� je ilustrov� na obr�u \ref{fig:rv}.
113
114\begin{figure}%
115        \centering
116        \includegraphics[width=7cm]{rv}%
117        \caption{Vektor typu \texttt{RV} (vlevo) funguj� jako popis k vektoru typu \texttt{vec}~(vpravo). Ka�d�olo�ka z \texttt{rv\_vector} m� lev�sloupci sv�m� (\texttt{name}) a v prav�velikost (\texttt{size}). Nap�d podvektor \texttt{c} m�edy tvar [5 4]}%
118        \label{fig:rv}%
119\end{figure}
120
121Pro kop�v� dat mezi vektory existuje t�\texttt{datalink}. Vytv� spojen�ezi dv� datov�ktory na z�adn�hodn�ojmenovan�vk� nim p��n�pisn�ktorech. Po propojen�ektoru s podvektorem pak funkce \texttt{datalinku} umo�� snadn�op�v� dat ob� sm�.
122
123Na z�r \texttt{Logger} je t�ur��ro ukl�n�at z~programu. Tvo�straktn�rstvu mezi programem a~samotn�isem dat. P�u�it�e jen na za�ku nastav�~jak�orm�hceme z�at v��daje (nap�o�it do pam�, do souboru, do datab�, atd.) a~d� t�pou��me bez ohledu na tuto volbu. Je t�zaji�t� flexibilita pro p�, �e se zm� po�adavky na v� z~programu.
124
125\subsection{Libconfig}
126Konfigura� parametry pro simulaci se ukl�j�o souboru ve form�, kter�d�nihovna \texttt{libconfig}. Jde o~textov�� kter�tru�j��~pro �v� l� �eln� XML.
127
128(...rozv� nebo zru�it...)
129
130\section{VGS API}
131Velmi d�t�lem p�mulaci re��blasti v mikrosimul�ru Aimsun je vlo�en�e��tupn� intenzit dopravy do zkouman� modelu. B��tupem je ru� s�� vozidel v dan�blasti, zpravidla v hodinov�rastru. Takto z�an�ata je mo�n�lo�it do simul�ru Aimsun jako hodinov���e, ov�em toto je t�prov� tak�u�.
132
133%Jedn�z nejd�t�� � p�mulaci re�� zat�n�opravn�s� v mikrosimul�ru Aimsun je zat�n�el�imulovan�opravn�� re��tupn� intenzitami dopravy, odpov�j�mi m�n�v simulovan��. P��n�stupech se intenzity dopravy ur��omoc�u�ho s�� dopravy, zpravidla v hodinov�rastru. Data, z�an��o postupem, je mo�no potom p�vlo�it op�ru� do Aimsunu jako hodinov�opravn���e.
134
135P�j��o�nost�e z�at intenzity provozu z dat z�an�� z dopravn� detektor�talovan�p�tn�blasti. To v�ak znamen�u� zad� stovek � do simul�ru. Pr� z tohoto d� vzniklo VGS API. To se star� nastartov� Aimsunu a vpou�t� vozidel do oblasti. Vjezdy vozidel se p�m �� v extern�souboru, obsahuj�m intenzity na jednotliv�menech. U�ivatel pak jen zad�m� a um�� tohoto souboru a v�e ostatn�e d� automaticky. Nav�lze volit mezi r�i rozd�n�ravd�dobnosti vjezd�i�� nej�t� pou��n�e rovnom��i Poissonovo rozd�n�
136
137%Pokud se sna�� o p�j��imulaci, m� pro zati�en�opravn�� pou��data z�an��z dopravn� detektor�talovan�simulovan�blasti. V takov�p��y bylo pot�ru� vkl�t n�lik set hodnot vstupn� intenzit pro ka�d�lovan� VGS API vzniklo ve snaze tento handicap odstranit -- na za�ku simulace rozhran�ouze u�ivatewl p�informace o tom, kde je um��soubor s intenzitami vjezd�jednotliv�men a o jak�jezdov�amena jde, VGS API se automaticky postar� nastartov� Aimsunu a automaticky vpou�t�ozidla do syst� podle �, obsa�en�souboru s intenzitami vjezd�ivatel m�olit r�druhy rozd�n�ravd�dobnosti vjezd�j�t� se pou�� rovnom��ebo Poissonovo rozd�n�
138
139Vedle pr� se vstupn�aty pro simulaci se VGS API star� o zpracov� dat v��. Aimsun sice zvl� export v��ulac�o textov�ubor�bsahuje i n�roje pro jejich vizualizaci, neumo�� p�ale n�er��t�� jako je nap�d porovn� v��dvou r�h sc��GS proto v pr� cel� experimentu ukl� � o sledovan�blasti a to jak pro jednotliv�ekce, tak pro cel�� Ve v�u u�ivatel z�� � o po� zastaven�ozidla, o jeho zpo�d�, pr��ychlosti, dob��y a dob�t�, o doprav�toku a hustot�opravy na jednotliv�gmentech �o d�� front vozidel.�aje o d�� front jsou specialitou VGS, Aimsun tento �pro jednotliv��n�ruhy p�neposkytuje a VGS m�roto implementov�vlastn�lgoritmus pro jejich s��.
140
141%Druh�e�it��m VGS API je zhroma��at data pot� pro vyhodnocen�xperimentu. Aimsun sice disponuje jednoduch�hran�pro vizualizaci dat a jejich export do textov�ubor�n�le mo�n�ap�d porovn�t jednotliv�c��mulac�VGS API proto periodicky ukl� v�echny kl�v�kazatele jak pro jednotliv�egmenty dopravn��, tak i pro cel�lovan�� U�ivatel m�o ukon��imulace k dispozici � o po� zastaven�ozidla, o jeho zpo�d�, pr��ychlosti, dob��y a dob�t�, o doprav�toku a hustot�opravy na jednotliv�gmentech �o d�� front vozidel. Vzhledem k tomu, �e Aimsun neposkytuje informace o d�e fronty vozidel pro ka�d��n�ruh zvl᚝ (k dispozici jsou pouze � o akumulovan��e fronty vyj�en�o�m vozuidel, kter�a segmentu dopravn�� v dan��ik stoj� m�GS API implementovan�tn�lgoritmus v� d�y fronty vozidel na ka�d�j�n�pruhu a poskytuje u�ivateli i takto z�an�nformace o d�e fronty.
142
143Implementac�GS API je DLL knihovna napsan� jazyce C pro 32 a 64 bitov�yst� pro syst� Windows XP a v�av�je sou�t�GStoolbox, sada skript� zpracov� v�� dat v programu Matlab.
144
145%Vlastn�GS API je implementov� v jazyce C jako DLL pro 32- a 64-bitov�yst� po�aje Windows XP, rozhran�e dopln� funkcemi pro obsluhu API a vyhodnocov� statistick�formac� prost�n�roje Matlab
146
147\section{Struktura programu}
148
149Fungov� simula�ho prost�tak jak bylo navr�eno v �IA je na obr�u (\ref{fig:struktura}). Sklad�e ze t�avn� blok�krosimul�ru Aimsun, emul�r�i�ELS3 a z tzv. Aimsun agenta.
150
151Aimsun agent p�avuje ��rvek cel� syst�. P�GS API spou�t�imsun a stejn�sobem od n�pr����odnoty sledovan�pravn� veli�. D� p�texttt{eh_api} z�� � z ���ovatek. Na z�ad��ech sesb�n�aj� sestavuje pokyny pro zm� v sign�� pl�ch a op�pomoc�texttt{eh_api} tyto pokyny zas� ��
152
153Na z�r komunikace mezi mikrosimul�rem a emul�ry ��b� p�texttt{ea_api}.
154
155\begin{figure}%
156\centering
157\includegraphics[width=\columnwidth]{aimsun-agents}%
158\caption{Struktura cel�imulace}%
159\label{fig:struktura}%
160\end{figure}
161
162\section{Program \texttt{main_loop.exe}}
163\label{sec:main_loop}
164(!upravit podle obrazku!)
165
166Simulace je obsluhov� z~programu \emph{main\_loop.exe}. Ten se star�~na�n�onfigurace, spu�t� simul�ru Aimsun a~zaji��uje komunika�ho prost�ka mezi jednotliv�enty. Diagram jeho fungov� je na obr�u \ref{fig:mainloop}. Program se spou�t�~jedn�parametrem, kter�stavuje jm� konfigura�ho souboru. Konfigura� soubor pou�� form� kter�t�nihovna \texttt{libconfig}.
167
168\begin{figure}[t]%
169\centering
170\includegraphics[width=8.5cm]{mainloop3}%
171\caption{Strukuta fungov� programu \texttt{main_loop.exe}, podrobn� popsan� podkapitole \ref{sec:main_loop}}%
172\label{fig:mainloop}%
173\end{figure}
174
175Program funguje tak, �e na za�ku na� konfigura� soubor. Pokud konfigura� soubor nen�ad� program skon�s~chybou. Po na�n�e spu�t�simul�r Aimsun s~parametry zapsan� skupin�texttt{system}. Jde p���o~intenzitu provozu na vstupech do dopravn�� a~d�u simulace.
176
177N�edn�e dle konfigurace vytvo�pole ukazatel�agenty \texttt{Ags}. P�nstrukci jednotliv�ent�vol� jejich funkce \texttt{from_setting()} na�aj� konkr��arametry ka�d� agenta. 
178
179Pot�e vytv� instance t�\texttt{logger} a jej�rov�n� agenty. V tu chv� se pou�t� funkce \texttt{ds_register()} umo��c�ktualizaci datalink�
180(...)
181
182Pak ji� n�eduje �dn�or cyklus. Na jeho za�ku se zap� � do logu. Pot�sou p�na aktu��ata ze simul�ru a p�a agent� zpracov� funkc�texttt{adapt()}. Pokra�e se vyjedn�c�cyklem.
183
184Vyjedn�c�yklus se zab�sluhou fronty zpr� Nejprve frontu prohled�rontu zpr�a p��n�nt�d�im ur��pr� zavol�m funkce \texttt{recieve()}. V p���e nemo�nosti doru� ozn� varov�, ale pokra�e d�v pr�. Nakonec v�ichni agenti maj�o�nost n�k�pr� do fronty p� -- k tomuto � existuje funkce \texttt{broadcast()}. Tato smy� je ukon�a ve chv�, kdy ���ent�y�le ��ou zpr� nebo pokud se zopakuje tolikr� kolik je nastaven�t v prom��texttt{max_cycles}.
185
186Po ukon��yjedn�n�e u ka�d� agenta zavol� funkce \texttt{act()}.  To je okam�ik, kdy mohou agenti ovlivnit ��ignalizace. Pr� zde prob� zkop�v� vypo�an�dnot do vektoru \texttt{glob_ut}, tedy do prom���avuj� vektor vstupn� hodnot $u_t$.
187
188Na z�r hlavn� cyklu je cel�imulace posunuta o jeden krok d� vol�m funkce \texttt{step()} u loggeru \texttt{L}, \texttt{Ds} a u v�ech agent�
189Tato smy� se opakuje dokud nen�osa�en v konfigura�m souboru nastaven�simulace. Na z�r je zaps�log soubor a cel�imulace je ukon�a.
190
191\section{Implementace navr�en� algoritmu}
192
193%\lstset{language=[Visual]C++,showstringspaces=false,numbers=left, numberstyle=\tiny, numbersep=5pt, tabsize=2}
194%\begin{lstlisting}
195%for ( int tK=0; tK < Ds->max_length(); tK++ ) {
196%               Ds->log_write ( ); // write stuff to
197%               Ds->getdata(glob_dt);
198%               for ( int i=0; i<Ags.length(); i++ ) {
199%                       Ags(i) -> adapt(glob_dt);
200%               }
201%
202%               // NEGOTIATION CYCLE
203%               // ends when Queue is empty or after defined number of cycles
204%               int cycle=0;
205%               do {
206%                       //DBG
207%                       MsgStore.writeFile("xxx");
208%                       // parse message queue
209%                       for ( int m=Queue.getLength()-1; m>=0; m-- ) {
210%                       // go backwards - last mesages are discarded
211%                               for ( int i=0; i<Ags.length(); i++ ) {
212%                                       Setting& msg=Queue[m];
213%                                       string m_to=msg["to"];
214%                                       if (m_to==Ags(i)->_name()) {
215%                                               Ags(i)->receive(msg);
216%                                               Queue.remove(m);
217%                                               break;
218%                                               // message delivered;
219%                                       }
220%                               }
221%                       }
222%                       if (Queue.getLength()>0){
223%                               bdm_error("undelivered messages -
224%                               probably unknown neighbours");
225%                       }
226%
227%                       for ( int i=0; i<Ags.length(); i++ ) {
228%                               Ags(i) -> broadcast(Queue);
229%                       }
230%
231%                       cycle++;
232%               }
233%               while ((Queue.getLength()>0) && (cycle<max_cycles));
234%               
235%\end{lstlisting}
Note: See TracBrowser for help on using the browser.