CPMpy gurobi interface (cpmpy.solvers.gurobi
)
Interface to the python ‘gurobi’ package
Requires that the ‘gurobipy’ python package is installed:
$ pip install gurobipy
as well as the Gurobi bundled binary packages, downloadable from: https://www.gurobi.com/
In contrast to other solvers in this package, Gurobi is not free to use and requires an active licence You can read more about available licences at https://www.gurobi.com/downloads/
List of classes
Interface to Gurobi's API |
Module details
- class cpmpy.solvers.gurobi.CPM_gurobi(cpm_model=None, subsolver=None)[source]
Interface to Gurobi’s API
Requires that the ‘gurobipy’ python package is installed: $ pip install gurobipy
See detailed installation instructions at: https://support.gurobi.com/hc/en-us/articles/360044290292-How-do-I-install-Gurobi-for-Python-
Creates the following attributes (see parent constructor for more): - grb_model: object, TEMPLATE’s model object
The DirectConstraint, when used, calls a function on the grb_model object.
- get_core()
For use with s.solve(assumptions=[…]). Only meaningful if the solver returned UNSAT.
Typically implemented in SAT-based solvers
Returns a small subset of assumption literals that are unsat together. (a literal is either a _BoolVarImpl or a NegBoolView in case of its negation, e.g. x or ~x) Setting these literals to True makes the model UNSAT, setting any to False makes it SAT
- maximize(expr)
Post the given expression to the solver as objective to maximize
maximize() can be called multiple times, only the last one is stored
- minimize(expr)
Post the given expression to the solver as objective to minimize
minimize() can be called multiple times, only the last one is stored
- objective(expr, minimize=True)[source]
Post the given expression to the solver as objective to minimize/maximize
‘objective()’ can be called multiple times, only the last one is stored
- (technical side note: any constraints created during conversion of the objective
are premanently posted to the solver)
- objective_value()
Returns the value of the objective function of the latest solver run on this model
- Returns
an integer or ‘None’ if it is not run, or a satisfaction problem
- solution_hint(cpm_vars, vals)
For warmstarting the solver with a variable assignment
Typically implemented in SAT-based solvers
- Parameters
cpm_vars – list of CPMpy variables
vals – list of (corresponding) values for the variables
- solve(time_limit=None, solution_callback=None, **kwargs)[source]
Call the gurobi solver
Arguments: - time_limit: maximum solve time in seconds (float, optional) - kwargs: any keyword argument, sets parameters of solver object
Arguments that correspond to solver parameters: Examples of gurobi supported arguments include:
Threads : int
MIPFocus: int
ImproveStartTime : bool
FlowCoverCuts: int
For a full list of gurobi parameters, please visit https://www.gurobi.com/documentation/9.5/refman/parameters.html#sec:Parameters
- solveAll(display=None, time_limit=None, solution_limit=None, call_from_model=False, **kwargs)[source]
Compute all solutions and optionally display the solutions.
This is the generic implementation, solvers can overwrite this with a more efficient native implementation
- Arguments:
- display: either a list of CPMpy expressions, OR a callback function, called with the variables after value-mapping
default/None: nothing displayed
time_limit: stop after this many seconds (default: None)
solution_limit: stop after this many solutions (default: None)
call_from_model: whether the method is called from a CPMpy Model instance or not
any other keyword argument
Returns: number of solutions found
- solver_var(cpm_var)[source]
Creates solver variable for cpmpy variable or returns from cache if previously created
- solver_vars(cpm_vars)
Like solver_var() but for arbitrary shaped lists/tensors
- status()
- static supported()[source]
Check for support in current system setup. Return True if the system has package installed or supports solver, else returns False.
- Returns:
[bool]: Solver support by current system setup.
- transform(cpm_expr)[source]
Transform arbitrary CPMpy expressions to constraints the solver supports
Implemented through chaining multiple solver-independent transformation functions from the cpmpy/transformations/ directory.
See the ‘Adding a new solver’ docs on readthedocs for more information.
- Parameters
cpm_expr (Expression or list of Expression) – CPMpy expression, or list thereof
- Returns
list of Expression