Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
Expand all | Collapse all

CPLEX 12.5: Lazy constraints using macro ILOLAZYCONSTRAINTCALLBACKn

  • 1.  CPLEX 12.5: Lazy constraints using macro ILOLAZYCONSTRAINTCALLBACKn

    Posted 04/21/13 01:03 AM

    Originally posted by: ARcplex


    My question is: Do all of the cuts generated usingILOLAZYCON STRAINTCAL LBACKn remain in the model until the optimal solution is found?

    Perhaps I am misinterpreting, but it appears the cuts I generate (through use of IloCplex:: LazyConstraintCallbackI ) are in fact added when I specify them to be added. On the other hand, if I instead used IloCplex::CutCallbackI, I would generate what CPLEX refers to as "user cuts," which CPLEX can override if it feels they are not needed.

    Below is an excerpt I assembled from CPLEX documentation found at http://pic.dhe.ibm.com/ infocenter/cosinfoc/v12r3/index.jsp?topic=%2Filog.odms.cplex.help%2FContent%2FOptimization%2FDocumentation%2FOptimization_Studio%2F_pubskel%2Fps_usrmancplex2043.html


    "Lazy constraints are only (and always) checked when an integer-feasible solution candidate has been identified, and of course, any of these constraints that turn out to be violated will then be applied to the full model....In contrast, user cuts may be more liberally added to a model because CPLEX is not obligated to use any of them and can apply its own rules to govern their efficient use."

     

    Thank you in advance for your help,

    Andrew


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: CPLEX 12.5: Lazy constraints using macro ILOLAZYCONSTRAINTCALLBACKn

    Posted 04/22/13 01:30 AM

    By definition, cuts (as generated by UserCutCallbackI) do not change the integer feasible region. So there is some freedom in applying them. Ignoring cuts may affect performance but will not affect correctness. Consequently, CPLEX may or may not use cuts, may decide to purge them etc. -- whatever it thinks to serve performance best.

    Lazy constraints however do change the integer feasible region and are not "optional". Ignoring a lazy constraint may result in incorrect answers. Once a lazy constraint is violated CPLEX puts it into the model and will not remove it from the model.


    #CPLEXOptimizers
    #DecisionOptimization