[Doc] User guide to the duals: every kind, constraint ↔ dual, direct ↔ indirect

Abierto
#1,035 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@ocots ya está trabajando en esto.

Desde el 31/10/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

Part of control-toolbox/CTFlows.jl#512 (tracking of the constraint duals), workstream C.

Goal

A user-side guide to the duals of a solution. It should show users everything they can get, how each dual relates to its constraint, and how the direct and the indirect methods meet. #1015 (the page on the convention) and #1016 (the sign examples) are parts of it. This issue is the guide that puts them together and shows off the feature.

What the guide should show

  1. Every kind of dual, read by its label with dual(sol, ocp, :label): path (pure state, mixed), state box, control box, boundary, and variable box. For each kind: what it is (a function of time or a number), its sign, and how it appears in plot(sol).
  2. The link between a constraint and its dual.
    • An inequality has a nonnegative dual however it is written; an equality or a two-sided constraint has a signed dual (SGN2, SGN3).
    • The dual is 0 where the constraint is inactive and nonzero on a boundary arc.
    • The same constraint as a box or as a path constraint gives the same dual (SGN5).
    • The labels: why naming a constraint matters, and what happens without a name.
  3. The link between the direct and the indirect method.
    • The same problem solved by solve and rebuilt with Flow(ocp, law; constraint=:label, multiplier=μ): the same costate and the same duals, compared on one plot.
    • The dictionary between the μ of the maximum principle and dual.
    • What the indirect side computes by itself (control box, boundary duals by transversality) and what the user gives (μ of a state or mixed constraint).
    • Multi-phase solutions: the jumps of the duals at the switching times (#992).
  4. What a dual tells about the solution: sensitivity, a check of the extremal, and an unknown dual (PreconditionError) rather than a wrong 0.

Depends on

The features of control-toolbox/CTFlows.jl#512, workstreams A and B. Each section can be written as soon as its feature is released. Each example should also be a test (#1034).

Related: #1014, #1015, #1016, #1034, #992, #968.

🤖 Generated with Claude Code

Lenguaje dominante
Julia
Estrellas
135
Forks
11
Merge medio
7 h 51 min
PR fusionados (30 d)
22

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de control-toolbox/OptimalControl.jl

Todos los issues de control-toolbox/OptimalControl.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.