Skip to content

Add best-iterate restoration on numerical-error / max-iter exits - #76

Merged
govindchari merged 3 commits into
mainfrom
gc/best-iterate-only
May 6, 2026
Merged

govindchari merged 3 commits into
mainfrom
gc/best-iterate-only

Conversation

@govindchari

Copy link
Copy Markdown
Member

Track the iterate with the lowest composite residual metric (in inaccurate-tolerance units) during solve. On QOCO_NUMERICAL_ERROR or QOCO_MAX_ITER exit, restore that iterate; if it satisfies the inaccurate tolerance, downgrade the status to QOCO_SOLVED_INACCURATE.

Rescues near-converged solves that hit a late-stage stall with a usable solution rather than failing outright. Cheap (no per-iter cost beyond a copy when a new best is found) and additive — strict SOLVED count is unchanged on all benchmarks; essentially-solved count goes up.

Benchmarks (default settings, full sets):

  • misc/iter_0024: NUMERICAL_ERROR -> SOLVED_INACCURATE
  • mm/CVXQP1_L: NUMERICAL_ERROR -> SOLVED_INACCURATE
  • all other problems unchanged

Track the iterate with the lowest composite residual metric (in
inaccurate-tolerance units) during solve. On QOCO_NUMERICAL_ERROR or
QOCO_MAX_ITER exit, restore that iterate; if it satisfies the inaccurate
tolerance, downgrade the status to QOCO_SOLVED_INACCURATE.

Rescues near-converged solves that hit a late-stage stall with a usable
solution rather than failing outright. Cheap (no per-iter cost beyond a
copy when a new best is found) and additive — strict SOLVED count is
unchanged on all benchmarks; essentially-solved count goes up.

Benchmarks (default settings, full sets):
  - misc/iter_0024: NUMERICAL_ERROR -> SOLVED_INACCURATE
  - mm/CVXQP1_L:   NUMERICAL_ERROR -> SOLVED_INACCURATE
  - all other problems unchanged
@github-actions

github-actions Bot commented May 6, 2026

Copy link
Copy Markdown

Download Benchmark Artifacts

Benchmark Summary

Problems Solved

Dataset Main Solved Diff Solved Main Iters Diff Iters Main IR Iters Diff IR Iters
cutest 43 / 62 43 / 62 1069 1069 2301 2301
misc 1 / 3 1 / 3 15 15 2 2
mm 136 / 138 136 / 138 2615 2615 4420 4420
mpc 63 / 64 63 / 64 480 480 587 587

@github-actions

github-actions Bot commented May 6, 2026

Copy link
Copy Markdown

Download Benchmark Artifacts

Benchmark Summary

Problems Solved

Dataset Main Solved Diff Solved Main Iters Diff Iters Main IR Iters Diff IR Iters
cutest 43 / 62 43 / 62 1069 1069 2301 2301
misc 1 / 3 1 / 3 15 15 2 2
mm 136 / 138 136 / 138 2615 2615 4420 4420
mpc 63 / 64 63 / 64 480 480 587 587

@github-actions

github-actions Bot commented May 6, 2026

Copy link
Copy Markdown

Download Benchmark Artifacts

Benchmark Summary

Problems Solved

Dataset Main Solved Diff Solved Main Iters Diff Iters Main IR Iters Diff IR Iters
cutest 43 / 62 43 / 62 1069 1069 2301 2301
misc 1 / 3 1 / 3 15 15 2 2
mm 136 / 138 136 / 138 2615 2615 4420 4420
mpc 63 / 64 63 / 64 480 480 587 587

@govindchari
govindchari merged commit fae2acf into main May 6, 2026
25 checks passed
@govindchari
govindchari deleted the gc/best-iterate-only branch May 6, 2026 18:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant