Slow MIPS Performance
OngoingGood afternoon,
My team is experimenting with Gurobi and seeing relatively slow performance on a decently sized model.
The logs are linked here: https://gist.github.com/AnimeshAgrawal/ad6ef817e1787b09970bc817b8032e72
Our model consists of n binary variables that are multiplied with each other and some constant. The constraints look like (c * x_i * x_j < n) where c and n are constants. As you can see from the logs, the solve performance is quite poor; it seems as though much of the later relaxations run very slowly, but they also appear necessary as some of them do find more optimal solutions (Ex: line 349).
Does anyone have any suggestions as to how we can improve the model performance? We've experimented with making the following changes:
m.Params.MIPFocus= 1
m.Params.Cuts = 3
m.Params.Presolve = 2
But did not see a notable performance improvement.
-
Hi Animesh,
What makes you think that this is "poor" performance? Just because a model isn't huge doesn't mean that it is easy to solve. From the log, you can see that Gurobi is making steady progress to close the gap after quickly finding a good solution. Often, proving optimality is pretty tough and can result in a large tree even if the optimal solution has been found early.
For an extreme example, I can recommend the MIPLIB 2017 instance ej. This instance only has 3 variables and one constraint and if you don't solve it in presolving (with Gurobi you need to set Presolving=0), you will build up a very huge tree with very slow progress.
You might want to look into your model to improve its formulation. Maybe you can find a different way to express the underlying problem and to tighten the LP relaxation.
Cheers,
Matthias0
Please sign in to leave a comment.
Comments
1 comment