I am using cuOpt for an MILP problem. The problem is solved by PuLP within a few seconds with an optimal solution, while cuOpt uses up all the available time up until time_limit, and outputs the solution with the status of 'inaccurate'. I believe this is because cuOpt is doing strong branching. Is there any way to disable or at least strongly discourage it? I could not find any documentation that would tell me how to alter this default behavior (tried 'heuristics_only' = True, it made no difference).
Thanks for the logs. If you set heuristics only you get the Feasible Found status, which might be mapped into PuLP inaccurate. It looks like a solution was found in 300 seconds.
What was the solve time with PuLPs default solver? Could you send logs for that?
What is the output of cuOpt if you don’t set heuristics only?
Thank you for your message! Yes, cuOpt seems to continue exploring branches until it hits the time limit. Here’s the output when heuristics only is set to False. PuLP’s output is just this: Solve complete: Optimal, objective: 7866360.43, time: 2.29s
Setting heuristics only to false, means that you will branch. If you only want heuristics (i.e to disable branching) you need to set heuristics only to true.
From your logs it looks like cuOpt finds a solution with a gap of 1.3% in 3 seconds. And a solution within 0.3% in 17.6 seconds. The current version of cuOpt does not include presolve or cuts, so that may explain why PuLP’s default solver is faster on this problem.
If you are able to share an MPS file of the problem, we can take a look and see if we can improve cuOpt on it.