First of all I want to congratule you for such a group. I have solved some questions coming here to read you. I think it is very helpful!
Now that Gurobi has an API for Python3 I am giving it a chance. Up to now, I have been using CPLEX with GAMS (last version of both) for solving a hard MIP problem. The only way I could find to find good solutions is to use the Barrier Method and the Solution Polishing (based on RINS), combined with parallelization (8 threads).
The way: providing an initial solution, then solving the LR with the Barrier Method and then activating the Solution Polishing heuristic after node 1 -from the very begining-. The solutions are acceptable after a couple of hours.
Now I have developed the same model in Python with Gurobi. I have checked it is exactly the same, with the same size, no. of vars and constraints.
I provide Gurobi the same initial solution, with the same objective value.
Then I try to solve it and here it is where the problems comes: I am not able to get reasonable good solutions at all. The objective function remains at around 70%.
The main parameters I am using are the following:
m.params.Threads = 8
m.params.timeLimit = 36000
m.params.Method = 2
m.params.Cuts = -1
m.params.NoRelHeuristic = 1
m.params.Heuristics = 1
m.params.RINS = 1
m.params.ImproveStartNodes = 1
m.params.ImproveStartTime = 1
m.params.MIPFocus = 1
Now I am running the grbtune tool in order to obtain any clues. By the way, do you have any ideas about how to reproduce (or even improve, hopefully) the performance I get with CPLEX?
I have read there is not a "solution polishing" feature in Gurobi due to patents, but I have also read there are a few options that can produce a similar result. Am I missing anything? Because I cannot believe there is such a huge difference!
All opnions are really appreciated.
Thanks,
Manuel.