#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.

Reply via email to