Pompežev kot

Ker stvari občasno zapišem

Optimalna vožnja

Model vožnje skozi semafor, pristop z variacijsko metodo

Varčno vožnjo lahko definiramo s pogojem, da je pospeševanja in zaviranja čim manj. To lahko dosežemo z minimizacijo kurulativnega kvadrata pospeška. Isčemo optimalni režim vožnje v situaciji, ko poskušamo razdaljo do semaforja prevoziti ravno v trenutku, ko se prižge zelena luč.

Rešitev

Vožnjo začnemo s hitrostjo \(v_0\), na razdalji \(L\) od semaforja. Iz izkušenj vemo, da se bo semafor prižgal v času \(T\). Ker želimo semafor prevoziti točno ob času \(T\), velja vez \begin{equation}L = \int_0^T v(t) \,\mathrm{d}t. \label{eq:vez}\end{equation} V namen udobne vožnje bomo minimizirali komulativni kvadrat pospeška \(\int \dot{v}^2 \,\mathrm{d}t\). Z upoštevanjem vezi to pomeni minimizacijo z Lagrangianom \begin{equation}\mathcal{L}(v(t), \dot{v}(t)) :=\dot{v}^2 - \lambda v, \label{eq:orig-L}\end{equation} tako da minimiziramo akcijo \[S_\lambda = \int_0^T \dot{v}^2 \,\mathrm{d}t + \int_0^T v \,\mathrm{d}t.\] Nalogo sem reševal s pomočjo Mathematica programskega okolja, to vljučuje reševanje enačb in risanje grafov.

Brezdimenzijska oblika

Za lažje reševanje problema vpeljemo brezdimenzijske količine \begin{equation}\tau :=\frac{t}{T}, \quad u :=\frac{v}{v_0}, \quad \eta :=\frac{L}{v_0 T}, \label{eq:nondim}\end{equation} pri čemer ke \(v_0 T\) nekakšna naravna hitrost, saj pri \(L = v_0 T\) uvidimo trivialno optimalno rešitev v nepospešeni vožnji s konstantno hitrostjo (tako da je akcija kar \(S = 0\)). V takih brezdimenzijskih koordinatah se Lagrangian glasi \[\mathcal{L}'(u(\tau), \dot{u}(\tau)) :=\frac{v_0^2}{T^2} \left[ \dot{u}^2 - \left( \frac{T^2}{v_0} \lambda \right) u \right],\] pri čemer so pike nad črko zdaj odvodi \(\frac{\mathrm{d}}{\mathrm{d}\tau}\) namesto \(\frac{\mathrm{d}}{\mathrm{d}t}\). Lagrangian lahko še nekoliko reskalirano \begin{equation}\mathcal{L}(u(\tau), \dot{u}(\tau)) :=\dot{u}^2 - \left( \frac{T}{v_0^2} \lambda \right) u = \dot{u}^2 - \widetilde{\lambda} u, \label{eq:L}\end{equation} pri čemer je naš novi multiplikator \(\widetilde{\lambda} :=\frac{T^2}{v_0} \lambda\). Če za Lagrangian (4) zapišemo Euler-Lagrange enačbe, dobimo s kratkim računom navadno diferencialno enačbo \begin{equation}\ddot{u} = -\frac{\widetilde{\lambda}}{2}, \quad \tau \in [0, 1], \label{eq:ODE1}\end{equation} z začetnim pogojem \(u(0) = 1\).

Extremalna hitrost pri semaforju

Rešitve 11 za hitrost (levo) in pot (desno) pri določeni hitrosti \(w(1) = w_1\) (zaprt robni pogoj). Imamo dva prosta parametra \(w_0\), \(w_1\). Spet opazimo nekaj primerov, kjer overshoot-amo semafor, kar naslovimo posebej v poglavju 2.7.

Semafor želimo prevoziti z ekstremalno hitrostjo, tako da velja \(\dot{u}(T) = 0\). Če rešimo navadno diferencialno enačbo 5 in apliciramo pogoja \[\text{odprta robna pogoja: } u(0) = 1, \quad \dot{u}(1) = 0,\] dobimo za rešitev družino krivulj \[u(\tau) = \frac{1}{4} \left( 4 + 2\widetilde{\lambda} t - \widetilde{\lambda} t^2 \right),\] izmed katerih pa je ustrezna samo tista, ki ustreza vezi (1). S preprosto integracijo in obratom dobimo izraz za multiplikator \(\widetilde{\lambda} = 6(\eta - 1)\), s čimer zapišemo rešitev kar po parametru \(\eta\) kot \begin{equation}u(\tau) = 1 + (\eta - 1) \left( 3\tau - \frac{3\tau^2}{2} \right). \label{eq:open-u}\end{equation}

Ničelna začetna hitrost, degeneracija

Rešitve (11) za hitrost (levo) in pot (desno) pri ekstremalni hitrosti \(dot{w}(1) = 0\) (odprt robni pogoj). Imamo le en prost parameter \(w_0\). Takoj tudi že opazimo, da za zadostno velik \(w_0\) pravzaprav overshoot-amo semafor, ta problem naslovimo posebej v poglavju 2.7.

Pri uvedbi brezdimenzijskih količin v 3 smo implicitno predpostavili, da sta \(T, v_0\) neničelna. Za \(T\) je to smiselna predpostavka (in bila bi tudi za \(L\)), a povsem naraven je primer, ko je \(v_0 = 0\). Pri uporabi brezdimenzijskih količin \((\tau, u, \eta)\) bi morali primer \(v_0 = 0\) razrešiti posebej – a bolj elegantno lahko vpeljemo bolj robustne brezdimenzijske količine, ki se tej degeneraciji izognejo \begin{equation}\tau :=\frac{t}{T}, \quad w :=\frac{v}{L/T}, \quad w_0 :=\frac{v_0}{L/T}. \label{eq:nondim2}\end{equation} V novih količninah \((\tau, w, w_0)\) lahko Lagrangian zapišemo kot \begin{equation}\mathcal{L}(w(\tau), \dot{w}(\tau)) :=\dot{w}^2 - \Lambda w, \label{eq:L-new}\end{equation} pri čemer smo podobno kot pri starih količinah vpeljali nov multiplikator \(\Lambda :=\frac{T^3}{L}\lambda\). Sama diferencialna enačba za rešitve ostaja enaka kot (5), le z \(\Lambda\) namesto \(\widetilde{\lambda}\) in z robnimi pogoji \begin{equation}\text{odprta robna pogoja: } w(0) = w_0, \quad \dot{w}(1) = 0, \label{eq:open-boundary}\end{equation} s čimer je rešitev oblike \begin{equation}w(\tau) = w_0 + \frac{\Lambda}{4} \left(2\tau - \tau^2 \right), \label{eq:open-lambda-ODE}\end{equation} izmed njih pa izberemo tisto, ki ustreza vezi \(\int_0^1 w \,\mathrm{d}\tau = 1\). Z vstavljanjem dobljenega \(\Lambda\) nazaj v izraz za \(w(\tau)\), dobimo odvisnost hitrosti \begin{equation}w(\tau) = w_0 + (1-w_0) \left( 3\tau - \frac{3\tau^2}{2} \right). \label{eq:open-w}\end{equation} da smo z uvedbo drugih brezdimenzijskih enot, kjer je namesto brezdimenzijske poti \(\eta\) ključni parameter brezdimenzijska začetna hitrost \(w_0\), pridobili lepše obnašanje v degeneriranem primeru \(v_0 = 0\). Na sliki 2 lahko vidimo obliko rešitve (11), ko spreminjamo začetno hitrost \(w_0\).

Fiksna hitrost pri semaforju

Alternativa odprtemu robnemu pogoju \(\dot{w}(1)=0\) je t. i. zaprto robni pogoj, kjer je končna hitrost pri semaforju točno določena. Spet rešujemo navadno diferencialno enačbo (5), le z robnimi pogoji \begin{equation}\text{zaprta robna pogoja: }\quad w(0) = w_0, \quad \dot{w}(1) = w_1. \label{eq:closed-boundary}\end{equation} Rešitev enačbe \begin{equation}w(\tau) = w_0 + 2\tau (3-2w_0-w_1) - 3\tau^{2} (2-w_0-w_1). \label{eq:closed-w}\end{equation} Rešitev (13) je parametrizirana z dvema prostima parametroma \(w_0, w_1\), poteke za nabor teh dveh parametrov narišemo na sliki 1.

Višje potence pospeška

Raziskati bi želeli še rešitve z Lagrangianom, ki kaznuje člen \({\dot{w}}^p\) za splošno potenco \(p\), ne le za \(p=2\). Zapišemo \begin{equation}\mathcal{L}_p(w(\tau), \dot{w}(\tau)) :=\dot{w}^{p} - \Lambda w, \quad p \in \mathbb{N}. \label{eq:L-2p}\end{equation} Lagrangian oblike 14 nam preko Euler-Lagrange enačbe porodi diferencialno enačbo \[p(p-1) \dot{w}^{(p-2)} \ddot{w} = -\Lambda.\] Če enačbo rešujemo kar v tej obliki z DSolve in odprtim robnim pogojem (9), nam Mathematica izpljune zelo grdo rešitev. Pomagamo ji tako, da enačbo razdelimo na dve enačbi \[\begin{aligned} \dot{Z}(\tau) &= -\Lambda, \quad\quad Z(1) = 0,\\ Z(\tau) &= p \dot{w}^{(p-1)}, \quad w(0) = w_0, \end{aligned}\] tako dobimo pomožno rešitev \(Z(t) = \Lambda (1-\tau)\), na podlagi tega pa Mathematica lepo reši drugo enačbo \[\Lambda (1-\tau) = p \dot{w}^{(p-1)}, \quad w(0) = w_0.\] Glede te enačbe lahko omenimo še en detajl. Ker je čas \(\tau \in [0, 1]\), mora biti za \(p > 2\) naš \(\Lambda > 0\), drugače enačba ni rešljiva v \(\mathbb{R}\). Ta pomislek tudi upraviči, da ignoriramo opozorilo, ki nam ga vrne DSolve, sicer:

Solve: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information.

Dobljeno rešitev malce poenostavimo na roke in zapišemo \begin{equation}w(\tau) = w_0 + \frac{p-1}{p} \left( \frac{\Lambda}{p} \right)^{\frac{1}{p-1}} \left( 1 - \left[ 1-\tau \right]^{\frac{p}{p-1}} \right). \label{eq:2p-lambda-ODE}\end{equation} Takoj lahko preverimo, da je za \(p=2\) enačba (15) kar enake oblike kot (10). Preostane nam le še vez \(\int_0^1 w\,\mathrm{d}\tau = 1\). Ko integiramo (15), upoštevamo že prej upravičeno predpostavko \(\Lambda > 0\). Ko dobljeno enačbo rešimo za \(\Lambda\) in vsavimo nazaj v (15), dobimo končno obliko rešitve \begin{equation}w(\tau) = w_0 + \frac{(2p-1)(1-w_0)}{p} \left( 1 - \left[ 1-\tau \right]^{\frac{p}{p-1}} \right). \label{eq:2p-w}\end{equation} Na sliki 3 vidimo, kako povečevanje eksponenta \(p\) vpliva na optimalne rešitve. Ko se \(p\) veča, postajajo rešitve vedno bolj podobne limitni premici \[w(\tau) = w_0 + 2t(1-w_0).\] Še vedno pa (vsaj v limitnem smislu) velja, da je \(\dot{w}(1) = 0\), čeprav je padec na \(\dot{w} = 0\) vedno bolj oster za višje \(p\) (slika 3 spodaj).

(Zgoraj) Potek hitrosti za odprte robne pogoje in za Lagrangian s splošnim eksponentom \(p\). (Spodaj) Potek pospeška. Za večje \(p\) je potek vedno bolj linearen, a proti \(\tau \to 1\) še vedno zavije tako, da je \(\dot{w}(1) = 0\).

Kvadratni člen v hitrosti

Poteki hitrosti za odprt robni pogoj z dodanim \(\chi^2 w^2\) členom v Lagrangianu 17, ki kaznuje višjo hitrost, ne zgolj višjega pospeška. Z višanjem \(\chi^2\) vidimo pojav skoraj konstantnih odsekov v \(w(\tau)\), saj je tako komulativni \(w^2\) minimiziran.

Če poleg velikosti pospeška smatramo kot neuodobno tudi višjo absolutno hitrost, lahko zapišemo Lagrangian z dodatnim \(w^2\) členom \begin{equation}\mathcal{L}_\chi(w(\tau), \dot{w}(\tau)) :=\dot{w}^2 + \chi^2 w^2 - \Lambda w. \label{eq:L-chi}\end{equation} Euler-Lagrange enačbe za tak Lagrangian nam dajo \begin{equation}\ddot{w} - \chi^2 w = -\frac{\Lambda}{2}. \label{eq:ODE2}\end{equation} Če diferencialno enačbo (18) rešujemo z odprtim robnim pogojem, dobimo rešitev oblike \[w(\tau) = e^{-\Lambda\chi\tau} \frac{\Lambda e^{\chi\tau} + \Lambda e^{\chi(2+t)} - [\Lambda - 2\chi^2 w_0](1 + e^{\chi t})e^{\chi t} }{2\chi^2 (1+e^{2\chi})}.\] Ko upoštevamo vez za razdaljo, dobimo za multiplikator vrednost \[\Lambda = \frac{2\chi^2 (\chi - w_0 \tanh\chi)}{\chi - \tanh\chi}.\] Tako dobljen \(w(\tau)\) narišemo na sliki 4. Na sliki 5 še bolj eksplicitno pokažemo vpliv večjega \(\chi^2\)1 faktorja na potek \(w(\tau)\). Vidimo, da se ob večjem \(\chi\) (bolj močno kaznovana hitrost) začne pojavljati v osrednjem delu \(\tau \in (0, 1)\) vedno bolj izrazit plato (ang. plateau), kjer je \(w\) konstantna. Ker zahtevamo neko določeno površino pod krivuljo \(w(\tau)\), hitrost \(w\) kaznujemo s kvadratnim pribitkom \(w^2\), je optimalna oblika kar konstanta. Vse druge oblike so manj optimalne, saj je pribitek na posamezne dele, ki štrlijo ven iz platoja, kvadraten.

Vpliv velikosti parametra \(\chi\) za odprt robni pogoj in z Lagrangianom 17, ki kaznuje višjo hitrost, ne zgolj višjega pospeška.
Poteki hitrosti za zaprt robni pogoj z dodanim \(\chi^2 w^2\) členom v Lagrangianu 17, ki kaznuje višjo hitrost, ne zgolj višjega pospeška.
Vpliv velikosti parametra \(\chi\) za zaprt robni pogoj in z Lagrangianom 17, ki kaznuje višjo hitrost, ne zgolj višjega pospeška. Tu še bolj vidimo tendenco k poteku hitrosti, ki je čim večji čas konstantna, saj to minimizira komulativni \(w^2\).

Poglejmo si poteke hitrosti, ki ustrezajo Lagrangianu s členom \(\chi^2 w^2\) še za zaprt robni pogoj (12). Temu ustreza rešitev (18) diferencialne enačbe \[\begin{aligned} w(\tau) &= \Lambda e^{-\chi\tau} \frac{e^\chi - e^{2\chi} - e^{\chi t} + e^{2\chi t} + e^{2\chi + \chi \tau} - e^{\chi + 2\chi \tau}}{2\chi^2(e^{2\chi} - 1)}. \nonumber \\ &+ e^{-\chi\tau} \frac{2w_0 e^{2\chi} - 2w_0 e^{2\chi\tau} -2 w_1 e^{\chi} + 2 w_1 \chi^2 e^{\chi + 2\chi\tau}}{2(e^{2\chi} - 1)}. \end{aligned}\] Ob upoštevanju vezi (1) dobimo za multiplikator \[\Lambda = \frac{2\chi^2 \left( \chi - w_0 \tanh \frac{\chi}{2} - w_1 \tanh \frac{chi}{2} \right)}{\chi - 2\tanh \frac{\chi}{2}}.\] Za kar nekaj vrednosti parametrov \((\chi^2, w_0, w_1)\) narišemo poteke na slikah 67. Spet vidimo oblikovanje jasnih platojev za večje \(\chi\) (bolj močno kaznovana hitrost). Če bi kaznovali le hitrost (limita \(\chi \to \infty\)), bi optimalna oblika bila konstanta \(w = 1\), s koračnim skokom iz \(w_0\) na \(1\) pri \(\tau = 0\) in spet skokom iz \(w = 1\) na \(w_1\) pri \(\tau = 1\). Ta dva koračna skoka bi predstavljala dve delta funkciji za pospešek, ko je v Lagrangianu prisoten še \(\dot{w}^2\) člen, se to ne zgodi, temveč imamo namesto koračnega vseeno nek gladek prehod. Večji kot je \(\chi\), bolj oster je prehod in bolj podoben je koračnemu.

Preprečevanje overshootanja

Kot smo to že videli na slikah 21, se dogaja, da avto pri nekem času \(\tau < 1\) pelje mimo semaforja, nato pa šele z vzvratno vožnjo pride na brezdimenzijsko razdaljo \(1\), da zadosti vezi (1). To bomo rešili tako, da bomo določili nekakšne meje na dovoljene parametre pri naši optimizaciji.

Overshoot z odprtim robnim pogojem

Iz slike 2 je vidno, da so vso poteki \(w(\tau)\) strogo monotoni (ali pa so konstanta). Tedaj je problem overshoot-anja semaforja rešen točno takrat, ko se izognemo negativnim hitrostim. Če za rešitev poteka za odprte robne pogoje (11) izračunamo diskriminanto, dobimo \[D = 3(3-4w_0+w_0^2),\] iz česar lahko določimo, da mora biti začetna hitrost2 avtomobila navzgor omejena kot \[w_0 < w_0^{(max.)} = 3, \; \text{da preprečimo overshoot}.\]

Zaporedni semaforji

Zanimajo nas še načini vožnje skozi več zaporednih semaforjev. Takoj očitna možnost, ki se ponuja, so zlepljene rešitve za odprt robni pogoj ali zlepljene rešitve za zaprt robni pogoj, pri čemer je \(w_1\) (tako se vožnja ustali takoj po prvem odseku). Grafično ta dva poteka vidimo na 9 in 9.

Alternativno enačbo rešujemo tako, da robne pogoje določimo kar iz zveznosti in zvezne odvedljivosti. To dosežemo tako, da izberemo nek \(w_{00}\) in nek \(\dot{w}_{00}\), nato pa rešimo enačbo (5), apliciramo vez (1), nato pa začetne pogoje za naslednji odsek razberemo kar iz te funkcije na naslednjem robu \(\tau_n + 1\). Tako rešitev za \(w_0 = 2\) si pogledamo za nekaj različnih \(\dot{w}_{00}\) na sliki 10. Vidimo, da rešitev zna kar podivjati, razen za en ozek obseg parametrov.

(Zgoraj) Zlepljene rešitve za odprt robni pogoj in, t. j. funkcije oblike (11). (Spodaj) Potek poti za isto rešitev. Vidimo, da hitrost pri semaforju oscilira in se alternirajoče približuje ravnovesni legi \(w=1\)
(Zgoraj) Zlepljene rešitve za zaprt robni pogoj, \(w_1 = 1\) in \(w_0 = 5\), t. j. funkcije oblike (13). (Spodaj) Potek poti za isto rešitev. Ta rešitev je relativno nezanimiva, saj se dinamika hitrosti ustali takoj po prvem odseku \([0, 1]\) (ker je na vseh odsekih \(w_1 = 1\)), nato pa vožnjo nadaljujemo s konstantno hitrostjo.
(Zgoraj) Gladko zlepljena rešitev za \(w_{00} = 2\) in nekaj različnih vrednosti \(\dot{w}_{00}\). (Spodaj) Gladko zlepljene rešitve za \(w_{00} = 2\) in za ožji nabor parametra \(\dot{w}_{00} \in [-3.5, 3]\) (barve gredo od vijolične za \(\dot{w}_{00} = -3.5\) do rdeče za \(\dot{w}_{00} = -3\)).

Overshoot z zaprtim robnim pogojem

Pojav overshoot-anja se prav tako kot pri odprtih pogojih pojavi tudi pri zaprtih robnih pogojih (slika 1). A ker imamo zdaj dva prosta parametra \(w_0, w_1\) (namesto le enega), je določitev omejitve za preprečevanje overshoot-anja nekoliko težje. Ker poznamo potek hitrosti (13), lahko zapišemo tudi \(s(\tau)\), ki je nek polinom 3. stopnje. Ta polinom vedno poteka skozi točko \((\tau, s) = (1, 1)\), zato lahko njegovo obliko poenostavimo kot \[s(\tau) - 1 = (\tau - 1) Q(\tau),\] pri čemer je \(Q(\tau)\) nek kvadratični polinom \[Q(\tau) = 1 - t(1-w_0) - t^2(2 -w_0 - w_1),\] z ničlami tam, kjer je dosežena razdalja \(s(\tau) = 1\). Če je katera od teh dveh ničel \(\tau_{1,2}^{(Q)} \in (0, 1)\), je potek problematičen, saj semafor prevozimo pred \(\tau = 1\). Na sliki 11 je narisana diskriminanta \(Q(\tau)\) po parametrih \((w_0, w_1)\).

Diskriminanta polinoma \(Q(\tau)\) za parametra \(w_0, w_1\). Z modro črtkano je narisana ničelna diskriminanta, ničle \(Q(\tau)\) so možne le pod to krivuljo. Z rdečo šrafirano je označeno območje, kjer dejansko opazimo overshoot obnašanje. Tega območja se moramo izogibati, če naj semaforja ne bi prevozili pred časom \(\tau = 1\).

Zanima nas območje oz. pogoj za parametre, kjer je prisotno overshoot obnašanje. Prvi pogoj dobimo iz diskriminante \(Q(\tau)\) – če naj bo prisoten overshoot, bo \(Q(\tau)\) imel dve ničli. Pogoj, da ima \(Q(\tau)\) dve ničji, je \[w_1 < \frac{1}{4} \big(9 - 6w_0 + w_0^2\big).\] Potencialno območje je torej pod to krivuljo (modra črtkana parabola na sliki 11). Kot opisano na sliki 12, pa tudi območje \(w_0 < 3\) pod krivuljo ni problematično. Območje overshoot obnašanja je torej le območje, označeno z rdečo šrafirano na sliki 11. Komplement tega pogoja nam omogoči, da se overshoot-anju izognemo, sicer pod pogojem \[w_0 < 3 \quad \text{ali} \quad w_1 \ge \frac{1}{4} \big(9 - 6w_0 + w_0^2\big).\]

Graf območja, kjer \(Q(\tau)\) ima vsaj eno ničlo in je vsaj eden od \(\tau^{(Q)}_{1,2} \in (0, 1)\). Kot vidimo, je tak nabor parameter prisoten le za \(w_0 \ge 3\). Ker je to določeno z grafičnim izrisom, ostaja možnost, da vseeno obstaja nabor parametrov \(w_0, w_1\), ki overshoot-ajo semafor, a obstajajo le na neki krivulji ali sporadičnih točkah v \((w_0, w_1)\) in zato niso vidni. A ta možnost se mi zdi le malo verjetna, za dokaz pa nimam časa.