List of problems

Characteristics of the problems

In the following table, we give some characteristics about the problems and their solutions.

Problem(x, u) dimsObjectiveConstraint arcSingular arcDifferentiableTime dependence
Double integrator consumption(2, 1)Lagrange✅ u❌ uautonomous
Double integrator energy(2, 1)Lagrangeautonomous
Double integrator energy cc(2, 1)Lagrange✅ uautonomous
Double integrator energy distance(2, 1)Bolzaautonomous
Double integrator energy sc(2, 1)Lagrange✅ xautonomous
Double integrator time(2, 1)Mayer✅ uautonomous
Goddard(3, 1)Mayer✅ x, uautonomous
LQR(2, 1)Lagrangeautonomous
Orbital transfert consumption(4, 2)Lagrange✅ u❌ uautonomous
Orbital transfert energy(4, 2)Lagrangeautonomous
Orbital transfert time(4, 2)Mayer✅ uautonomous
Simple exponential consumption(1, 1)Lagrange✅ u❌ uautonomous
Simple exponential energy(1, 1)Lagrangeautonomous
Simple exponential time(1, 1)Mayer✅ uautonomous
Simple integrator energy(1, 1)Lagrangeautonomous
Simple integrator lqr(1, 1)Bolzaautonomous
Simple integrator mixed constraint(1, 1)Lagrange✅ (x,u)autonomous
Simple integrator turnpike(1, 1)Lagrange✅ uautonomous
Simple integrator non autonomous(1, 1)Lagrange✅ xnon autonomous

Legend:

  • Problem: a name with a link to the problem page
  • (x, u) dims: dimension of the state and the control
  • Objective: Lagrange, Mayer or Bolza
  • Constraint arc (active on the solution):
    • ❌ (no)
    • ✅ x(pure state constraints)
    • ✅ u (pure control constraints)
    • ✅ (x,u) (mixed state/control constraints)
  • Singular arc: in the case of affine problems, we tell if the solution has a singular arc, that is a non-empty arc along which the switching function vanishes.
    • ❌ (no)
    • ✅ (yes)
  • Differentiable:
    • ✅ (yes)
    • ❌ x (the dynamics and/or other data from the model is non differentiable wrt to the state)
    • ❌ u (the dynamics and/or other data from the model is non differentiable wrt to the control)
  • Time dependence: autonomous or non autonomous

Get some problems for tests

To get all the problems as a Tuple of OptimalControlProblem, simply

Problems()

To get all the problems with one dimensional state and Lagrange cost:

Problems(:x_dim_1, :lagrange)

You can use more sophisticated rules to filter. You simply have to define a logical condition with the combination of symbols and the three operators: !, | and &, respectively for the negation, the disjunction and the conjunction.

Here is an example to get the problems, as a Tuple of OptimalControlProblem, whom description does not contain :lagrange, or contains :time (the or is not exclusive):

@Problems !:lagrange | :time