Cplex and Gurobi provides different optimal solution. Preprocessing bug in gurobi
AnsweredI have solved a MIP model in different ways:
a) Plain Cplex (default settings):
CPLEX 12.9.0.0: optimal integer solution within mipgap or absmipgap; objective 80280.28828
100519 MIP simplex iterations
1776 branch-and-bound nodes
absmipgap = 7.90337, relmipgap = 9.84472e-05
b) Plain gurobi (default settings):
Gurobi 9.0.0: outlev=0
timelim=600
mipgap=0
bestbound=1
Gurobi 9.0.0: optimal solution; objective 90231.575
10207 simplex iterations
1 branch-and-cut nodes
plus 2517 simplex iterations for intbasis
absmipgap = 1.46e-11, relmipgap = 1.61e-16
Then, after analyzing the solution, I fixed just one specific binary variable to 1 and then, Gurobi gives the following:
Gurobi 9.0.0: outlev=0
timelim=600
mipgap=0
bestbound=1
Gurobi 9.0.0: optimal solution; objective 80280.28828
3375 simplex iterations
plus 2647 simplex iterations for intbasis
Then, I change the gurobi settings to "not preprocess the model". The report is:
Gurobi 9.0.0: outlev=0
timelim=600
mipgap=0
bestbound=1
presolve=0
Gurobi 9.0.0: optimal solution; objective 80280.28806
1679963 simplex iterations
33608 branch-and-cut nodes
plus 2606 simplex iterations for intbasis
17 integer variables rounded to integers; maxerr = 4.45537e-07
suffix bestbound OUT;
As a conclusion, GUROBI has a bug in the preprocessing step, that fix a variable to 0 that in fact takes value 1 in the optimal solution. The same problem appears in different instances for the same model.
-
Hi Antonio,
Do you see this same behavior with the latest version of Gurobi (9.0.2)?
Thanks,
Eli
0 -
Hi, Eli,
Yes, it works and now groove provides the optimal solution in all instances! Great!
Thanks for your help!
Antonio
0
Please sign in to leave a comment.
Comments
2 comments