[Dev] Align the costate and dual signs of the JuMP models with OptimalControl
Maintainer thường phản hồi trong vòng 1 ngày
@ocots đang làm issue này rồi.
Từ ngày 4/11/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Context
On the same problem and the same scheme (trapezoidal rule), the costate returned by the JuMP accessor costate(model) is the opposite of the costate of the OptimalControl solution. Example on beam, N = 100, trapezoid, Ipopt: objectives agree (8.89860 in both), but
OptimalControl costate(sol)(0.5) = [ 4.2e-6, 0.00795]
JuMP costate(model)(0.5) = [-2.3e-5, -0.00800]
The documentation works around it by plotting -p(t) for JuMP (docs/src/tutorial-solve.md, docs/problems.jl), and the comparison tests do not compare costates.
What to do (later)
- Apply the sign conventions of ct-conventions
rules/signs.md(SGN1–SGN6, v0.10.0) to the JuMP side: costate and, when they are exposed, the duals of the constraints, so that the same constraint has the same dual in both modelings (SGN5). - Follow the ecosystem work on multipliers and duals: https://github.com/orgs/control-toolbox/discussions/68#discussioncomment-19323512 (not done yet); this issue waits for it.
- Then remove the
-p(t)workaround from the docs and add costate comparisons to the comparison tests.
Related: #283 (port to OptimalControl v2, JuMP → Solution), #284 (JuMP schemes), #170.
- Ngôn ngữ chính
- Julia
- Star
- 13
- Fork
- 1
- Merge trung bình
- 3 giờ 20 phút
- Pull request đã merge (30 ngày)
- 27
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của control-toolbox/OptimalControlProblems.jl
-
[Metadata] Declared fields: tags, references, Corleone, reference solutionCó thể đã có người làm @ocots đã nhận hôm nay. Đang mở
control-toolbox/OptimalControlProblems.jl#379 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Cron] Robustness of the initial guess and known local objectivesCó thể đã có người làm @ocots đã nhận hôm nay. Đang mở
control-toolbox/OptimalControlProblems.jl#378 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Metadata] Shared initial guess in the metadata, read by every modelingCó thể đã có người làm @ocots đã nhận hôm nay. Đang mở
control-toolbox/OptimalControlProblems.jl#377 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Metadata] Compute the features of a problem from its modelCó thể đã có người làm @ocots đã nhận hôm nay. Đang mở
control-toolbox/OptimalControlProblems.jl#376 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Metadata] Reference objectives per scheme, computed by a scriptCó thể đã có người làm @ocots đã nhận hôm nay. Đang mở
control-toolbox/OptimalControlProblems.jl#375 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của control-toolbox/OptimalControlProblems.jl
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
backport 1.14 GC
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
`binary_focal_loss` throws a `DomainError` when a negative sample has `ŷ = 1`Có thể đã có người làm @parth-patel010 đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
FluxML/Flux.jl#2818 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
JuliaDiff/TaylorSeries.jl#445 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
control-toolbox/CTActions#139 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày