CPMpy gurobi interface (cpmpy.solvers.gurobi)
Interface to Gurobi Optimizer’s Python API.
Gurobi Optimizer is a highly efficient commercial solver for Integer Linear Programming (and more).
Always use cp.SolverLookup.get("gurobi") to instantiate the solver object.
Installation
Requires that the ‘gurobipy’ python package is installed:
$ pip install gurobipy
Gurobi Optimizer requires an active licence (for example a free academic license) You can read more about available licences at https://www.gurobi.com/downloads/
See detailed installation instructions at: https://support.gurobi.com/hc/en-us/articles/360044290292-How-do-I-install-Gurobi-for-Python-
The rest of this documentation is for advanced users.
List of classes
Interface to Gurobi's Python API |
Module details
- class cpmpy.solvers.gurobi.CPM_gurobi(cpm_model=None, subsolver=None)[source]
Interface to Gurobi’s Python API
Creates the following attributes (see parent constructor for more):
grb_model: object, TEMPLATE’s model object
The
DirectConstraint, when used, calls a function on thegrb_modelobject.Documentation of the solver’s own Python API: https://docs.gurobi.com/projects/optimizer/en/current/reference/python.html
- 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
_BoolVarImplor aNegBoolViewin 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
- property native_model
Returns the solver’s underlying native model (for direct solver access).
- 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
Note
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
- Parameters:
time_limit (float, optional) – maximum solve time in seconds
**kwargs – any keyword argument, sets parameters of solver object
Arguments that correspond to solver parameters: Examples of gurobi supported arguments include:
Threads: intMIPFocus: intImproveStartTime: boolFlowCoverCuts: 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
- Parameters:
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
argument (any other keyword) –
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:
Solver support by current system setup.
- Return type:
[bool]
- 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