[Tracking] Per-modeling lists of problems, drift-proof tests and cron
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ả
Goal
Reorganise OptimalControlProblems.jl around four ideas:
- Each modeling has its own list of problems, discovered automatically from the files: a problem may exist in OptimalControl without a JuMP version. No list of problems is written by hand anywhere.
- Every problem keeps a comparison: another modeling (automatic OptimalControl / JuMP tests on the intersection), or a sourced
reference_objective. - Drift is caught by tests: fast consistency tests on every PR, slow tests in a weekly cron (as in CTFlows.jl).
- The collection grows, including from SciML's OptimalControlBenchmarks (Corleone), with clean documentation of all this.
This builds on the port to OptimalControl v2 (#283) and the JuMP schemes (#284), both tracked in control-toolbox/CTBenchmarks.jl#200 for the benchmark paper. Roadmap: #257.
Work, in order
Step 0 brings the repository infrastructure in line with the other packages; steps 1 to 3 are the base; steps 4 to 7 can then go in parallel.
- Repository infrastructure: #313 (harmonization with ct-conventions:
AGENTS.md, labels, templates, lint), then #312 (release infrastructure). Agents working on the other sub-issues needAGENTS.mdand the pinned conventions. - Per-modeling lists and consistency tests: #303, #304 (with #172, #173 under #303).
- Port to OptimalControl v2 and new problem interface: #283 (with #136). The problem returns the continuous problem and its initial guess; modeler, options, scheme and CPU/GPU are chosen in
solve, so this package no longer passes modeler options. - Weekly cron: #305.
- JuMP with Euler, trapezoid and midpoint, factorised in
ext/JuMPModels/schemes.jl, and NLP equivalence tests against ADNLP and Exa: #284 (with #166). - Metadata and shared initial guess: #306 (with #151); measure, then keep or drop the
_svariants: #174. - Plots in a Plots extension, shared by OptimalControl solutions and JuMP models: #175, #134; documentation: #307 (with #229).
- Corleone's OptimalControlBenchmarks: #308.
- Precompile the problems, so that users and tests do not recompile them (later, not a priority): #373.
- Restore the full CI matrix (Julia 1.10, macOS, Windows) at the end of the reorganisation: #344.
Decisions
- Object returned by an OptimalControl problem: a struct
(name, ocp, init, metadata)holding the continuous (mathematical) problem, not a discretized one. Discretization is left to the user, throughsolve(descriptive or explicit mode) ordiscretize. See #283. - Availability in a modeling: deduced from file presence, the single source of truth. See #303.
- Problem available in OptimalControl only: a sourced
reference_objectiveis enough. - Euler in JuMP: explicit at least, implicit too (one more function once schemes are factorised). See #284.
- Corleone: a proof of concept at the end, as an extension, on one problem. See #308.
- Branch: no long-lived branch. #303, #304 and #309 are not breaking and go to
mainon the 0.5 API. The port then goes tomainthrough PRs, with the version set to 0.6.0-beta (as OptimalControl, whosemainis 2.2.1-beta) anduse_ct_registry: truein the workflows.
What each modeling returns
Rule: each modeling returns the most abstract object it can represent, and takes at retrieval only what it needs to build it.
| Modeling | Returned object | Arguments at retrieval |
|---|---|---|
| OptimalControl | continuous problem: struct (name, ocp, init, metadata) |
parameters |
| JuMP | NLP, necessarily discretized | grid_size, scheme, JuMP.Model arguments |
| Corleone (PoC) | MTK system and its grids (path constraints are sampled in the constructor) | control_grid, shooting_grid, constraint_grid |
grid_size and scheme in JuMP use exactly the names and values of OptimalControl.Collocation (:euler, :euler_implicit, :trapeze, :midpoint), so that tests build both NLPs identically.
Checks between modelings
- Same discretization (JuMP, ADNLP, Exa): NLP equivalence (#284). It also implies the same mathematical problem.
- Same mathematical problem, different methods (Corleone): evaluate the optimal control found by OptimalControl in the other model (cost, constraint violation), and compare optima with a loose tolerance (#308).
- Reference:
reference_objective(#306).
How to work on this
Each sub-issue is closed by one or a few PRs. Tick the decisions above when taken, and record them in the relevant sub-issue.
- 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 1 ngày trước. Đ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