Index: applications/doprava/texty/delka_cyklu/05_AlgorithmDescription/AlgorithmDescription.tex
===================================================================
--- applications/doprava/texty/delka_cyklu/05_AlgorithmDescription/AlgorithmDescription.tex (revision 1147)
+++ applications/doprava/texty/delka_cyklu/05_AlgorithmDescription/AlgorithmDescription.tex (revision 1150)
@@ -57,11 +57,11 @@
     UI::get(inputs,set,"inputs",UI::compulsory);
 \end{lstlisting}
-zapíše na adresu proměnné inputs hodnotu v oběktu \texttt{set} třídy \texttt{Setting},
-označenou jako \texttt{\"inputs\"}. Oběkt \texttt{set} reprezentuje načtený konfigurační soubor.
+zapíše na adresu proměnné \texttt{inputs} hodnotu v objektu \texttt{set} třídy \texttt{Setting},
+označenou jako \texttt{\"inputs\"}. Objekt \texttt{set} reprezentuje načtený konfigurační soubor.
 \texttt{UI::compulsory} značí, že daná hodnota musí být zadána.
 
 
 
-\subsubsection{Třída datalink}
+\subsubsection{Třída Datalink}
 Tato třída definuje spojení mezi dvěma vektory, mezi kterými zprostředkovává spojení
 pomocí metody \texttt{filldown}.
@@ -70,5 +70,5 @@
 Následující kód popisuje vytvoření dvou vektorů \texttt{from} a \texttt{to},
 popsaných \texttt{RV} vektory \texttt{rv\_from} a \texttt{rv\_to}, a zkopání odpovídajících
-údajů z \texttt{from} do \texttt{to} pomocí třídy \texttt{datalink}. Výsledkem je, že vektor
+údajů z \texttt{from} do \texttt{to} pomocí třídy \texttt{Datalink}. Výsledkem je, že vektor
 \texttt{to} bude obsahovat hodnoty 1 a 2.
 
@@ -102,6 +102,6 @@
 
 \section{Třída LaneHandler}
-Tato třída zprostředkovává přístup agentovi k ůdajům z jednotlivých pruhů.
-Stará se o zaznamenávání a statistické spracování dat z AIMSUNu.
+Tato třída zprostředkovává přístup agentovi k údajům z jednotlivých pruhů.
+Stará se o zaznamenávání a statistické zpracování dat z AIMSUNu.
 Také je zde implementován odhad čekací doby automobilu do průjezdu křižovatkou,
 což je údaj používaný v hodnotící délky cyklu funkci agenta.
@@ -109,7 +109,7 @@
 \subsection{Fronta}
 Agent předává třídě LaneHandler údaj o maximální délce fronty za vzorkovací periodu.
-Jedná se o největší počet automobilů v příslušném jízdním pruhu, jejichž rychlost reřesahuje
+Jedná se o největší počet automobilů v příslušném jízdním pruhu, jejichž rychlost nepřesahuje
 určitou hodnotu. V našem konkrétním případě je tato mezní rychlost nastavena na 3,6 km/h.
-Tento ůdaj je však pro naše potřeby zkreslený, a to hlavně tím, že ve většině případů se délka cyklu neshoduje
+Tento údaj je však pro naše potřeby zkreslený, a to hlavně tím, že ve většině případů se délka cyklu neshoduje
 se vzorkovací periodou. Uvažujme jízdní pruh s poměrem délky zelené 0,5.
 Pokud bude například délka cyklu 180 sekund, a budeme li předpokládat, že začátek jedné periody se bude shodovat s časem,
@@ -118,8 +118,8 @@
 
 \subsection{Odhad fronty}\label{ss:odhad_fronty}
-K odhadu fronty je použito metody tzv. exponencionálního zapomínání. Metoda vychází z povoucího průměru
+K odhadu fronty je použito metody tzv. exponenciálního zapomínání. Metoda vychází z plovoucího průměru
 Který je vhodný pro odhad nekonstantní hodnoty. Označíme si veličinu $\overline{q_i}$  jako plovoucí průměr
-fronty v kroce $i$, kam budeme ukládat posledních $n$ měření. Označme si velikost fronty naměřenou v $i$-tém kroce jako$q_i$.
-V kroce $i+1$ je hodnota hodnota plovoucího průměru přepřičytením poslední naměřené hodnoty rovna
+fronty 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$.
+V kroku $i+1$ je hodnota hodnota plovoucího průměru před přičtením poslední naměřené hodnoty rovna
 $$
 \overline{q_i} = \frac{1}{n} \sum_{j=0}^{n-1} q_{i-j} .
@@ -135,13 +135,13 @@
 \overline{q_{i+1}} = \frac{1}{n} ( n \overline{q_i} - \overline{q_i} + q_{i+1} ) = \overline{q_i} + \frac{1}{n} (q_{i+1} - \overline{q_i}).
 $$
-$\frac{1}{n} (q_{i+1} - \overline{q_i}$ je vlastně přírustek v kroku $i+1$, označme si ho jako $\Delta q_{i+1}$,
+$\frac{1}{n} (q_{i+1} - \overline{q_i}$ je vlastně přírůstek v kroku $i+1$, označme si ho jako $\Delta q_{i+1}$,
 a faktor $1/n$ můžeme chápat jako jeho váhu $w$. Po dosazení dostáváme jednoduchý tvar
 $$
 \overline{q_{i+1}} = \overline{q_i} + w \Delta q_{i+1}.
 $$
-Průměr s exponenciálním zapomínáním se nazývá proto, že je v něm v $i$-tém kroce uložena i první hodnota,
+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,
 má však zanedbatelnou váhu $\left(\frac{n-1}{n}\right)^i$. Jedná se o jaksi zjednodušenou verzi Kalmanova filtru.
 Grafy \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$.
-Graf \ref{fig:q1} pro konstantní délku cyklu 80 sekund, graf \ref{fig:q2} pro délku cyklu peridicky se měnící od 40
+Graf \ref{fig:q1} pro konstantní délku cyklu 80 sekund, graf \ref{fig:q2} pro délku cyklu periodicky se měnící od 40
 do 120 sekund.
 
@@ -161,7 +161,19 @@
 
 
+V reálném případě je potřeba vypočítat délku fronty podle záznamů z detektorů.
+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ý.
+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.
+Podrobnější pojednání o tomto problému lze najít například v \cite{pecherkova}.
+\\
+\\
+Protože časté přenastavování délky cyklu působí řadičům problémy, přenastavuje se tento parametr jednou za časový
+ú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
+prostř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
+a není agentovy dostupný přímo. Bude tedy nutné rozšířit komunikaci agentů, popsanou v \ref{ss:komunikace}, o tento údaj.
+
+
 \subsection{Odhad čekací doby}\label{ss:odhad_cekaci_doby}
 Jednou z nejdůležitějších částí logiky, implementovaná v třídě \texttt{LaneHandler} je
-odhad čekací doby vozidel stojících v, nebo přijíždějících do příslušnéjo jízdního pruhu.
+odhad čekací doby vozidel stojících v, nebo přijíždějících do příslušného jízdního pruhu.
 Tento odhad se používá při výběru a ohodnocení délky cyklu.
 \\
@@ -170,5 +182,5 @@
 Do proměnné \texttt{q} se uloží aktuální hodnota fronty. 
 Simulace začíná v čase \texttt{t = 0}. V každém kroku simulace
-se zvětší fronta o hustotu provozu (počt aut za sekundu), odhadovanou z údaů z detektorů, a pokud se čas nachází
+se zvětší fronta o hustotu provozu (počt aut za sekundu), odhadovanou z údajů z detektorů, a pokud se čas nachází
 ve průjezdné fázi, zmenší se o konstantu, nazývanou saturovaný tok, která udává maximální počet aut, které projedou
 kř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 
@@ -176,6 +188,6 @@
 \\
 \\
-Odhad probíhá ve dvou fázích, realizovaných cykly typu \texttt{for}. V první běží čas do nevětší části \texttt{T},
-soudělné s \texttt{tc}, v duhé po zbytek \texttt{T}. níže uvádím popis všech proměnných.
+Odhad probíhá ve dvou fázích, realizovaných cykly typu \texttt{for}. V první běží čas do největší části \texttt{T},
+soudělné s \texttt{tc}, v druhé po zbytek \texttt{T}. níže uvádím popis všech proměnných.
 \begin{description}
  \item[tc] délka cyklu, pro kterou je odhad prováděn (parametr funkce)
@@ -231,5 +243,4 @@
 
 
-
 \section{Hlavní smyčka}
 Hlavní smyčka programu se stará o synchronizaci všech potřebných parametrů a provádění iterací.
@@ -240,5 +251,5 @@
 Délka kroku simulace je pevně nastavena na 90 sekund shodně s periodou sběru dat z AIMSUNu.
 V jednom kroku se nejprve načtou data z AIMSUNu do vektoru \texttt{glob\_dt}, který se následně předá 
-každému z agentů jako paramentr jejich metody \texttt{adapt}. Následně se zprostředkuje komunikace mezi
+každému z agentů jako parametr jejich metody \texttt{adapt}. Následně se zprostředkuje komunikace mezi
 agenty tak, že se naplní fronta zpráv voláním metody \texttt{broadcast} jednotlivých agentů. Z této fronty
 se postupně odebírají zprávy, které se předávají agentům parametrem jejich metody \texttt{receive}
@@ -247,11 +258,11 @@
 
 \section{Třída agenta}
-Třída \texttt{TrafficAgentCycleTime} je odvozena od obecného návrhu agnta \texttt{BaseTrafficAgent}.
+Třída \texttt{TrafficAgentCycleTime} je odvozena od obecného návrhu agenta \texttt{BaseTrafficAgent}.
 Jsou v ní implementovány metody pro načtení dat, komunikaci a nastavení délky cyklu za účelem řízení
 jedné konkrétní křižovatky.
 
 \subsection{Stručný popis algoritmu}
-Cíl algoritmu je zlepšit dopravní situaci nastavením délky cyklu řadiče na tekouvou
-hodnotu, při níž bude celková čekací doba všech vozidel mininmální.
+Cíl algoritmu je zlepšit dopravní situaci nastavením délky cyklu řadiče na takovou
+hodnotu, při níž bude celková čekací doba všech vozidel minimální.
 Nejprve agent odhadne délku cyklu, která je ideální pro něj, poté vyšle zprávu, zda je tato hodnota
 vyšší nebo nižší než aktuální. Pokud je nadpoloviční většina agentů pro změnu stejným směrem,
@@ -268,5 +279,5 @@
 \subsubsection{Metoda findIdealTc}\label{sss:ideal_tc}
 Pro určení, zda vznést návrh na zvýšení či snížení délky cyklu, slouží metoda \texttt{findIdealTc}.
-Ta zjišťuje čekací doby pro všechny možnosti rozsahu od mininmální do maximální hodnoty, určené atributy
+Ta zjišťuje čekací doby pro všechny možnosti rozsahu od minimální do maximální hodnoty, určené atributy
 \texttt{minTc} a \texttt{maxTc}. Vrátí takovou délku cyklu, pro kterou je čekací doba nejmenší.
 \\
@@ -277,5 +288,5 @@
 
 \subsection{Přepsané metody předka}
-Hlavní smyčka progaramu automaticky volá v každém cyklu metody určené
+Hlavní smyčka programu automaticky volá v každém cyklu metody určené
 k načtení dat, komunikaci a nastavení dalšího řízení.
 
@@ -283,9 +294,9 @@
 
 \subsubsection{Metoda validate}
-K předání požadovaných hodnot parametrů v průběhu vsimulace slouží vektor \texttt{actions}.
+K předání požadovaných hodnot parametrů v průběhu simulace slouží vektor \texttt{actions}.
 Významy těchto hodnot vysvětluje \texttt{rv\_actions} třídy \texttt{RV}. V metodě \texttt{validate},
-která se volá na začátku simulace, přidáme do \texttt{rv\_actions} hodntu \texttt{Tc}. Tím
+která se volá na začátku simulace, přidáme do \texttt{rv\_actions} hodnotu \texttt{Tc}. Tím
 vlastně sdělíme AIMSUNu, že budeme přenastavovat délku cyklu. Protože délka jednotlivých fází se nepřenastavuje automaticky,
-přidáme do \texttt{rv\_actions} také označení těchto fází. Vpraxi je tento postup realizován kódem
+přidáme do \texttt{rv\_actions} také označení těchto fází. V praxi je tento postup realizován kódem
 \begin{lstlisting}
   rv_action = RV("Tc",1);
@@ -301,10 +312,10 @@
 \subsubsection{Metoda adapt}
 Na začátku každého simulačního cyklu se jako první volá u všech agentů metoda \texttt{adapt}.
-V parametru se jí předá adresa vektrou výstupních údajů simulace \texttt{glob\_dt}, k jejichž zpracování je metoda určena.
-Zde se předávají údaje z detektorů a délky front istancím třídy \texttt{LaneHandler} a poté se volá jejich metoda
+V parametru se jí předá adresa vektoru výstupních údajů simulace \texttt{glob\_dt}, k jejichž zpracování je metoda určena.
+Zde se předávají údaje z detektorů a délky front instancím třídy \texttt{LaneHandler} a poté se volá jejich metoda
 \texttt{countAvgs}, která počítá filtrované hodnoty způsobem popsaným v sekci \ref{ss:odhad_fronty}.
 
 
-\subsubsection{Metoda receive a broadcast}
+\subsubsection{Metoda receive a broadcast} \label{ss:komunikace}
 Po načtení a zpracování dat začíná komunikace. Ta je realizována metodami
 \texttt{broadcas} a \texttt{receive}, které se volají střídavě. Přesněji řečeno,
@@ -321,7 +332,7 @@
 Každý agent má v atributu \texttt{name} uloženo jméno křižovatky, kterou ovládá.
 Toto jméno je uloženo v konfiguračním souboru a odpovídá označením ze sekce \ref{ss:oblast_simulace}.
-Pokud je jméno agenta stejné jako parametr zprávy \texttt{to}, vyjme se zpráva z frony a předá se 
+Pokud je jméno agenta stejné jako parametr zprávy \texttt{to}, vyjme se zpráva z fronty a předá se 
 metodě \texttt{receive}.V momentě, kdy je fronta prázdná, zavolají se metody \texttt{broadcast} všech agentů.
-Metoda broadcast opět plní frontu zprávami, které chce agent vyslat. Po jejím ukončení se opět volá \texttt{receive}.
+Metoda \texttt{broadcast} opět plní frontu zprávami, které chce agent vyslat. Po jejím ukončení se opět volá \texttt{receive}.
 Střídavé volání těchto dvou metod probíhá, dokud \texttt{broadcast} produkuje nějaké zprávy.
 \\
@@ -358,6 +369,6 @@
 
 
-\subsubsection{Metoda act}
-Pokud se agenti dohodly na změně délky cyklu, probíhá její přenastavení v metodě act.
+\subsubsection{Metoda act}\label{sss:metoda_act}
+Pokud se agenti dohodly na změně délky cyklu, probíhá její přenastavení v metodě \texttt{act}.
 Nejprve se projde pole \texttt{received\_profit\_sum} a vybere se z něj maximum.
 Poté se podle indexu maximálního zisku určí ideální délka fronty.
