[Doc] User guide to the duals: every kind, constraint ↔ dual, direct ↔ indirect
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
- 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 inplot(sol). - 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
0where 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.
- An inequality has a nonnegative dual however it is written; an equality or a two-sided constraint has a signed dual (
- The link between the direct and the indirect method.
- The same problem solved by
solveand rebuilt withFlow(ocp, law; constraint=:label, multiplier=μ): the same costate and the same duals, compared on one plot. - The dictionary between the
μof the maximum principle anddual. - 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).
- The same problem solved by
- What a dual tells about the solution: sensitivity, a check of the extremal, and an unknown dual (
PreconditionError) rather than a wrong0.
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
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de control-toolbox/OptimalControl.jl
-
Tests of the duals: every kind of constraint, direct vs indirect, pinned algorithmsPosiblemente ocupada @ocots la tomó hace 6 días. Abierto
control-toolbox/OptimalControl.jl#1034 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Doc] Examples for the sign convention of duals and costate (min/max, writing of constraints, direct vs indirect)Posiblemente ocupada @ocots la tomó hace 15 días. Abierto
control-toolbox/OptimalControl.jl#1016 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Documentation: sign conventions (min/max, p⁰, constraints, duals) and how they appear in a solutionPosiblemente ocupada @ocots la tomó hace 17 días. Abiertodocumentation
control-toolbox/OptimalControl.jl#1015 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Tests fail on Julia 1.13: keyword-only anonymous function in test/problems/goddard.jlPosiblemente ocupada @ocots la tomó hace 19 días. Abierto
control-toolbox/OptimalControl.jl#996 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Docs: use Makie.Figure() instead of Makie.plot() for an empty canvasPosiblemente ocupada @ocots la tomó hace 20 días. Abierto
control-toolbox/OptimalControl.jl#994 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de control-toolbox/OptimalControl.jl
Issues similares
-
lux
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Add project: Typst_jll.jlPosiblemente ocupada @github-actions la tomó hace 1 día. Abiertoadd-project
Dificultad 1/5 Menos de una hora Aptitud para principiantes 76/100
YDX-2147483647/best-of-typst#590 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100