Skip to content

Latest commit

 

History

History
197 lines (139 loc) · 6.23 KB

OptimalControlInMath.md

File metadata and controls

197 lines (139 loc) · 6.23 KB

Solution of Math Form

Generally, optimal control problem is a functional extremum problem. Sometimes analytic solution is hard to get, so numerical methods are feasible. To be solved, it can be treated as a optimization problem and differential equations problem. Therefore, JuMP.jl and DifferentialEqutions.jl are two powerful solver.

General Form

General form of optimal control problems are:

$$min \int_{t_0}^{t_f} L[\boldsymbol{x}(t),\boldsymbol{u}(t),t]dt \\s.t. \hspace{0.4cm} \dot{\boldsymbol{x}} = f[\boldsymbol{x}(t),\boldsymbol{u}(t),t]$$

Differential form Solution

Define Hamilton function $\boldsymbol{H}$ and Lagrange multiplier vector $\boldsymbol{\lambda}$,

$$H[\boldsymbol{x}(t),\boldsymbol{u}(t),t] = L[\boldsymbol{x}(t),\boldsymbol{u}(t),t] + \boldsymbol{\lambda}^T(t)f[\boldsymbol{x}(t),\boldsymbol{u}(t),t]\\\ \boldsymbol{\lambda}(t) = [\lambda_1(t),\lambda_2(t),...,\lambda_n(t)]$$

Necessary conditions for the existence of functional extremum are:

  • Adjoint Equation:
$$\dot{\boldsymbol{\lambda}} =- \frac{\partial H}{\partial \boldsymbol{x}}$$
  • Coupling Equation:
$$\frac{\partial H}{\partial \boldsymbol{u}} = 0$$
  • State Equation
$$\dot{\boldsymbol{x}} = -\frac{\partial H}{\partial \boldsymbol{\lambda}} =f[\boldsymbol{x}(t),\boldsymbol{u}(t),t]$$

There are several different possibilities for Transversality conditions:

Condition 1: Fixed initial and final value

Fixed initial and final value means:

$$\boldsymbol{x}(t_0)=\boldsymbol{x}_0,\boldsymbol{x}(t_f)=\boldsymbol{x}_{f}$$

Complete equations to be solved are:

$$\left\{\begin{matrix} \dot{\boldsymbol{\lambda}} =- \frac{\partial H}{\partial \boldsymbol{x}} \\\ \frac{\partial H}{\partial \boldsymbol{u}} = 0\\\ \dot{\boldsymbol{x}} =f[\boldsymbol{x}(t),\boldsymbol{u}(t),t] \\\ \boldsymbol{x}(t_0)=\boldsymbol{x}_0,\boldsymbol{x}(t_f)=\boldsymbol{x}_{f} \end{matrix}\right.$$

For example:

$$min \int_{0}^{2} u^2dt \\\ s.t. \hspace{0.4cm} \dot{\boldsymbol{x}} = \begin{bmatrix} 0&1 \\ 0&0 \end{bmatrix}\boldsymbol{x} +\begin{bmatrix}0\\1\end{bmatrix}u \\\ \boldsymbol{x}(0)=\begin{bmatrix}1\\1\end{bmatrix},\boldsymbol{x}(2)=\begin{bmatrix}0\\0\end{bmatrix}$$

Equations to be solved are:

$$\left\{\begin{matrix} \dot{\lambda_1} = 0\\\ \dot{\lambda_2} = -\lambda_1\\\ \dot{x_1} = x_2 \\\ \dot{x_2} = u \\\ u + \lambda_2 = 0\\\ \end{matrix}\right.$$

Boundary conditions are:

$$x_1(0)=1,x_2(0)=1,x_1(2)=0,x_2(2)=0$$

This is a typical Differential Algebraic Equations(DAE) with Boundary Value Problems(BVP). DifferentialEqutions.jl is a powerful solver to solve this problem.

Condition 2: Fixed initial value and Free final value

In this condition, consider Bolza Type:

$$min (\Phi(\boldsymbol{x}(t_f),t_f)+\int_{t_0}^{t_f} L[\boldsymbol{x}(t),\boldsymbol{u}(t),t]dt)$$

the $\Phi(\boldsymbol{x}(t_f),t_f)$ are some special requirements for end time.

Complete equations to be solved are:

$$\left\{\begin{matrix} \dot{\boldsymbol{\lambda}} =- \frac{\partial H}{\partial \boldsymbol{x}} \\\ \frac{\partial H}{\partial \boldsymbol{u}} = 0\\\ \dot{\boldsymbol{x}} =f[\boldsymbol{x}(t),\boldsymbol{u}(t),t] \\\ \boldsymbol{x}(t_0)=\boldsymbol{x}_0\\\boldsymbol{\lambda}(t_f)=\frac{\partial \boldsymbol{\Phi}}{\partial \boldsymbol{x}}|_{t=t_f} \end{matrix}\right.$$

For example:

$$min \int_{0}^{2} u^2dt \\\ s.t. \hspace{0.4cm} \dot{\boldsymbol{x}} = \begin{bmatrix} 0&1 \\ 0&0 \end{bmatrix}\boldsymbol{x} +\begin{bmatrix}0\\1\end{bmatrix}u \\\ \boldsymbol{x}(0)=\begin{bmatrix}1\\1\end{bmatrix},\boldsymbol{x}(2)=\begin{bmatrix}0\\free\end{bmatrix}$$

Equations to be solved are:

$$\left\{\begin{matrix} \dot{\lambda_1} = 0\\\ \dot{\lambda_2} = -\lambda_1\\\ \dot{x_1} = x_2 \\\ \dot{x_2} = u \\\ u + \lambda_2 = 0\\\ \end{matrix}\right.$$

Boundary conditions are:

$$x_1(0)=1,x_2(0)=1,x_1(2)=0,\lambda_2(2)=\frac{\partial \Phi}{\partial x_2(1)}=0$$

This is also a DAE with BVP.

There still some other conditions which DifferentialEquations can't apply to, but JuMP can solve them with a Optimization form.

Optimization form

Essentially, Optimal Control Problem is a optimization problem.Optimization methods can solve it by discretizing the continuous function.

From

$$min \int_{t_0}^{t_f} L[\boldsymbol{x}(t),\boldsymbol{u}(t),t]dt \\s.t. \hspace{0.4cm} \dot{\boldsymbol{x}} = f[\boldsymbol{x}(t),\boldsymbol{u}(t),t]$$

to

$$min \sum_{i=1}^{n} L(\boldsymbol{x}_i,\boldsymbol{u}_i,t_i) \\s.t. \hspace{0.4cm} \boldsymbol{x}_{i+1} =\boldsymbol{x}_{i}+f(\boldsymbol{x}_i,\boldsymbol{u}_i,t_i)*dt$$

Actually, discretization method above is Euler method or we can use Backward Euler method:

$$min \sum_{i=1}^{n} L(\boldsymbol{x}_i,\boldsymbol{u}_i,t_i) \\s.t. \hspace{0.4cm} \boldsymbol{x}_{i+1} =\boldsymbol{x}_{i}+f(\boldsymbol{x}_{i+1},\boldsymbol{u}_{i+1},t_{i+1})*dt$$

There are still lots of discretization methods we can choose like Trapezoidal Method, Simpson Method, Adams method and so on.

For example in Condition 1, we can get:

$$min \sum_{i=1}^{100} u_i^2dt \\\ s.t. \hspace{0.4cm} \boldsymbol{x}_{i+1} = \boldsymbol{x}_i + (\begin{bmatrix} 0&1 \\ 0&0 \end{bmatrix}\boldsymbol{x}_i +\begin{bmatrix}0\\1\end{bmatrix}u_i) * 0.02 \\\ \boldsymbol{x}_1=\begin{bmatrix}1\\1\end{bmatrix},\boldsymbol{x}_{100}=\begin{bmatrix}0\\0\end{bmatrix}$$

With the Optimization form, Condition 3 can be solved.

Condition 3: Fixed initial value and final value with constrain

$$min \int_{0}^{2} u^2dt \\\ s.t. \hspace{0.4cm} \dot{\boldsymbol{x}} = \begin{bmatrix} 0&1 \\ 0&0 \end{bmatrix}\boldsymbol{x} +\begin{bmatrix}0\\1\end{bmatrix}u \\\ \boldsymbol{x}(0)=\begin{bmatrix}1\\1\end{bmatrix}\\\ x_1(2)+x_2(2) =0$$

With the Optimization form, we just add a different constraint:

$$min \sum_{i=1}^{100} u_i^2dt \\\ s.t. \hspace{0.4cm} \boldsymbol{x}_{i+1} = \boldsymbol{x}_i + (\begin{bmatrix} 0&1 \\ 0&0 \end{bmatrix}\boldsymbol{x}_i +\begin{bmatrix}0\\1\end{bmatrix}u_i) * 0.02 \\\ \boldsymbol{x}_1=\begin{bmatrix}1\\1\end{bmatrix}\\\ x_{1,100}+x_{2,100}=0$$

Awesome!