Skip to main content

NoRel and setting time limits

Answered

Comments

6 comments

  • Official comment
    Simranjit Kaur
    • Gurobi Staff Gurobi Staff
    This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum. Or why not try our AI Gurobot?.
  • Jaromił Najman
    • Gurobi Staff Gurobi Staff

    Is that the right way to do it? How about the third phase "IMPROVE", will that always run?

    If you want to only run the No Relaxation Heuristic then, yes this is the correct way to do it.

    What exactly do you mean by the "IMPROVE" phase? Do you mean the phase started by the, ImproveStartNodes, ImproveStartTime, ImproveStartGap parameters? If yes, then the "IMPROVE" phase is only started if one of these parameters is set and triggered. The "IMPROVE" phase is not triggered by default.

    Also, if I don't specify explicitly how much time is allocated to NoRel and I only specify m.Params.TimeLimit, how much time will it spend in NoRel?

    The No Relaxation Heuristic is not run by default, i.e., at least one of the parameters NoRelHeurTime or NoRelHeurWork has to be set for the No Relaxation Heuristic to be run. If none of the parameters is set, the No Relaxation Heuristic is not executed at all.

    Finally - are there any parameters that are relevant only to NoRel that I can test?

    All parameters that affect the presolved model also directly affect the No Relaxation heuristic, because they change the structure of the model given to the heuristic. Parameters that might have an impact on the No Relaxation heuristic thus are Presolve, AggFill, Aggregate, DualReductions, PreDual, PreDepRow, PrePasses, PreSparsify. Then there are also the tolerance and numerics parameters, FeasibilityTol, IntFeasTol, and NumericFocus and the Threads parameter which also may have an effect on the No Relaxation heuristic. I probably also missed one or two.

    Best regards,
    Jaromił

     

    1
  • Vladimir Valenta
    • Gurobi-versary
    • First Question
    • First Comment

    Thank you for your response.

    > What exactly do you mean by the "IMPROVE" phase? 

    I watched the Gurobi Launch Event: Whats new in 9.5, and I might have misinterpreted something.  There is a slide on improvements in Callbacks and it lists three MIP phases: NOREL (inside norel heuristics), SEARCH (regular tree search), and IMPROVE (solution improvement phase).  What is the IMPROVE phase referenced on the slide?

    0
  • Jaromił Najman
    • Gurobi Staff Gurobi Staff

    Hi Vladimir,

    Thank you for the clarification. The "IMPROVE" phase refers to the solution improvement phase triggered by one of the parameters ImproveStartGap, ImproveStartNodes, ImproveStartTime.

    Best regards,
    Jaromił

    0
  • Sam de Wringer
    • First Comment

    Hi, 

    I have a question that's related to the above question. I want to run Gurobi without setting a TimeLimit (i.e., Gurobi has to run until a solution is found, so I use SolutionLimit: 1) and I want Gurobi to only use the NoRelHeur. How can I best enforce this through the settings? 

    I'm in a similar situation as OP: the NoRelHeur is giving me excellent results as opposed to the relaxed, branch-and-bound algorithm. 

    Thanks! 

    0
  • Maliheh Aramon
    • Gurobi Staff Gurobi Staff

    Hi, 

    To run the NoRel heuristic, you must set either NoRelHeurTime or NoRelHeurWork parameters. You can set the NoRelHeurTime parameter to a large value and the SolutionLimit parameter to 1. This would ensure that the optimizer runs the NoRel heuristic and terminates when the first feasible solution is found.

    Best regards,

    Maliheh

    0

Post is closed for comments.