Double integrator: time minimisation

The time minimisation double integrator problem consists in minimising

\[ tf \]

subject to the constraints

\[ \dot x_1(t) = x_2(t), \quad \dot x_2(t) = u(t), \quad u(t) \in [-1,1]\]

and the limit conditions

\[ x(0) = (-1,0), \quad x(t_f) = (0,0)\]

You can access the problem in the CTProblems package:

using CTProblems
prob = Problem(:integrator, :time, :x_dim_2, :u_dim_1, :mayer, :u_cons)
title           = Double integrator time - minimise tf under the constraint |u| ≤ γ
model    (Type) = OptimalControlModel{Autonomous, NonFixed}
solution (Type) = OptimalControlSolution

Then, the model is given by

prob.model

The (autonomous) optimal control problem is given by:

    tf ∈ R, variable
    t ∈ [t0, tf], time
    x ∈ R², state
    u ∈ R, control
    x(t0) == x0, initial_con
    x(tf) == xf, final_con
    -γ ≤ u(t) ≤ γ, u_con
    ẋ(t) == A * x(t) + B * u(t)
    tf → min

The (autonomous) optimal control problem is of the form:

    minimize  J(x, u, tf) = g(x(0), x(tf), tf)

    subject to

        ẋ(t) = f(x(t), u(t), tf), t in [0, tf] a.e.,

        ηl ≤ η(x(t), tf) ≤ ηu, 
        ϕl ≤ ϕ(x(0), x(tf), tf) ≤ ϕu, 

    where x(t) ∈ R², u(t) ∈ R and tf ∈ R.

Declarations (* required):
╭────────┬────────┬──────────┬──────────┬───────────┬────────────┬─────────────╮
│ times* │ state* │ control* │ variable │ dynamics* │ objective* │ constraints │
├────────┼────────┼──────────┼──────────┼───────────┼────────────┼─────────────┤
│   V    │   V    │    V     │    V     │     V     │     V      │      V      │
╰────────┴────────┴──────────┴──────────┴───────────┴────────────┴─────────────╯

You can plot the solution.

using Plots
plot(prob.solution)