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)Lagrange❌❌✅autonomous
Double integrator energy cc(2, 1)Lagrange✅ u❌✅autonomous
Double integrator energy distance(2, 1)Bolza❌❌✅autonomous
Double integrator energy sc(2, 1)Lagrange✅ x❌✅autonomous
Double integrator time(2, 1)Mayer✅ u❌✅autonomous
Goddard(3, 1)Mayer✅ x, u✅✅autonomous
LQR(2, 1)Lagrange❌❌✅autonomous
Orbital transfert consumption(4, 2)Lagrange✅ u❌❌ uautonomous
Orbital transfert energy(4, 2)Lagrange❌❌✅autonomous
Orbital transfert time(4, 2)Mayer✅ u❌✅autonomous
Simple exponential consumption(1, 1)Lagrange✅ u❌❌ uautonomous
Simple exponential energy(1, 1)Lagrange❌❌✅autonomous
Simple exponential time(1, 1)Mayer✅ u❌✅autonomous
Simple integrator energy(1, 1)Lagrange❌❌✅autonomous
Simple integrator lqr(1, 1)Bolza❌❌✅autonomous
Simple integrator mixed constraint(1, 1)Lagrange✅ (x,u)❌✅autonomous
Simple integrator turnpike(1, 1)Lagrange✅ u✅✅autonomous
Simple integrator non autonomous(1, 1)Lagrange✅ x❌✅non 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