#20324: MIP backends: Unify add_col, add_variable; and clarify defaulting
behavior
of binary, continuous, integer
-------------------------------+------------------------
Reporter: mkoeppe | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: sage-7.2
Component: numerical | Resolution:
Keywords: lp | Merged in:
Authors: | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: | Stopgaps:
-------------------------------+------------------------
Description changed by mkoeppe:
Old description:
> `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 - see #20296 for a
> possible interface) that can do both; should then deprecate `add_col`.
> Note that `add_col` is not used by `MixedIntegerLinearProgram`; it is
> only used in doctests of the backends.
> (Also compare with `add_linear_constraint`, which takes a zipped
> index/coefficient list, whereas `add_col` takes two parallel lists.)
>
> While making this change, should also clarify the defaulting behavior of
> the `binary`, `continuous`, `integer` arguments of `add_variable`. The
> argument list is:
> {{{
> cpdef int add_variable(self, lower_bound=0.0, upper_bound=None,
> binary=False, continuous=False, integer=False, obj=0.0, name=None)
> }}}
> Whereas the documentation says:
> - `binary` - `True` if the variable is binary (default: `False`).
> - `continuous` - `True` if the variable is binary [SIC!]
> (default: `True`).
> - `integer` - `True` if the variable is binary [SIC!] (default:
> `False`).
> Probably the defaults in the arglist should be `None`, and defaulting to
> creating continuous variables should be explained separately.
> (See #20362 for a discussion of a possible better interface and the
> mismatch with `set_variable_type`.)
New description:
`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 - see #20296 for a
possible interface) that can do both; should then deprecate `add_col`.
Note that `add_col` is not used by `MixedIntegerLinearProgram`; it is only
used in doctests of the backends.
Also, `GurobiBackend` does not implement `add_col`.
(Also compare with `add_linear_constraint`, which takes a zipped
index/coefficient list, whereas `add_col` takes two parallel lists.)
While making this change, should also clarify the defaulting behavior of
the `binary`, `continuous`, `integer` arguments of `add_variable`. The
argument list is:
{{{
cpdef int add_variable(self, lower_bound=0.0, upper_bound=None,
binary=False, continuous=False, integer=False, obj=0.0, name=None)
}}}
Whereas the documentation says:
- `binary` - `True` if the variable is binary (default: `False`).
- `continuous` - `True` if the variable is binary [SIC!] (default:
`True`).
- `integer` - `True` if the variable is binary [SIC!] (default:
`False`).
Probably the defaults in the arglist should be `None`, and defaulting to
creating continuous variables should be explained separately.
(See #20362 for a discussion of a possible better interface and the
mismatch with `set_variable_type`.)
--
--
Ticket URL: <http://trac.sagemath.org/ticket/20324#comment:5>
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.