Opened 6 years ago

Last modified 3 months ago

#18688 new task

MixedIntegerLinearProgram should support basis status getting/setting — at Version 3

Reported by: mkoeppe Owned by:
Priority: minor Milestone: sage-9.5
Component: numerical Keywords: lp
Cc: yzh, ncohen Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: #18685, #18763 Stopgaps:

Status badges

Description (last modified by mkoeppe)

When Sage's MixedIntegerLinearProgram is used for solving an LP, one frequently needs to access further information about the current basis (often, the optimal basis after solving the LP), not just the numerical values of the solution; in particular, the combinatorial information: which variables are basic, nonbasic at-lower, nonbasic at-upper.

#18685 adds the necessary backend functions for the GLPK backend. #18763 adds the necessary backend functions for the COIN (CBC/CLP) backend. This kind of information is available in every (simplex method based) solver.

The Sage interface should, of course, be designed to work consistently across all solvers. There are some subtleties here -- not all solvers mean the same thing with "at-lower" for cases such as ranged constraints. Best to look at a source that has already sorted it all out: In the COIN open solver interface, the function is called getBasisStatus

And then there's setBasisStatus, of course. One needs this function if one wants to implement LP-based branch and bound with warmstarting.

There are other important basis-related functions: getBInvARow, getBInvRow, getBInvACol, getBInvCol -- but that's for another ticket -- see #18733.

Change History (3)

comment:1 Changed 6 years ago by mkoeppe

  • Description modified (diff)

comment:2 Changed 6 years ago by dimpase

  • Description modified (diff)

comment:3 Changed 6 years ago by mkoeppe

  • Dependencies changed from #18685 to #18685, #18763
  • Description modified (diff)
Note: See TracTickets for help on using tickets.