GUROBI for MPL

Gurobi for MPL gives MPL users access to state-of-the-art simplex-based linear programming and mixed-integer programming solvers from within the user-friendly Windows environment of MPL. The Gurobi solver is accessed from MPL for Windows as a Dynamic Link Library (DLL). This tight integration allows MPL users to transparently access Gurobi solution algorithms from their MPL application.

Algorithmic Features

The Gurobi solver is a simplex-based linear and mixed-integer programming optimizer. Its mixed-integer capability has been designed from the ground up to take full advantage of modern multi-core architectures. The Gurobi algorithms enable you to solve:

Future Gurobi releases intend to add the following capabilities:

Performance Tuning

For LP's

For LP's Gurobi is tuned to solve the vast majority of LP problems using default settings. There are however occasions where one may need to change defaults because of unacceptably slow solve times or numerical instability issues. On the whole the dual simplex method is best for most LP problems, although there are some instances where the primal simplex method may work best.

For MIP's

While MIP performance has improved dramatically in recent years, some instances still remain extremely difficult to solve. Though there are no steadfast rules for enhancing MIP performance in cases like these, we do list below some of the considerations one should take into account:

GUROBI Log Output

MPL displays the progress of Gurobi during a solve run in the message window. This information can also be directed to a log file. One can set various logging parameters in MPL for both LPs and MIPs. For example, the frequency of Gurobi logging is based upon elapsed wall clock time. This frequency can be adjusted. The log initially displays information about model dimensions followed by information about the presolved model:


STATUS: Optimizing 'Rail_ties' with Gurobi 1.0 Solver
GUROBI: Optimize a model with 2103 Rows, 1298 Columns and 5240 NonZeroes
GUROBI: Presolve removed 1701 rows and 893 columns
GUROBI: Presolve tightened 1650 bounds and modified 107 coefficients
GUROBI: Presolve changed 32 inequalities to equalities
GUROBI: Presolve time: 0.02s
GUROBI: Presolved: 402 Rows, 405 Columns, 1398 Nonzeros

For MIP problems, the Gurobi solver prints regular status information during the branch-and-bound search. The first two output columns in each log line show the number of nodes that have been explored so far in the search tree followed by the number of nodes that remain unexplored. The next three columns provide information on the most recently explored node in the tree. The solver prints the relaxation objective value for this node, followed by its depth in the search tree, followed by the number of integer variables with fractional values in the node relaxation solution. The next three columns provide information on the progress of the global MIP bounds. They show the objective value for the best known integer feasible solution, the best bound on the value of the optimal solution, and the gap between these lower and upper bounds. Finally, the last two columns provide information on the amount of work performed so far. The first column gives the average number of simplex iterations per explored node, and the next column gives the elapsed wall clock time since the optimization began.


GUROBI: Root relaxation: 239 iterations, 0.00 seconds
GUROBI:     Nodes    |    Current Node    |     Objective Bounds      |     Work
GUROBI:  Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time
GUROBI:      0     0  4502.1420    0   18          -  4502.1420     -      -    0s
GUROBI:      0     0  4762.2109    0   58          -  4762.2109     -      -    0s
GUROBI:      0     0  4815.2637    0   58          -  4815.2637     -      -    0s
GUROBI:      0     0  4838.1339    0   64          -  4838.1339     -      -    0s
GUROBI:      0     0  4845.3194    0   41          -  4845.3194     -      -    0s
GUROBI:      0     0  4845.5014    0   60          -  4845.5014     -      -    0s
GUROBI:      0     0  4847.0585    0   61          -  4847.0585     -      -    0s
GUROBI:      0     0  4847.0585    0   61          -  4847.0585     -      -    0s
GUROBI:      0     2  4851.0046    0   61          -  4851.0046     -      -    0s
GUROBI: *  109    71              24       6445.0000  4902.1084  23.9%  18.1    0s
GUROBI: H  111    68                       6161.0000  4902.1084  20.4%  17.8    0s
GUROBI: H  273   160                       5931.0000  4975.7418  16.1%  14.2    0s
GUROBI: *  516   228              24       5879.0000  5053.6529  14.0%  14.0    1s

Once the optimal solution is found for a MIP problem the log will show summary statistics and also the number and type of cuts that were added during the solving process:


GUROBI: Cutting planes:
GUROBI:   Gomory: 8
GUROBI:   Cover: 5
GUROBI:   Implied bound: 20
GUROBI:   MIR: 5
GUROBI: Explored 8582 nodes (80322 simplex iterations) in 7.61 seconds
GUROBI: Thread count was 1 (of 4 available processors)
GUROBI: Optimal solution found (tolerance 1.00e-04)
GUROBI: Best objective 5.8300000000e+03, best bound 5.8300000000e+03, gap 0.0000%
Solver Statistics
  Solver name:      Gurobi  (1.0)
  Objective value:  5830.00000000000
  Integer Nodes:    8582
  Iterations:       80322
  Solution time:    7.60 sec
  Result code:      2

GUROBI Parameter Options

For full description of all the GUROBI Parameters that are supported in MPL please go to the GUROBI Option Parameters page.


Back To Top | Maximal Home Page | List of Solvers | Previous Page | Next Page