#20302: Clean up MILP backend interface
-------------------------+----------------------------
Reporter: mkoeppe | Owner:
Type: defect | Status: new
Priority: major | Milestone: sage-7.2
Component: numerical | Keywords: lp
Merged in: | Authors:
Reviewers: | Report Upstream: N/A
Work issues: | Branch:
Commit: | Dependencies:
Stopgaps: |
-------------------------+----------------------------
While implementing `InteractiveLPBackend` for #20296, I noticed several
deficiencies in the design of the MILP backend interface.
- `add_col` and `add_variable` both add a variable to the problem; but
`add_col` only allows to add a column with no name; whereas `add_variable`
only allows to add a column with no coefficients. There should be one
function (`add_variable`, probably) that can do both; should then
deprecate `add_col`. (Also compare with `add_linear_constraint`, which
takes as zipped index/coefficient list, whereas `add_col` takes two
parallel lists.)
- `variable_upper_bound`: This interface is bizarre. Can't remove an
upper bound from a variable because `None` means both 'no upper bound' and
'get the upper bound'. Likewise `variable_lower_bound`. (Moreover, there's
redundancy with `col_bounds`.)
- `add_variables` and `add_linear_constraints` should have a default
implementation in `GenericBackend`, like `add_linear_constraint_vector`.
Also, I think the backends should be tested using a common `TestSuite`.
Right now each backend uses its own doctests, which have slightly diverged
from each other, so there is nothing (other than the fact that they were
the result of copy-paste from each other) that ensures consistency.
(#20296 fixes several wrong doctests in `GenericBackend`, from which I
tried to copy-paste, for example.)
--
Ticket URL: <http://trac.sagemath.org/ticket/20302>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.