Skip to main content

Ignored lazy constraint leads to wrong solution cont.

Ongoing

Comments

4 comments

  • Riley Clement
    Gurobi Staff Gurobi Staff

    Hi Florian,

    Thanks for bringing it to our attention.  I can confirm the issue is still open, but looks like it has gone stale.  It looks like it was a hotly debated issue at the time.  I have updated the dev team with this post, and I'll pass on any comments they have.

    - Riley

    0
  • Mario Ruthmair
    Gurobi Staff Gurobi Staff

    Hi Florian,

    You mentioned that you add the RCCs in the MIPNODE callback with addCut(). What happens if you add them in MIPNODE with addLazy()? Can you still reproduce the issue?
    This was my workaround back then, i.e., to add all cuts with addLazy() if they potentially cut off integer solutions, regardless of whether I was in a MIPSOL or MIPNODE callback.

    Best regards,
    Mario

    0
  • Florian Linß
    Gurobi-versary
    First Comment
    First Question

    Hi all,

    Thanks for the quick reply. I can confirm that the issue does not occur when I only add the RCCs as lazy constraints. Thanks for the workaround!

    To evaluate the issue, we only have RCCs enabled. Besides RCCs, we are adding more CVRP cuts with AddCut() in our codebase. Can the problem of the ignored lazy constraint occur as soon as any cut, which could potentially also cut off an integer solution, is added with AddCut()?
    Or does the issue only occur because the RCCs, in particular, were added with both AddCut() and AddLazy()?

    Do you have any idea what could be causing the incorrect behavior?

    Best regards, and thanks for the support!
    Florian

    0
  • Mario Ruthmair
    Gurobi Staff Gurobi Staff

    Hi Florian,

    Yes, since many CVRP cut families cut off integer solutions, too, I would strongly recommend adding all your cuts with addLazy(). There is no downside to this; in fact, you might even benefit from it since lazy constraints are accepted by the solver more often. Cuts added with addCut() might be ignored for several reasons (numerics, etc.).

    There is an internal discussion about what is happening in these cases and whether this is expected or not (since user-cuts must not cut off integer solutions), but it is not fully clear yet.

    Best,
    Mario

    0

Please sign in to leave a comment.