Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MixedIntegerLinearProgram should support basis status getting/setting #18688

Open
mkoeppe opened this issue Jun 12, 2015 · 8 comments
Open

MixedIntegerLinearProgram should support basis status getting/setting #18688

mkoeppe opened this issue Jun 12, 2015 · 8 comments

Comments

@mkoeppe
Copy link
Contributor

mkoeppe commented Jun 12, 2015

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 most (simplex method based) solvers. (Exceptions: ppl does not seem to have a public interface to anything simplex tableau related.)

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, https://projects.coin-or.org/Osi/browser/trunk/Osi/src?order=name 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.

See also #18804 (LPBackendDictionary).

See also the methods is_variable_basic, is_slack_variable_basic, is_variable_nonbasic_at_lower_bound, is_slack_variable_nonbasic_at_lower_bound of GenericBackend.

Depends on #18685
Depends on #18763

CC: @yuan-zhou @nathanncohen

Component: numerical

Issue created by migration from https://trac.sagemath.org/ticket/18688

@mkoeppe mkoeppe added this to the sage-6.8 milestone Jun 12, 2015
@mkoeppe

This comment has been minimized.

@dimpase

This comment has been minimized.

@mkoeppe

This comment has been minimized.

@mkoeppe
Copy link
Contributor Author

mkoeppe commented Jun 22, 2015

Changed dependencies from #18685 to #18685, #18763

@mkoeppe

This comment has been minimized.

@mkoeppe

This comment has been minimized.

@dimpase dimpase modified the milestones: sage-6.8, sage-9.3 Jan 30, 2021
@yuan-zhou

This comment has been minimized.

@mkoeppe
Copy link
Contributor Author

mkoeppe commented Feb 13, 2021

comment:8

Setting new milestone based on a cursory review of ticket status, priority, and last modification date.

@mkoeppe mkoeppe modified the milestones: sage-9.3, sage-9.4 Feb 13, 2021
@mkoeppe mkoeppe modified the milestones: sage-9.4, sage-9.5 Jul 19, 2021
@mkoeppe mkoeppe modified the milestones: sage-9.5, sage-9.6 Dec 14, 2021
@mkoeppe mkoeppe modified the milestones: sage-9.6, sage-9.7 Mar 5, 2022
@mkoeppe mkoeppe modified the milestones: sage-9.7, sage-9.8 Aug 31, 2022
@mkoeppe mkoeppe removed this from the sage-9.8 milestone Jan 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants