Commit 31a81ad
Add ILP solver backends (HiGHS, CPLEX, lp-solvers) and fix good_lp compatibility (#792)
* refactor: upgrade good_lp to 1.15.0 and add lp-solvers backend (#787)
- Upgrade good_lp from 1.14.2 to 1.15.0
- Add ilp-lp-solvers feature for Gurobi/CPLEX/CBC/GLPK support
(via lp-solvers crate, which shells out to solver CLIs)
- Remove unused backend features (coin-cbc, clarabel, scip, lpsolve, microlp)
- Update CLI help text
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: add prism graph HC→QAP→ILP roundtrip test (#780)
Verifies the full reduction chain HamiltonianCircuit → QuadraticAssignment
→ ILP on the prism graph (6 vertices, 9 edges) — the instance that
triggered #780. Confirms the extracted solution is a valid HC.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* refactor: replace lp-solvers with cplex backend
CPLEX is supported natively by good_lp via cplex-rs (direct C API),
no need for the lp-solvers shell-out approach.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: remove prism graph roundtrip test
Temporary test to verify #780 fix — no longer needed.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: add lpsolve backend
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: add all good_lp solver backends
Add coin-cbc, clarabel, scip, microlp, and lp-solvers (Gurobi/GLPK via CLI).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* chore: keep only useful ILP backends (HiGHS, CPLEX, lp-solvers)
Remove coin-cbc, clarabel, scip, microlp, lpsolve — either inferior
to HiGHS or niche. lp-solvers covers Gurobi/GLPK via CLI shell-out.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* test: add prism graph HC→QAP→ILP roundtrip test
Restores the prism graph (6 vertices, 9 edges) end-to-end test
that exercises the HC → QAP → ILP → solve → extract pipeline.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: downgrade good_lp to 1.14.2 to fix lp-solvers build on Rust 1.90
good_lp 1.15.0 uses `gen` as a variable name, which is a reserved
keyword in newer Rust compilers, breaking the lp-solvers feature.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>1 parent e1b41bd commit 31a81ad
4 files changed
Lines changed: 43 additions & 14 deletions
File tree
- problemreductions-cli
- src
- src/unit_tests/rules
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
| 20 | + | |
| 21 | + | |
25 | 22 | | |
26 | 23 | | |
27 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
| 22 | + | |
| 23 | + | |
27 | 24 | | |
28 | 25 | | |
29 | 26 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
767 | 767 | | |
768 | 768 | | |
769 | 769 | | |
770 | | - | |
771 | | - | |
772 | | - | |
773 | | - | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
774 | 773 | | |
775 | 774 | | |
776 | 775 | | |
| |||
Lines changed: 36 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
0 commit comments