Is it possible to disable strong branching in cuOpt?

Hi All,

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).

Thank you in advance for your help!

Could you post the log of the solve? We might be able to help more if we see the output (with and without parameter changes).

Setting heuristics only will indeed disable strong branching. It will also disable all branching.

Thank you so much for your fast response! I hope I grabbed the right log, please let me know if not though:

2025-07-02 20:34:41.277 INFO 10.0.0.4:60406 - “GET /cuopt/solution/aa4ad3ce-4d07-4988-8be3-634b7b31f5a8 HTTP/1.1” 200
Solution objective: 8964676.837624 , relative_mip_gap 0.000902 solution_bound 8972761.180692 presolve_time 0.014450 total_solve_time 300.528662 max constraint violation 0.000000 max int violation 0.000000 max va
r bounds violation 0.000000 nodes 0 simplex_iterations 0
2025-07-02 20:34:41.325 DEBUG etl_time 4.2438507080078125e-05, solve_time 300.5381247997284 (GPU 0)
2025-07-02 20:34:41.325 INFO solver sending response for job aa4ad3ce-4d07-4988-8be3-634b7b31f5a8 success True (GPU 0)
2025-07-02 20:34:41.326 DEBUG popping notes (GPU 0)
2025-07-02 20:34:41.326 INFO solver waiting on job queue (GPU 0)
2025-07-02 20:34:41.326 INFO set done for aa4ad3ce-4d07-4988-8be3-634b7b31f5a8
2025-07-02 20:34:41.326 INFO {‘cuopt_complete’: <MILPTerminationStatus.FeasibleFound: 8>}

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

log_5b418c5a-3df4-4f2f-bd0f-70c698f726d6.txt (68.4 KB)

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.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.