Understanding the MIPFocus parameters

1,250 views
Skip to first unread message

Will Kearney

unread,
Sep 15, 2016, 4:07:38 PM9/15/16
to Gurobi Optimization
I'm a little confused regarding the parameter MIPFocus, and specifically the difference between MIPFocus=2 and MIPFocus=3.

I think I understand MIPFocus=1; the solver will focus on finding better feasible solutions (thus moving towards an optimal solution and decreasing the MIPGap).

The documentation (https://www.gurobi.com/documentation/6.5/refman/mip_models.html) suggests choosing MIPFocus=2 if you think the best solution found thus far is optimal, and wish to actually prove that it's optimal. MIPFocus=3 focuses on raising the best bound. So, what exactly is the difference between MIPFocus=2 and MIPFocus=3? How do you determine if it's better to move the best bound or if it's better to try and prove that the incumbent bound is optimal?

If it helps, the model I'm trying to solve gets stuck around ~50% MIPGap, even after running for many hours (and sometimes days). The best bound is making very slow incremental progress, and the incumbent solution isn't moving much at all (occasionally it moves due to a heuristic). Unfortunately, the model also has a lot of symmetry, which is I'm sure slowing things down.

Would it be worth exploring the ImproveStartGap and ImproveStartTime parameters to switch MIPFocus during the model solving?

Thanks,
Will

Tobias Achterberg

unread,
Sep 15, 2016, 5:22:18 PM9/15/16
to gur...@googlegroups.com
MIPFocus = 2 increases the aggressiveness of cuts and presolve.

MIPFocus = 3 is the same but increases the aggressiveness of cuts even more, and
changes the node selection strategy to something that is more similar to best
bound search. Thus, the bound should increase faster, but the number of open
nodes will also increase faster. This change in node selection will usually not
lead to proving optimality faster, but it could lead to reaching a certain gap
faster.

Regards,

Tobias
Reply all
Reply to author
Forward
0 new messages