Topic
  • 4 replies
  • Latest Post - ‏2013-02-25T01:59:30Z by gangulo
gangulo
gangulo
34 Posts

Pinned topic Cuts derived from lazy constraints

‏2013-02-21T23:03:10Z |
I'm a bit puzzled about some aspects of lazy constraints, and I would appreciate some input here.

If I add a lazy constraint through a user-cut or lazy-cut callback, does CPLEX take into account this new constraint to generate cuts? If so, how is this affected by the parameter 'purgeable' of the function CPXcutcallbackadd? Note that in this case the cuts generated by CPLEX may be invalid for the original model. By the way, I see that the parameter 'purgeable' is not present in CPXcutcallbackaddlocal, why?

Thanks!
Updated on 2013-02-25T01:59:30Z at 2013-02-25T01:59:30Z by gangulo
  • SystemAdmin
    SystemAdmin
    7929 Posts

    Re: Cuts derived from lazy constraints

    ‏2013-02-22T09:52:09Z  
    Some of the cut separators of CPLEX (for example Gomory cuts) produce higher rank cuts. This means, they produce cuts on top of other cuts, including the cuts that came into the LP relaxation from the user's cut and lazy constraint callbacks and tables.

    The CPXcutcallbackaddlocal() method does not have a purgeable parameter, because cuts can (due to internal data structure management) only be purged at the root node. So, if branching started, no cuts can be purged anymore, hence there is no reason to have the parameter for the CPXcutcallbackaddlocal() method.
    Tobias
  • gangulo
    gangulo
    34 Posts

    Re: Cuts derived from lazy constraints

    ‏2013-02-22T14:50:33Z  
    Some of the cut separators of CPLEX (for example Gomory cuts) produce higher rank cuts. This means, they produce cuts on top of other cuts, including the cuts that came into the LP relaxation from the user's cut and lazy constraint callbacks and tables.

    The CPXcutcallbackaddlocal() method does not have a purgeable parameter, because cuts can (due to internal data structure management) only be purged at the root node. So, if branching started, no cuts can be purged anymore, hence there is no reason to have the parameter for the CPXcutcallbackaddlocal() method.
    Tobias
    Thanks for the answer, Tobias!
    And just to know, does CPLEX generate local cuts on its own, or only global cuts?
  • SystemAdmin
    SystemAdmin
    7929 Posts

    Re: Cuts derived from lazy constraints

    ‏2013-02-23T15:29:11Z  
    • gangulo
    • ‏2013-02-22T14:50:33Z
    Thanks for the answer, Tobias!
    And just to know, does CPLEX generate local cuts on its own, or only global cuts?
    In default settings, CPLEX does not generate locally valid cuts on its own.
    It may very occasionally branch on hyperplanes (which is a sort of locally valid cuts) but this should be pretty much an exception.

    Tobias
  • gangulo
    gangulo
    34 Posts

    Re: Cuts derived from lazy constraints

    ‏2013-02-25T01:59:30Z  
    In default settings, CPLEX does not generate locally valid cuts on its own.
    It may very occasionally branch on hyperplanes (which is a sort of locally valid cuts) but this should be pretty much an exception.

    Tobias
    Thanks!