Show
Ignore:
Timestamp:
07/27/10 15:22:29 (14 years ago)
Author:
jabu
Message:
 
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • applications/doprava/texty/delka_cyklu/05_AlgorithmDescription/AlgorithmDescription.tex

    r1150 r1151  
    4343\subsubsection{Třída RV} 
    4444Třída \texttt{RV} implementuje pole popisků k vektorům třídy IT++. 
    45 K přístupu k jednotlivým slouží přetížený operátor závorky \texttt{(int index)}. 
     45K přístupu k jednotlivým prvkům slouží přetížený operátor závorky \texttt{(int index)}. 
    4646K určení veličiny uložené ve vektoru se používají metody 
    4747\begin{description} 
     
    6969\\ 
    7070Následující kód popisuje vytvoření dvou vektorů \texttt{from} a \texttt{to}, 
    71 popsaných \texttt{RV} vektory \texttt{rv\_from} a \texttt{rv\_to}, a zkopání odpovídajících 
     71popsaných \texttt{RV} vektory \texttt{rv\_from} a \texttt{rv\_to}, a zkopírování odpovídajících 
    7272údajů z \texttt{from} do \texttt{to} pomocí třídy \texttt{Datalink}. Výsledkem je, že vektor 
    7373\texttt{to} bude obsahovat hodnoty 1 a 2. 
     
    9797Po inicializaci se do příslušných proměnných uloží textové 
    9898řetězce, podle kterých se přiřazují k pruhu data z detektorů 
    99 a AIMSUNu, jako je na příklad maximální délka 
     99a AIMSUNu, jako je například maximální délka 
    100100fronty na dopravním pruhu za jednu simulační periodu. 
    101101 
    102102 
    103103\section{Třída LaneHandler} 
    104 Tato třída zprostředkovává přístup agentovi k údajům z jednotlivých pruhů. 
     104Tato třída zprostředkovává agentovi přístup k údajům z jednotlivých pruhů. 
    105105Stará se o zaznamenávání a statistické zpracování dat z AIMSUNu. 
    106106Také je zde implementován odhad čekací doby automobilu do průjezdu křižovatkou, 
    107 což je údaj používaný v hodnotící délky cyklu funkci agenta. 
     107což je údaj používaný v hodnotící funkci délky cyklu agenta. 
    108108 
    109109\subsection{Fronta} 
     
    118118 
    119119\subsection{Odhad fronty}\label{ss:odhad_fronty} 
    120 K odhadu fronty je použito metody tzv. exponenciálního zapomínání. Metoda vychází z plovoucího průměru 
    121 Který je vhodný pro odhad nekonstantní hodnoty. Označíme si veličinu $\overline{q_i}$  jako plovoucí průměr 
     120K odhadu fronty je použito metody tzv. exponenciálního zapomínání. Metoda vychází z plovoucího průměru, 
     121který je vhodný pro odhad nekonstantní hodnoty. Označíme si veličinu $\overline{q_i}$  jako plovoucí průměr 
    122122fronty v kroku $i$, kam budeme ukládat posledních $n$ měření. Označme si velikost fronty naměřenou v $i$-tém kroku jako$q_i$. 
    123 V kroku $i+1$ je hodnota hodnota plovoucího průměru před přičtením poslední naměřené hodnoty rovna 
     123V kroku $i+1$ je hodnota plovoucího průměru před přičtením poslední naměřené hodnoty rovna 
    124124$$ 
    125125\overline{q_i} = \frac{1}{n} \sum_{j=0}^{n-1} q_{i-j} . 
     
    130130\overline{q_{i+1}} = \frac{1}{n} ( n \overline{q_i} - q_{i-n+1} + q_{i+1} ) = \overline{q_i} - \frac{1}{n} q_{i-n+1} +\frac{1}{n} q_{i+1}. 
    131131$$ 
    132 Abychom nemuseli ukládat posledních $n$ měření. Zjednodušíme algoritmus tím, že místo kroku $i-n+1$ odečteme od průměru 
     132Abychom nemuseli ukládat posledních $n$ měření, zjednodušíme algoritmus tím, že místo kroku $i-n+1$ odečteme od průměru 
    133133jeho hodnotu podělenou délkou průměrovacího okna $n$. Výpočet přejde na tvar 
    134134$$ 
     
    140140\overline{q_{i+1}} = \overline{q_i} + w \Delta q_{i+1}. 
    141141$$ 
    142 Průměr s exponenciálním zapomínáním se nazývá proto, že je v něm v $i$-tém kroku uložena i první hodnota, 
     142Průměr s exponenciálním zapomínáním se tak nazývá proto, že je v něm v $i$-tém kroku uložena i první hodnota, 
    143143má však zanedbatelnou váhu $\left(\frac{n-1}{n}\right)^i$. Jedná se o jaksi zjednodušenou verzi Kalmanova filtru. 
    144144Grafy \ref{fig:q1} a \ref{fig:q2} znázorňují rozdíl mezi okamžitou a filtrovanou délkou fronty při váze $w = 0.2$. 
     
    149149\begin{center} 
    150150    {\includegraphics[width=10cm]{\obr q_scen_01_1h_tc80.eps}} 
    151     \caption{Porovnání okamžité a filtrované délky fronty \newline délka cyklu 80 s}\label{fig:q1} 
     151    \caption{Porovnání okamžité a filtrované délky fronty \newline- délka cyklu 80 s}\label{fig:q1} 
    152152\end{center} 
    153153\end{figure} 
     
    156156\begin{center} 
    157157    {\includegraphics[width=10cm]{\obr q_scen_01_1h_tc40-120.eps}} 
    158     \caption{Porovnání okamžité a filtrované délky fronty \newline délka cyklu 40-120 s}\label{fig:q2} 
     158    \caption{Porovnání okamžité a filtrované délky fronty \newline- délka cyklu 40-120 s}\label{fig:q2} 
    159159\end{center} 
    160160\end{figure} 
     
    162162 
    163163V reálném případě je potřeba vypočítat délku fronty podle záznamů z detektorů. 
    164 Prostý výpočet délky fronty například jako rozdíl počtu vozidel, která odjela a která přijela však není možný. 
    165 V důsledku problémů popsaných v \ref{sss:zpracovani_dat}. Výpočet délky fronty není předmětem zkoumání této práce. 
     164Prostý výpočet délky fronty například jako rozdíl počtu vozidel, která odjela, a která přijela však není možný, 
     165v důsledku problémů popsaných v \ref{sss:zpracovani_dat}. Výpočet délky fronty není předmětem zkoumání této práce. 
    166166Podrobnější pojednání o tomto problému lze najít například v \cite{pecherkova}. 
    167167\\ 
    168168\\ 
    169169Protože časté přenastavování délky cyklu působí řadičům problémy, přenastavuje se tento parametr jednou za časový 
    170 úsek, ktrý je několikanásobně delší než 90 sekund. Je tedy nutné modelovat časový průběh fronty. Při rozšiřování testovacího 
     170úsek, který je několikanásobně delší než 90 sekund. Je tedy nutné modelovat časový průběh fronty. Při rozšiřování testovacího 
    171171prostředí tento model ovlivní i údaj o počtu vozidel, které přijedou ze sousední křižovatky. Tento údaj závisí na délce cyklu 
    172 a není agentovy dostupný přímo. Bude tedy nutné rozšířit komunikaci agentů, popsanou v \ref{ss:komunikace}, o tento údaj. 
     172a není agentovi dostupný přímo. Bude tedy nutné rozšířit komunikaci agentů, popsanou v \ref{ss:komunikace}, o tento údaj. 
    173173 
    174174 
    175175\subsection{Odhad čekací doby}\label{ss:odhad_cekaci_doby} 
    176 Jednou z nejdůležitějších částí logiky, implementovaná v třídě \texttt{LaneHandler} je 
     176Jednou z nejdůležitějších částí logiky, implementované v třídě \texttt{LaneHandler} je 
    177177odhad čekací doby vozidel stojících v, nebo přijíždějících do příslušného jízdního pruhu. 
    178178Tento odhad se používá při výběru a ohodnocení délky cyklu. 
     
    182182Do proměnné \texttt{q} se uloží aktuální hodnota fronty.  
    183183Simulace začíná v čase \texttt{t = 0}. V každém kroku simulace 
    184 se zvětší fronta o hustotu provozu (počt aut za sekundu), odhadovanou z údajů z detektorů, a pokud se čas nachází 
     184se zvětší fronta o hustotu provozu (počet aut za sekundu), odhadovanou z údajů z detektorů, a pokud se čas nachází 
    185185ve průjezdné fázi, zmenší se o konstantu, nazývanou saturovaný tok, která udává maximální počet aut, které projedou 
    186186křižovatkou. K čekací době vozidel, uložené v proměnné \texttt{wt}, se potom přičte délka zbývající fronty a čas  
     
    189189\\ 
    190190Odhad probíhá ve dvou fázích, realizovaných cykly typu \texttt{for}. V první běží čas do největší části \texttt{T}, 
    191 soudělné s \texttt{tc}, v druhé po zbytek \texttt{T}. níže uvádím popis všech proměnných. 
     191soudělné s \texttt{tc}, v druhé po zbytek \texttt{T}. Níže uvádím popis všech proměnných. 
    192192\begin{description} 
    193193 \item[tc] délka cyklu, pro kterou je odhad prováděn (parametr funkce) 
     
    203203 \item[tc\_last] zbytek odhadovací periody 
    204204 \item[gt\_last] délka zelené ve zbytku odhadovací periody 
    205  \item[delta] korekční parametr vyjadřuje zkrácení doby průjezdnosti vlivem pomalých rozjezdů a podpbně 
     205 \item[delta] korekční parametr vyjadřuje zkrácení doby průjezdnosti vlivem pomalých rozjezdů a podobně 
    206206\end{description} 
    207207Odhad je implementován v metodě \texttt{getWT}: 
     
    319319\subsubsection{Metoda receive a broadcast} \label{ss:komunikace} 
    320320Po načtení a zpracování dat začíná komunikace. Ta je realizována metodami 
    321 \texttt{broadcas} a \texttt{receive}, které se volají střídavě. Přesněji řečeno, 
    322 hlavni smyčka nejprve volá metody \texttt{receive} každého agenta tak dlouho, dokud nevyprázdní frontu zpráv. 
     321\texttt{broadcast} a \texttt{receive}, které se volají střídavě. Přesněji řečeno, 
     322hlavní smyčka nejprve volá metody \texttt{receive} každého agenta tak dlouho, dokud nevyprázdní frontu zpráv. 
    323323Ta je reprezentována polem proměnných typu \texttt{Setting}, které mají nastaveny čtyři parametry: 
    324324 
     
    370370 
    371371\subsubsection{Metoda act}\label{sss:metoda_act} 
    372 Pokud se agenti dohodly na změně délky cyklu, probíhá její přenastavení v metodě \texttt{act}. 
     372Pokud se agenti dohodli na změně délky cyklu, probíhá její přenastavení v metodě \texttt{act}. 
    373373Nejprve se projde pole \texttt{received\_profit\_sum} a vybere se z něj maximum. 
    374374Poté se podle indexu maximálního zisku určí ideální délka fronty.