Opened 3 years ago

Last modified 5 months ago

#20324 new enhancement

MIP backends: Unify add_col, add_variable; and clarify defaulting behavior of binary, continuous, integer

Reported by: mkoeppe Owned by:
Priority: major Milestone: sage-7.2
Component: numerical Keywords: lp
Cc: dimpase, ncohen, vdelecroix Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by jdemeyer)

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 (this is fixed in #20424). (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.)

Also #23600 should be fixed: the signatures of the cpdef functions should be the same in all implementations to fix Cython vtable warnings.

Change History (9)

comment:1 Changed 3 years ago by mkoeppe

  • Description modified (diff)
  • Summary changed from MIP backends: Unify add_col, add_variable to MIP backends: Unify add_col, add_variable; and clarify defaulting behavior of binary, continuous, integer

comment:2 Changed 3 years ago by mkoeppe

  • Description modified (diff)

comment:3 Changed 3 years ago by mkoeppe

  • Description modified (diff)

comment:4 Changed 3 years ago by mkoeppe

  • Description modified (diff)

comment:5 Changed 3 years ago by mkoeppe

  • Description modified (diff)

comment:6 Changed 3 years ago by mkoeppe

  • Dependencies set to #20424

comment:7 Changed 3 years ago by mkoeppe

  • Description modified (diff)

comment:8 Changed 18 months ago by jdemeyer

  • Dependencies #20424 deleted
  • Description modified (diff)

comment:9 Changed 5 months ago by jdemeyer

  • Description modified (diff)
Note: See TracTickets for help on using tickets.