You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Cron] Robustness of the initial guess and known local objectives #378
Agents: read the guide for agents in #310 first. Specification: this description, #306 and its comments.
Sub-issue of #306, part 4 of 5. Depends on part 1 (reference objectives).
Scope
From the comment of #306 on local minima: a cron test solving each problem under several Ipopt options and reporting the spread of the objective; a list of known local objectives per problem, scheme and default grid, next to the reference. The convergence report says which known solution a solve reached (global, known local, new). Reported, never a test failure (#360).
Done when
Robustness cron test and its report.
Known local objectives in the metadata, generated, not typed.
Input from #375 (PR #380): the first computation of the reference objectives found three disagreements between configurations, all split by solver, not by modeling or platform:
mountain_car: Ipopt (JuMP, OptimalControl ADNLP) 102.39757, MadNLP (OptimalControl and scalarized, Exa) 102.38100: two local solutions. This is the 1.6e-4 gap that once made the scalarized model :draft; it does not come from the scalarization.
jackson, rocket: MadNLP stops 1.5e-6 and 1.7e-6 above Ipopt, identically on every platform; probably the stopping test of MadNLP at tol = 1e-8 rather than another solution; to check.
The per-solve objectives are in ext/MetaData/references/<problem>.toml (results).
Known solutions of each problem in the references files (solutions), grouped within OptimalControlProblems.SAME_SOLUTION = 1e-5; solution_kind(p, objective) says :best, :local or :new; a solution column in every report; new solution flagged in cron-convergence.
Next: the robustness and weekly crons are running on main (workflow_dispatch). Once they finish, the references are computed again from their artifacts (tools/references/README.md) in a pull request; bioreactor's reference then becomes the best known solution.
Activity
ocots commentedon Nov 5, 2026
Input from #375 (PR #380): the first computation of the reference objectives found three disagreements between configurations, all split by solver, not by modeling or platform:
:draft; it does not come from the scalarization.tol = 1e-8rather than another solution; to check.The per-solve objectives are in
ext/MetaData/references/<problem>.toml(results).ocots commentedon Nov 6, 2026
Taken by an agent; a plan follows once #376 is in review.
Merge pull request #393 from control-toolbox/feat/378-local-solutions
ocots commentedon Nov 6, 2026
Done in #393 (merged).
solutions), grouped withinOptimalControlProblems.SAME_SOLUTION = 1e-5;solution_kind(p, objective)says:best,:localor:new; asolutioncolumn in every report;new solutionflagged incron-convergence.test/robustness/<env>/, moderobustness, monthly cronCronRobustness.yml; Ipopt and MadNLP option sets (MadNLP's barrier passed withbypass, see MadNLP strategy: mu_init and mu_min are accepted but ignored by MadNLP 0.10; barrier is not declared CTSolvers.jl#321).Next: the robustness and weekly crons are running on
main(workflow_dispatch). Once they finish, the references are computed again from their artifacts (tools/references/README.md) in a pull request; bioreactor's reference then becomes the best known solution.🤖 Generated with Claude Code