|
1 |
| -Queremos agora resolver os problemas de controle ótimo numericalmente. A equação $\frac{\partial H}{\partial u} = 0$ deve ser satisfeita em $u^*$ e pode ser de ajuda para encontrar $u$ em função de $x$ e $\la$. A partir disso, podemos utilizar um método como Runge-Kutta para resolver o sistema ótimo. Ele vai encontrar o controle ótimo se esse existir. |
2 |
| -\subsection{Algoritmo} |
| 1 | +Queremos agora resolver os problemas de controle ótimo até agora apresentados |
| 2 | +numericamente, de forma que a solução seja uma aproximação a função $u^*$. |
| 3 | +Para isso tomamos uma partição $\{t_0 = b_1, b_2, ..., b_{N+1} = t_1\}$, |
| 4 | +usualmente com pontos igualmente espaçados, tal que a aproximação será dara |
| 5 | +por $u_i \approx u(b_i)$. Sabemos que a solução deve satisfazer as condições |
| 6 | +necessárias apresentadas no capítulo \ref{ch:1}. |
| 7 | + |
| 8 | +Em geral, a equação $\frac{\partial H}{\partial u} = 0$ pode ser manipulada |
| 9 | +para encontrarmos $u$ em função de $x$ e de $\la$, para então termos a |
| 10 | +expressão de $u^*$. A partir disso, podemos utilizar um método como |
| 11 | +Runge-Kutta para resolver o sistema ótimo. Ele vai encontrar o controle ótimo |
| 12 | +se esse existir. |
| 13 | + |
| 14 | +\section{Algoritmo} |
| 15 | + |
| 16 | +O método apresentado a seguir é bem intuitivo e é conhecido como |
| 17 | +\textit{Forward-Backward Sweep}. Seja $\vec{x} = (x_1,...,x_{N+1})$ e |
| 18 | +$\vec{\la} = (\la_1, ..., \la_{N+1})$ vetores que aproximação nos pontos da |
| 19 | +partição as funções estado e adjunta. \hl{Informa\c{c}\~oes sobre converg\^encia e |
| 20 | +estabilidade podem ser encontradas em} \cite{wolfgang1978}. |
| 21 | + |
3 | 22 | \begin{enumerate}
|
4 |
| - \item Chute inicial para $\Vec{u}$, sendo cada coordenada de $u$ um valor no tempo discreto. |
5 |
| - \item Resolva $x$ Foward utilizando a condição inicial e utilizando sua equação diferencial. |
6 |
| - \item Use a condição final de $\lambda$ e resolva Backward de acordo com sua equação diferencial. |
7 |
| - \item Atualize o vetor de controle. |
8 |
| - \item Convergência. |
| 23 | + \item Chute inicial para $\vec{u}$. |
| 24 | + \item Usando a condição inicial $x(t_0)$ e os valores de $\vec{u}$, |
| 25 | + encontre $\vec{x}$ passo a frente através da equação diferencial. |
| 26 | + \item Usando a condição de transversalidade $\la(t_1) = 0$ e os valores |
| 27 | + $\vec{u}$ e $\vec{x}$, resolva $\vec{\la}$ para trás de acordo com a |
| 28 | + equação adjunta. |
| 29 | + \item Atualize o vetor de controle com os novos valores de $\vec{x}$ e |
| 30 | + $\vec{\la}$ através da equação $H_u = 0$. |
| 31 | + \item Confira a convergência. Se dois passos subjacentes não estão |
| 32 | + suficientemente próximos, repita a partir do segundo passo. |
9 | 33 | \end{enumerate}
|
10 | 34 |
|
11 |
| -É interessante utilizar uma combinação convexa entre o valor do controle anterior e o valor atual para acelerar a convergência. |
| 35 | +Frequentemente é necessário usar uma combinação convexa \footnote{\textbf{Combinação Convexa:} Combinação linear de pontos, tal que os |
| 36 | +coeficientes são não negativos e somam $1$.} entre dois controles |
| 37 | +sequenciais para acelerar a convergência do algoritmo. Para os passos 2 e 3, o |
| 38 | +método de Runge-Kutta é suficiente. |
12 | 39 |
|
13 |
| -\textbf{Combinação Convexa:} Combinação Linear de pontos, cuja soma dos coeficientes é positiva e a soma é $1$. |
| 40 | +Muitos tipos de teste de convergência existem. Frequentemente, considerar |
| 41 | +$$ |
| 42 | +||\vec{u} - \text{old }\vec{u}||_1 = \sum_{i=1}^{N+1} |u_i - \text{old }u_i| < \e |
| 43 | +$$ |
| 44 | +Nesse texto, usaremos o erro relativo com tolerância $\e$, |
| 45 | +$$ |
| 46 | +\frac{||\vec{u} - \text{old }\vec{u}||_1}{||\vec{u}||_1} \le \e |
| 47 | +$$ |
| 48 | +Ou, de outra forma, queremos que |
| 49 | +$$ |
| 50 | +\e ||\vec{u}|| - ||\vec{u} - \text{old }\vec{u}|| \ge 0 |
| 51 | +$$ |
| 52 | +Vamos fazer esse requerimento para todas as variáveis, não apenas para o |
| 53 | +controle. |
14 | 54 |
|
15 |
| -O erro no algoritmo é em geral o relativo e ele deve ser menor do que uma tolerância aceitável. A condição que obtemos é que $\delta \norm{\Vec{u}} - \norm{\Vec{u} - \Vec{oldu}} \geq 0$ |
| 55 | +Ao longo do texto esse algoritmo será utilizado |
16 | 56 |
|
17 |
| -\subsection{Runge-Kutta} |
| 57 | +\hl{Especificar o c\'odigo utilizado, a linguagem e a organiza\c{c}\~ao dos |
| 58 | +notebooks. Aqui ou no in\'icio do texto.} |
| 59 | + |
| 60 | +\section{Runge-Kutta} |
| 61 | + |
| 62 | +O método pode ser resumido pelas seguintes equações, dado um passo $h$. |
| 63 | +\begin{equation*} |
| 64 | + x(t + h) \approx x(t) + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4) |
| 65 | +\end{equation*} |
18 | 66 | \begin{equation*}
|
19 | 67 | \begin{cases}
|
20 |
| - x(t + h) \approx x(t) + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4) \\ |
21 | 68 | k1 = f(t,x(t)) \\
|
22 | 69 | k2 = f(t + \frac{h}{2},x(t) + \frac{h}{2}k_1) \\
|
23 | 70 | k3 = f(t + \frac{h}{2},x(t) + \frac{h}{2}k_2) \\
|
|
0 commit comments