Commit acbd018
mip: cheap dual-only strong-branch probes (CBC-style limited iteration) (#19)
Strong branching re-solved each probe child to full optimality (warm
primal, 80ms deadline), which grinds on the degenerate LPs these
scheduling models produce. CBC instead runs a few dual-simplex
iterations per probe and reads off the bound: the dual stays
dual-feasible throughout, so its objective is a valid lower bound
(a conservative branch-gain) at any iteration.
This adds an LP probe mode: SetProbe(cap) makes a warm re-solve stop
after the dual repair with an IterCap on the dual pivots, returning the
dual bound and skipping the primal phase. strongBranch enables it around
its candidate probes. The bound is a lower estimate, so branch scores,
pseudocosts and cutoff-fathoming all stay sound (conservative).
Golden suite (../optimizer): case 018 0.57s -> 0.34s (-40%), case 020
5.51s -> 4.99s (-9%); suite -10%. Case 021 (cut-loop bound, not
branching bound) is unchanged within noise. All cases proven optimal.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent c00a50f commit acbd018
2 files changed
Lines changed: 30 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1216 | 1216 | | |
1217 | 1217 | | |
1218 | 1218 | | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
| 1222 | + | |
1219 | 1223 | | |
1220 | 1224 | | |
1221 | 1225 | | |
| |||
1248 | 1252 | | |
1249 | 1253 | | |
1250 | 1254 | | |
| 1255 | + | |
| 1256 | + | |
| 1257 | + | |
| 1258 | + | |
| 1259 | + | |
1251 | 1260 | | |
1252 | 1261 | | |
1253 | 1262 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
82 | 89 | | |
83 | 90 | | |
84 | 91 | | |
| |||
308 | 315 | | |
309 | 316 | | |
310 | 317 | | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
311 | 323 | | |
312 | 324 | | |
313 | 325 | | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
314 | 331 | | |
315 | 332 | | |
316 | 333 | | |
| |||
358 | 375 | | |
359 | 376 | | |
360 | 377 | | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
361 | 382 | | |
362 | 383 | | |
363 | 384 | | |
| |||
0 commit comments