\def \obr {Implementation/fig/}

\chapter{Použitá metoda}

Účelem této práce je decentralizovaně řídit provoz pomocí nastavení optimální délky cyklu 
za použití multiagentního systému, kde
každý agent ovládá signální skupiny jedné křižovatky a jsou mu dostupné příslušné údaje.
Jako vhodná metoda bylo zvoleno LQ řízení, které jako stavovou proměnnou
bere délku fornty, kterou se snaží minimalizovat pomocí nalezení
vhodné hodnoty řídící proměnné, délku cyklu.\\

V následující části se budeme zabývat jak metodu popsanou v kapitolách \ref{sec:lq} a \ref{sec:lq_tuc}
transformovat na decentralizované řízení délky cyklu v oblasti Praha-Zličín. Jako výchozí bod
budeme brát způsob řízení popsaný v \cite{6_tuc_lq}.



\section{Seznam proměnných}
% Všechny proměnné jsou zavedeny pro každého agenta reprezentujícího jednu křižovatku zvlášť
% a jsou označeny indexem $i$ signální skupiny. Tavždy ovládá jeden jízdní pruh. Pokud jsou bez indexu,
% jedná se o proměnnou agenta, případně oblasti simulace.

\begin{tabular}{ccp{5cm}p{5cm}}
  \textbf{V textu} & \textbf{V programu} & \textbf{Název} & \textbf{Popis} \\
  $T \in \mathbb{N}$ & \texttt{T} & Vzorkovací perioda & Perioda sběru dat a řízení \\
  $C \in \mathbb{N}$ & \texttt{Tc} & Délka cyklu & Doba, za kterou se vystřídají fáze signální skupiny, řízená veližina \\
  $S$ & \texttt{ss} & Saturovaný tok & Maximální počet vozidel, která projedou křižovatkou za sekundu \\
  $L \in \mathbb{R}^+$ &  \texttt{L} & Ztrátový čas & Čas potřebný k vyklizení křižovatky mezi dvěma fázemi\\ 
  $J = \{j_1, ..., j_n\}$ &  & Množina signálních skupin &  \\
  $J_A \subset J$ & \texttt{} & Množina signálních skupin agenta $A$ & Skupiny náležící jednomu agentovi \\
  $I_j \subset J$ & \texttt{} & Množina vstupů signální skupiny & Signální skupiny ostatních agentů ústících do příslušné skupiny $g$ \\
  $g_j^N \in <0,1>$ & & Nominální poměr zelené & Definovaný poměr fází \\
  $g_j(t) \in <0,1>$ & & Efektivní poměr zelené & Část z délky cyklu, kdy je signální skupina  průjezdná \\
  $i_j(t) \in \mathbb{R}^+$ & \texttt{i\_g} & Hustota vstupů & Počet přijíždějících vozidel do pruhu signální skupiny za jednotku času \\
  $o_j(t) \in \mathbb{R}^+$ & \texttt{} & Hustota výstupů & Počet vyjíždějících vozidel z pruhu signální skupiny za jednotku času \\
  $q_j(t) \in \mathbb{N}_0^+$ & \texttt{} & Fronta & Počet vozidel jedoucí menší rychlostí než $3,6 km/h$ \\
  $\alpha_{j,k}  \in <0,1>$ & \texttt{} & Odbočovací poměr z $j$ do $k$ &  
\end{tabular}




\section{Přechodové vztahy}
Jako údaj popisující stav systému byla zvolena délka fronty $q_j(t)$, což je počet aut v jízdním pruhu jedoucích 
méně než $3,6 km/h$. Pro danou frontu v čase $t+1$ platí zřejmě vztah
\begin{equation}\label{eq:my_trans_01}
 q_j(t+1) = q_j(t) + T ( i_j(t) - o_j(t) ) , 
\end{equation}kde hustota vstupu $i_j(t)$ je součtem výstupů sousedů pronásobený odbočovacími poměry,
případně vstupu do systému $i_{j,0}(t)$, pokud se jedná o koncové rameno řízené oblasti, tedy
\begin{equation}
  i_j(t) = i_{j,0}(t) + \sum_{k \in I_j} \alpha_{k,j} o_k(t) .
\end{equation}
Křižovtkou z daného jízdního pruhu v průjezdné fázi projede $S$ vozidel za sekundu, kde 
délka průjezdné fáze závisí na nastaveném poměru a délce cyklu. Před přechodem do nové
fáze signálího plánu je potřeba vklidit křižovatku, což vede ke ztrátovému času $L$, který
se projeví vždy jednou za cyklus. Efektivní délka zelené je tedy
\begin{equation}
 g_j(t) = (C(t) - L) g_j^N
\end{equation}
a pro hustotu výstupu platí
\begin{equation}
 o_j(t) = \frac{S_j g_j(t)}{C(t)} = S_j g_j^N \left( 1 - LC(t)^{-1} \right) \;.
\end{equation} Rovnice \ref{eq:my_trans_01} tedy přechází do tvaru
\begin{equation}\label{eq:my_trans_02}
 q_j(t+1) = q_j(t) + T \left( i_{j,0}(t) + \sum_{k \in I_j} \alpha_{k,j} S_k g_k^N \left( 1 - LC(t)^{-1} \right)  - S_j g_j^N \left( 1 - LC(t)^{-1} \right) \right) \;.
\end{equation}
Za řídící proměnnou tedy vezmeme 
\begin{equation}
 y(t) = 1 - LC(t)^{-1} \;.
\end{equation}
takže můžeme rovnici \ref{eq:my_trans_02} přepsat do maticové formy
\begin{equation}\label{eq:my_trans_mat}
 q(t+1) = A_0 q(t) + B_0 y(t) + I_0(t) \;, 
\end{equation}
kde $A$ je jednotková matice, $B$ je diagonální matice s prvky
\begin{equation}
 b_{jj} =  T \left( \sum_{k \in I_j} \alpha_{k,j} S_k g_k^N - S_j g_j^N \right) \;,
\end{equation}
a $I$ je vektor s prvky $I_{0_{j}} = T i_{j,0}(t)$.

\section{Popis algoritmu}
Základ hlavní smyčky programu je postaven
na knihovně BDM (Bayesian Decision Making), vyvýjena na 
ústavu teorie informace a automatizace.
Knihovna obsahuje třídu \texttt{Participant}, od
které je odvozena základní třída agenta \texttt{BaseTrafficAgent}.
Ta má předdefinované metody, které jsou volány v každém cyklu simulace.
Jsou to metody \texttt{Adapt}, sloužící k získání dat, \texttt{Broadcast}, ve které 
se posílají data sousedním agentům, \texttt{Receive}, kde se zprávy příjímají a zpracovávají
a \texttt{Act}, metoda určená pro nastavení řídících parametrů, v našem případě délky cyklu.\\

Finální agent určený pro LQ řízení je odvozen od této ťrídy. V každém cyklu
posílá ůdaje o délce front, zatížení detektorů a odbočovacích poměrec.
Z těchto dat si poté podle rovnic \ref{eq:my_trans_02} a \ref{eq:my_trans_mat} sestaví 
matici $B$. Matice $A$ je jednotková a penalizační matice kvadratického kritéria $Q$ a $R$ jsou konstantně
nastaveny podle významnosti dopravních pruhů. Tím jsou sestaveny vstupní parametry pro minimalizátor, 
který vypočte řídící matici $L$ potřebnou k získání optimální hodnoty délky cyklu.


%\input{Implementation/ChangingFlow.tex}
\input{Implementation/Minimalization.tex}





\section{Simulace}
Pro simulaci byl použit mikorsimulátor dopravy
AIMSUN (Advanced Interactive Microscopic Simulator for Urban and Non-Urban Networks).
Podstatou mikroskopické simulace (mikrosimulace) je modelování
jízdy jednotlivých vozidel po dané komunikační síti, přičemž se zohledňují všechny parametry
infrastruktury i dopravních prostředků.
V této kapitole je popsána základní charakteristika mikrosimulátoru AIMSUN.
Podrobnější informace lze nalézt například v \cite{aimsunget}.
\\
\\
AIMSUN potřebuje pro svůj běh simulační scénář skládající se z popisu dopravní sítě, plánů řízení dopravy,
požadovaných dopravních data, a plánů hromadné dopravy
a množinu simulačních parametrů definujících experiment.
Popis dopravní sítě obsahuje geometrii sítě, popis křižovatek a rozmístění detektorů,
Dopravní data se dají zadat dvěma způsoby: Pomocí matice opbsahující informace kolik jízd se uskuteční
z uzlu $i$ do uzlu $j$. Každému vozidlu je tedy přiřazena trasa.
V fruhém případě se pro určitá místa zadají hustoty provozu a vozidla se rozmístí stochasticky podle požadovaných počtů a poměrů odbočení do dopravní sítě.

\subsubsection{VGS API}\label{ss:vgs_api}
VGS API je rozhraní napsané v jazyce C++, které rozšiřuje funkčnost mikrosimulátoru AIMSUN.
Zjednodušuje simulaci reálné situace, kdy podle tabulek naměřených ručně 
nebo zaznamenaných údajů z dopravních detektorů generuje 
vozidla v průběhu simulace.
\\
\\
Druhým důležitým úkolem VGS API je shromažďovat data potřebná pro
běh experimentu a jeho. AIMSUN sice disponuje jednoduchým rozhraním pro
vizualizaci dat a jejich export do textových souborů, není ale možné
například porovnávat jednotlivé scénáře simulací. VGS API proto
periodicky ukládá všechny klíčové ukazatele jak pro jednotlivé segmenty
dopravní sítě, tak i pro celý simulovaný systém.
Zprostředkovává tak důležitá data o počtu zastavení vozidla, o jeho zpoždění,
průměrné rychlosti, době jízdy atd.
Tato data jsou dostupná v průběhu simulace i po skončení k následujícímu zpracování.
\\
\\
Důležitý údaj, které nám VGS API poskytuje, je délka fronty pro daný jízdní pruh.
Fronta se podle dat z detektorů odhaduje velice obtížně, neboť ty vykazují zančnou chybovost,
která u sledování průjezdů neni až tak zásadní, ale při použití na výpočet front by docházelo
ke kumulaci této chyby a výsledky by byly prakticky nepoužitelné.
Hlavní chyby detektorů spočívají v nerozpoznání mezery mezi vozidly a zpočtení 
dvou vozidel jako jedno, nebo zaznamenání jednoho vozidla dvěma detektory ve dvou
jízdních pruzích zároveň.

\subsection{Řadiče}
Kvůli věrnějšímu napodobení skutečnosti, jsou použity k ovládání
signálních skupin použity emulátory řadičů ELS3 firmy ELTODO.
Ty to řadiče, strejně jako v reálné situaci kvůli bezpečnosti, mají
pevně dané fáze a v nich definované průjezdnosti daných pruhů.
Ovladatelné jsou pouze vnějí parametry, jako je délka cyklu, poměry časů fází
a offset. V našenm případně budeme nastavovat pouze délku cyklu, po jakou se vystřídají 
všechny fáze. Offset a ani poměr fází, tedy i poměr doby zelených, se nemění.

\subsection{Oblast simulace}\label{ss:oblast_simulace}
Pro simulaci bylo použito schéma dvou křižovatek na ulici Řevnické. 
Následující schémata znázorňují křižovatky s označením
495 - Na Radosti a 601 - terminál BUS, jejich pruhy (VA, VB, VC, VD, VE, VF a VA, VAa, VB, VBa, VC, VD, VE, Se)
a detektory, znázorněné zelenými obdélníky.

\begin{figure}[H]
\begin{center}
    {\includegraphics[width=12cm]{\obr 601.eps}}
    \caption{Křižovatka 601}\label{fig:601}
\end{center}
\end{figure}

\begin{figure}[H]
\begin{center}
    {\includegraphics[width=12cm]{\obr 495.eps}}
    \caption{Křižovatka 495}\label{fig:601}
\end{center}
\end{figure}



\section{Možné vylepšení do budoucna}

\input{Implementation/ChangingFlow.tex}

