Skip to content

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

@mkoeppe

Description

@mkoeppe

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:

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

CC: @dimpase @nathanncohen @videlec

Component: numerical

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions