[Tracking] Per-modeling lists of problems, drift-proof tests and cron

Đang mở
#310 14 bình luận 0 reaction 1 người được giao Xem trên GitHub

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ả

roadmap

Goal

Reorganise OptimalControlProblems.jl around four ideas:

  1. 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.
  2. Every problem keeps a comparison: another modeling (automatic OptimalControl / JuMP tests on the intersection), or a sourced reference_objective.
  3. Drift is caught by tests: fast consistency tests on every PR, slow tests in a weekly cron (as in CTFlows.jl).
  4. 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.

  1. Repository infrastructure: #313 (harmonization with ct-conventions: AGENTS.md, labels, templates, lint), then #312 (release infrastructure). Agents working on the other sub-issues need AGENTS.md and the pinned conventions.
  2. Per-modeling lists and consistency tests: #303, #304 (with #172, #173 under #303).
  3. 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.
  4. Weekly cron: #305.
  5. JuMP with Euler, trapezoid and midpoint, factorised in ext/JuMPModels/schemes.jl, and NLP equivalence tests against ADNLP and Exa: #284 (with #166).
  6. Metadata and shared initial guess: #306 (with #151); measure, then keep or drop the _s variants: #174.
  7. Plots in a Plots extension, shared by OptimalControl solutions and JuMP models: #175, #134; documentation: #307 (with #229).
  8. Corleone's OptimalControlBenchmarks: #308.
  9. Precompile the problems, so that users and tests do not recompile them (later, not a priority): #373.
  10. 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, through solve (descriptive or explicit mode) or discretize. 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_objective is 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 main on the 0.5 API. The port then goes to main through PRs, with the version set to 0.6.0-beta (as OptimalControl, whose main is 2.2.1-beta) and use_ct_registry: true in 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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của control-toolbox/OptimalControlProblems.jl

Tất cả issue của control-toolbox/OptimalControlProblems.jl

Issue tương tự

Thêm issue về Julia

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.