Skip to content

v1.0.3

Latest

Choose a tag to compare

@JWally JWally released this 24 Jan 16:49

Fixed

  • Unrestricted variables with Big-M report false infeasibility - Phase 1 of the simplex incorrectly treated negative-valued unrestricted basic variables as infeasibility violations, causing models with unrestricted variables and Big-M constraints (e.g., absolute value formulations |x| >= C) to return feasible: false or find suboptimal solutions. (#130)
  • Solver hangs on degenerate LPs - Both phases of the simplex could cycle indefinitely on problems with many redundant bound constraints. Phase 1 now detects non-convergence and falls back to Bland's rule with lazy matrix save/restore; phase 2 detects stalled objectives and terminates degenerate cycling. (#112)
  • Variable-name objectives return zero - When optimize names a variable directly (e.g., optimize: "x") rather than a coefficient attribute, the solver now correctly assigns an implicit cost of 1 to that variable. (#121)

Performance

  • B&B node pruning - Branch-and-bound now prunes nodes whose LP relaxation bound equals the best known integer solution, avoiding unnecessary LP re-solves on provably non-improving nodes. (#90)