\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, a tu 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 článku \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}