[Doc] User guide to the duals: every kind, constraint ↔ dual, direct ↔ indirect
メンテナーはふだん 1 日以内に返信
@ocots がすでに取り組んでいます。
2026年10月31日 から。
評価
この issue はまだ評価されていません。
説明
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
- 主要言語
- Julia
- スター
- 135
- フォーク
- 11
- 平均マージ
- 7時間 51分
- マージ済み PR(30日)
- 22
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
control-toolbox/OptimalControl.jl のほかの issue
-
Tests of the duals: every kind of constraint, direct vs indirect, pinned algorithms対応中かも @ocots が 7 日前に担当しました。 オープン
control-toolbox/OptimalControl.jl#1034 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
[Doc] Examples for the sign convention of duals and costate (min/max, writing of constraints, direct vs indirect)対応中かも @ocots が 15 日前に担当しました。 オープン
control-toolbox/OptimalControl.jl#1016 · コメント 1 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Documentation: sign conventions (min/max, p⁰, constraints, duals) and how they appear in a solution対応中かも @ocots が 17 日前に担当しました。 オープンdocumentation
control-toolbox/OptimalControl.jl#1015 · コメント 2 件 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Tests fail on Julia 1.13: keyword-only anonymous function in test/problems/goddard.jl対応中かも @ocots が 19 日前に担当しました。 オープン
control-toolbox/OptimalControl.jl#996 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
-
Docs: use Makie.Figure() instead of Makie.plot() for an empty canvas対応中かも @ocots が 20 日前に担当しました。 オープン
control-toolbox/OptimalControl.jl#994 · 担当者 1 名 ·
メンテナーはふだん 1 日以内に返信
control-toolbox/OptimalControl.jl の issue をすべて見る
似ている issue
-
lux
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100