Gurobi is an optimization software developed by Gurobi Optimization, LLC. It is considered one of the most diverse optimization software that can solve a wide range of problem types. These include linear programming, mixed-integer linear programming, quadratic programming, mixed-integer quadratic programming, quadratically constrained programming, and mixed-integer quadratically constrained programming. It is accessible in the Python PuLP library through an API.
PuLP uses an API solver from a list of available optimizers to solve a given linear programming problem. We use PuLP's listSolvers()
method to view the list of solver APIs it can access:
print(listSolvers())print(listSolvers(onlyAvailable = True))
GUROBI
is on this list. However, this does not mean that Gurobi is necessarily available for use.onlyAvailable = True
argument to PuLP's listSolvers()
method. This is the second list in our output. We can see that GUROBI
is on this list as well. This confirms that Gurobi is available for use in our environment. Note: If you are attempting to use Gurobi with PuLP on your local machine or any other environment, and don't see
GUROBI
in the list returned by thelistSolvers(onlyAvailable = True)
command, try to runpip install gurobipy
on your shell. This will install a "Restricted license" version of Gurobi, like the one we have installed here, as shown in the output between the two lists.
To use a particular solver in PuLP, the user needs to specify the solver in the code. PuLP's solve()
method allows users to specify their solver of choice. A solver instance can be loaded using the PuLP getSolver()
method. The code below shows different ways to use the Gurobi solver using PuLP:
# using "solve()"prob.solve(GUROBI(msg = True))print("******************************************")# using "getSolver()"solver = getSolver('GUROBI')solver.solve(prob)print("******************************************")# orsolver = GUROBI()solver.solve(prob)print("******************************************")# we can also call the solver directlyGUROBI().solve(prob)
prob
—an instance of PuLP's LpProblem
class—by passing it as an argument to the solve()
method.solver
variable and then pass it as an argument to the solve()
method.LpProblem
instance prob
is passed to the solver's solve()
method.Free Resources