[1427] | 1 | \def \obr {Implementation/fig/} |
---|
| 2 | |
---|
[1430] | 3 | \chapter{Použitá metoda} |
---|
[1427] | 4 | |
---|
[1430] | 5 | Účelem této práce je decentralizovaně řídit provoz pomocí nastavení optimální délky cyklu |
---|
| 6 | za použití multiagentního systému, kde |
---|
| 7 | každý agent ovládá signální skupiny jedné křižovatky a jsou mu dostupné příslušné údaje. |
---|
| 8 | Jako vhodná metoda bylo zvoleno LQ řízení, které jako stavovou proměnnou |
---|
[1433] | 9 | bere délku fornty, a tu se snaží minimalizovat pomocí nalezení |
---|
[1431] | 10 | vhodné hodnoty řídící proměnné, délku cyklu.\\ |
---|
[1427] | 11 | |
---|
[1431] | 12 | V následující části se budeme zabývat jak metodu popsanou v kapitolách \ref{sec:lq} a \ref{sec:lq_tuc} |
---|
| 13 | transformovat na decentralizované řízení délky cyklu v oblasti Praha-Zličín. Jako výchozí bod |
---|
[1433] | 14 | budeme brát způsob řízení popsaný v článku \cite{6_tuc_lq}. |
---|
[1427] | 15 | |
---|
[1431] | 16 | |
---|
| 17 | |
---|
[1430] | 18 | \section{Seznam proměnných} |
---|
[1427] | 19 | % Všechny proměnné jsou zavedeny pro každého agenta reprezentujícího jednu křižovatku zvlášť |
---|
| 20 | % a jsou označeny indexem $i$ signální skupiny. Tavždy ovládá jeden jízdní pruh. Pokud jsou bez indexu, |
---|
| 21 | % jedná se o proměnnou agenta, případně oblasti simulace. |
---|
| 22 | |
---|
| 23 | \begin{tabular}{ccp{5cm}p{5cm}} |
---|
| 24 | \textbf{V textu} & \textbf{V programu} & \textbf{Název} & \textbf{Popis} \\ |
---|
[1430] | 25 | $T \in \mathbb{N}$ & \texttt{T} & Vzorkovací perioda & Perioda sběru dat a řízení \\ |
---|
[1434] | 26 | $C \in \mathbb{N}$ & \texttt{Tc} & Délka cyklu & Doba, za kterou se vystřídají fáze signální skupiny, řízená veličina \\ |
---|
[1430] | 27 | $S$ & \texttt{ss} & Saturovaný tok & Maximální počet vozidel, která projedou křižovatkou za sekundu \\ |
---|
[1427] | 28 | $L \in \mathbb{R}^+$ & \texttt{L} & Ztrátový čas & Čas potřebný k vyklizení křižovatky mezi dvěma fázemi\\ |
---|
[1434] | 29 | $Y = \{j_1, ..., j_n\}$ & & Množina signálních skupin & \\ |
---|
| 30 | $Y_A \subset Y$ & \texttt{} & Množina signálních skupin agenta $A$ & Skupiny náležící jednomu agentovi \\ |
---|
| 31 | $I_j \subset Y$ & \texttt{} & Množina vstupů signální skupiny & Signální skupiny ostatních agentů ústících do příslušné skupiny $g$ \\ |
---|
[1430] | 32 | $g_j^N \in <0,1>$ & & Nominální poměr zelené & Definovaný poměr fází \\ |
---|
[1427] | 33 | $g_j(t) \in <0,1>$ & & Efektivní poměr zelené & Část z délky cyklu, kdy je signální skupina průjezdná \\ |
---|
| 34 | $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 \\ |
---|
| 35 | $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 \\ |
---|
| 36 | $q_j(t) \in \mathbb{N}_0^+$ & \texttt{} & Fronta & Počet vozidel jedoucí menší rychlostí než $3,6 km/h$ \\ |
---|
| 37 | $\alpha_{j,k} \in <0,1>$ & \texttt{} & Odbočovací poměr z $j$ do $k$ & |
---|
| 38 | \end{tabular} |
---|
| 39 | |
---|
| 40 | |
---|
[1430] | 41 | |
---|
| 42 | |
---|
| 43 | \section{Přechodové vztahy} |
---|
[1427] | 44 | 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 |
---|
[1431] | 45 | méně než $3,6 km/h$. Pro danou frontu v čase $t+1$ platí zřejmě vztah |
---|
[1427] | 46 | \begin{equation}\label{eq:my_trans_01} |
---|
[1434] | 47 | q_j(t+1) = q_j(t) + T ( i_j(t) - o_j(t) ) \;, |
---|
[1427] | 48 | \end{equation}kde hustota vstupu $i_j(t)$ je součtem výstupů sousedů pronásobený odbočovacími poměry, |
---|
| 49 | případně vstupu do systému $i_{j,0}(t)$, pokud se jedná o koncové rameno řízené oblasti, tedy |
---|
| 50 | \begin{equation} |
---|
[1434] | 51 | i_j(t) = i_{j,0}(t) + \sum_{k \in I_j} \alpha_{k,j} o_k(t) \;. |
---|
[1427] | 52 | \end{equation} |
---|
| 53 | Křižovtkou z daného jízdního pruhu v průjezdné fázi projede $S$ vozidel za sekundu, kde |
---|
| 54 | délka průjezdné fáze závisí na nastaveném poměru a délce cyklu. Před přechodem do nové |
---|
| 55 | fáze signálího plánu je potřeba vklidit křižovatku, což vede ke ztrátovému času $L$, který |
---|
| 56 | se projeví vždy jednou za cyklus. Efektivní délka zelené je tedy |
---|
| 57 | \begin{equation} |
---|
| 58 | g_j(t) = (C(t) - L) g_j^N |
---|
| 59 | \end{equation} |
---|
| 60 | a pro hustotu výstupu platí |
---|
| 61 | \begin{equation} |
---|
| 62 | o_j(t) = \frac{S_j g_j(t)}{C(t)} = S_j g_j^N \left( 1 - LC(t)^{-1} \right) \;. |
---|
| 63 | \end{equation} Rovnice \ref{eq:my_trans_01} tedy přechází do tvaru |
---|
| 64 | \begin{equation}\label{eq:my_trans_02} |
---|
| 65 | 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) \;. |
---|
| 66 | \end{equation} |
---|
| 67 | Za řídící proměnnou tedy vezmeme |
---|
| 68 | \begin{equation} |
---|
| 69 | y(t) = 1 - LC(t)^{-1} \;. |
---|
| 70 | \end{equation} |
---|
| 71 | takže můžeme rovnici \ref{eq:my_trans_02} přepsat do maticové formy |
---|
| 72 | \begin{equation}\label{eq:my_trans_mat} |
---|
| 73 | q(t+1) = A_0 q(t) + B_0 y(t) + I_0(t) \;, |
---|
| 74 | \end{equation} |
---|
| 75 | kde $A$ je jednotková matice, $B$ je diagonální matice s prvky |
---|
| 76 | \begin{equation} |
---|
| 77 | b_{jj} = T \left( \sum_{k \in I_j} \alpha_{k,j} S_k g_k^N - S_j g_j^N \right) \;, |
---|
| 78 | \end{equation} |
---|
[1434] | 79 | a $I_0(t)$ je vektor s prvky $I_{0_{j}} = T i_{j,0}(t)$. |
---|
[1427] | 80 | |
---|
[1434] | 81 | \subsection{Minimalizace kritéria} |
---|
| 82 | Podobně jako v publikaci \cite{6_tuc_lq} budeme minimalizovat kvaratické kritérium $J$. |
---|
| 83 | Matici $I_0(t)$, která vyjadřuje příjezd vozidel z okolí do sledované sítě, |
---|
| 84 | budeme v rámci minimalizačního horizontu považovat za konstantu značenou $I_0$ a |
---|
| 85 | vztah \ref{eq:my_trans_mat} se dá tedy přepsat do tvaru |
---|
| 86 | \begin{equation}\label{eq:prechod_subs_01} |
---|
| 87 | \left( \begin{array}{c} q(t+1) \\ 1 \end{array} \right) = |
---|
| 88 | \left( \begin{array}{cc} A_0 & I_0 \\ 0 & 1 \end{array} \right) |
---|
| 89 | \left( \begin{array}{c} q(t) \\ 1 \end{array} \right) |
---|
| 90 | + |
---|
| 91 | \left( \begin{array}{c} B_0 \\ 0 \end{array} \right) |
---|
| 92 | u(t) |
---|
| 93 | \;. |
---|
| 94 | \end{equation} |
---|
| 95 | Po provedení substituce |
---|
| 96 | \begin{equation} |
---|
| 97 | \begin{array}{cccc} |
---|
| 98 | x(t) = \left( \begin{array}{c} q(t) \\ 1 \end{array} \right) \;, & |
---|
| 99 | A = \left( \begin{array}{cc} A_0 & I_0 \\ 0 & 1 \end{array} \right) \;, & |
---|
| 100 | B = \left( \begin{array}{c} B_0 \\ 0 \end{array} \right) \;, |
---|
| 101 | \end{array} |
---|
| 102 | \end{equation} |
---|
| 103 | se rovnice \ref{eq:prechod_subs_01} zjednoduší na |
---|
| 104 | \begin{equation}\label{eq:prechod_mat_po_subs} |
---|
| 105 | x(t+1) = Ax(t) + Bu(t) \;, |
---|
| 106 | \end{equation} |
---|
| 107 | kde chybí konstantní člen. Poté již můžeme použít metodu popsanou v kapitole \ref{sec:minim}. |
---|
| 108 | |
---|
[1430] | 109 | \section{Popis algoritmu} |
---|
| 110 | Základ hlavní smyčky programu je postaven |
---|
| 111 | na knihovně BDM (Bayesian Decision Making), vyvýjena na |
---|
| 112 | ústavu teorie informace a automatizace. |
---|
| 113 | Knihovna obsahuje třídu \texttt{Participant}, od |
---|
| 114 | které je odvozena základní třída agenta \texttt{BaseTrafficAgent}. |
---|
| 115 | Ta má předdefinované metody, které jsou volány v každém cyklu simulace. |
---|
| 116 | Jsou to metody \texttt{Adapt}, sloužící k získání dat, \texttt{Broadcast}, ve které |
---|
| 117 | se posílají data sousedním agentům, \texttt{Receive}, kde se zprávy příjímají a zpracovávají |
---|
| 118 | a \texttt{Act}, metoda určená pro nastavení řídících parametrů, v našem případě délky cyklu.\\ |
---|
[1427] | 119 | |
---|
[1430] | 120 | Finální agent určený pro LQ řízení je odvozen od této ťrídy. V každém cyklu |
---|
[1434] | 121 | posílá ůdaje o délce front, zatížení detektorů a odbočovacích poměrech. |
---|
[1430] | 122 | Z těchto dat si poté podle rovnic \ref{eq:my_trans_02} a \ref{eq:my_trans_mat} sestaví |
---|
| 123 | matici $B$. Matice $A$ je jednotková a penalizační matice kvadratického kritéria $Q$ a $R$ jsou konstantně |
---|
| 124 | nastaveny podle významnosti dopravních pruhů. Tím jsou sestaveny vstupní parametry pro minimalizátor, |
---|
| 125 | který vypočte řídící matici $L$ potřebnou k získání optimální hodnoty délky cyklu. |
---|
[1434] | 126 | Základní body algoritmu hlavní smyčky tedy jsou: |
---|
| 127 | \begin{itemize} |
---|
| 128 | \item Získání potřebných údajů |
---|
| 129 | \item Výměna dat se sousedními agenty |
---|
| 130 | \item Sestavení matic pro minimalizaci |
---|
| 131 | \item Minimalizace kritéria a získání optimální délky cyklu |
---|
| 132 | \item Vyjednávání o délce cyklu |
---|
| 133 | \item Nastavení délky cyklu |
---|
| 134 | \end{itemize} |
---|
[1430] | 135 | |
---|
| 136 | |
---|
[1434] | 137 | |
---|
[1427] | 138 | %\input{Implementation/ChangingFlow.tex} |
---|
| 139 | \input{Implementation/Minimalization.tex} |
---|
| 140 | |
---|
| 141 | |
---|
| 142 | |
---|
| 143 | |
---|
| 144 | |
---|
| 145 | \section{Simulace} |
---|
| 146 | Pro simulaci byl použit mikorsimulátor dopravy |
---|
| 147 | AIMSUN (Advanced Interactive Microscopic Simulator for Urban and Non-Urban Networks). |
---|
| 148 | Podstatou mikroskopické simulace (mikrosimulace) je modelování |
---|
| 149 | jízdy jednotlivých vozidel po dané komunikační síti, přičemž se zohledňují všechny parametry |
---|
| 150 | infrastruktury i dopravních prostředků. |
---|
| 151 | V této kapitole je popsána základní charakteristika mikrosimulátoru AIMSUN. |
---|
| 152 | Podrobnější informace lze nalézt například v \cite{aimsunget}. |
---|
| 153 | \\ |
---|
| 154 | \\ |
---|
| 155 | 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, |
---|
[1434] | 156 | požadovaných dopravních dat a plánů hromadné dopravy. |
---|
| 157 | Dále se AIMSUNU předává množina simulačních parametrů definujících experiment. |
---|
[1427] | 158 | Popis dopravní sítě obsahuje geometrii sítě, popis křižovatek a rozmístění detektorů, |
---|
| 159 | Dopravní data se dají zadat dvěma způsoby: Pomocí matice opbsahující informace kolik jízd se uskuteční |
---|
| 160 | z uzlu $i$ do uzlu $j$. Každému vozidlu je tedy přiřazena trasa. |
---|
[1434] | 161 | V druhé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ě. |
---|
[1427] | 162 | |
---|
| 163 | \subsubsection{VGS API}\label{ss:vgs_api} |
---|
| 164 | VGS API je rozhraní napsané v jazyce C++, které rozšiřuje funkčnost mikrosimulátoru AIMSUN. |
---|
| 165 | Zjednodušuje simulaci reálné situace, kdy podle tabulek naměřených ručně |
---|
| 166 | nebo zaznamenaných údajů z dopravních detektorů generuje |
---|
| 167 | vozidla v průběhu simulace. |
---|
| 168 | \\ |
---|
| 169 | \\ |
---|
| 170 | Druhým důležitým úkolem VGS API je shromažďovat data potřebná pro |
---|
[1434] | 171 | běh experimentu a jeho vyhodnocení. AIMSUN sice disponuje jednoduchým rozhraním pro |
---|
[1427] | 172 | vizualizaci dat a jejich export do textových souborů, není ale možné |
---|
| 173 | například porovnávat jednotlivé scénáře simulací. VGS API proto |
---|
| 174 | periodicky ukládá všechny klíčové ukazatele jak pro jednotlivé segmenty |
---|
| 175 | dopravní sítě, tak i pro celý simulovaný systém. |
---|
| 176 | Zprostředkovává tak důležitá data o počtu zastavení vozidla, o jeho zpoždění, |
---|
| 177 | průměrné rychlosti, době jízdy atd. |
---|
| 178 | Tato data jsou dostupná v průběhu simulace i po skončení k následujícímu zpracování. |
---|
| 179 | \\ |
---|
| 180 | \\ |
---|
[1434] | 181 | Důležitý údaj, který nám VGS API poskytuje, je délka fronty pro daný jízdní pruh. |
---|
[1427] | 182 | Fronta se podle dat z detektorů odhaduje velice obtížně, neboť ty vykazují zančnou chybovost, |
---|
| 183 | která u sledování průjezdů neni až tak zásadní, ale při použití na výpočet front by docházelo |
---|
| 184 | ke kumulaci této chyby a výsledky by byly prakticky nepoužitelné. |
---|
[1434] | 185 | Hlavní chyby detektorů spočívají v nerozpoznání mezery mezi vozidly a započtení |
---|
[1427] | 186 | dvou vozidel jako jedno, nebo zaznamenání jednoho vozidla dvěma detektory ve dvou |
---|
| 187 | jízdních pruzích zároveň. |
---|
| 188 | |
---|
| 189 | \subsection{Řadiče} |
---|
| 190 | Kvůli věrnějšímu napodobení skutečnosti, jsou použity k ovládání |
---|
| 191 | signálních skupin použity emulátory řadičů ELS3 firmy ELTODO. |
---|
| 192 | Ty to řadiče, strejně jako v reálné situaci kvůli bezpečnosti, mají |
---|
| 193 | pevně dané fáze a v nich definované průjezdnosti daných pruhů. |
---|
[1434] | 194 | Ovladatelné jsou pouze vnější parametry, jako je délka cyklu, poměry časů fází |
---|
| 195 | a offset. V našem případě budeme nastavovat pouze délku cyklu, po jakou se vystřídají |
---|
| 196 | všechny fáze. Offset ani poměr fází, tedy i poměr doby zelených, se nemění. |
---|
[1427] | 197 | |
---|
| 198 | \subsection{Oblast simulace}\label{ss:oblast_simulace} |
---|
| 199 | Pro simulaci bylo použito schéma dvou křižovatek na ulici Řevnické. |
---|
| 200 | Následující schémata znázorňují křižovatky s označením |
---|
| 201 | 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) |
---|
| 202 | a detektory, znázorněné zelenými obdélníky. |
---|
| 203 | |
---|
| 204 | \begin{figure}[H] |
---|
| 205 | \begin{center} |
---|
| 206 | {\includegraphics[width=12cm]{\obr 601.eps}} |
---|
| 207 | \caption{Křižovatka 601}\label{fig:601} |
---|
| 208 | \end{center} |
---|
| 209 | \end{figure} |
---|
| 210 | |
---|
| 211 | \begin{figure}[H] |
---|
| 212 | \begin{center} |
---|
| 213 | {\includegraphics[width=12cm]{\obr 495.eps}} |
---|
| 214 | \caption{Křižovatka 495}\label{fig:601} |
---|
| 215 | \end{center} |
---|
| 216 | \end{figure} |
---|
| 217 | |
---|
| 218 | |
---|
| 219 | |
---|
[1434] | 220 | \section{Možné vylepšení do budoucna}\label{sec:vylepseni} |
---|
[1427] | 221 | |
---|
| 222 | \input{Implementation/ChangingFlow.tex} |
---|