Decision Optimization

 View Only
  • 1.  OPL Stopping Criterion

    Posted Mon June 29, 2020 09:45 AM
    Hi,

    I'm using OPL to solve a MIP (maximization).  I'd like to introduce a criterion to stop the solve process of the Cplex object when my best objective value is at least "x".  Unfortunately, modifying any of the gap settings won't accomplish this as I need the threshold to be on the value of the objective function.  I would just create a constraint version of the objective value but I want to avoid re-generation of the OPL model, as the model is run 1000s of times.

    I've seen this work before on the C++ API using solve callbacks.  However, from my knowledge this isn't possible in OPL.  Any idea how I can go about this?

    Thanks.

    ------------------------------
    Alexander Balkum
    ------------------------------

    #DecisionOptimization


  • 2.  RE: OPL Stopping Criterion

    Posted Mon June 29, 2020 10:02 AM
    You can ask OPL to post-process every feasible solution, see here. Maybe this can get you close?

    ------------------------------
    Daniel Junglas
    ------------------------------



  • 3.  RE: OPL Stopping Criterion

    Posted Mon June 29, 2020 10:15 AM
    Thanks for your response, Daniel.  That setting seems like a step in the right direction, however CPLEX still solves the model to optimality.  I'd like to stop the solve (to prevent wasted CPU cycles) when my stopping criterion is met.  Is there a way to add any hooks/callbacks into this post-processing of feasible solutions?

    ------------------------------
    Alexander Balkum
    ------------------------------



  • 4.  RE: OPL Stopping Criterion

    Posted Mon June 29, 2020 10:41 AM
    I just discovered a setting for setting an upper bound on the objective during the simplex solve.  https://www.ibm.com/support/knowledgecenter/SSSA5P_12.9.0/ilog.odms.cplex.help/CPLEX/Parameters/topics/ObjULim.html  While not setting an upper bound during branch & cut it would at least make the fathoming of nodes faster.  Is this reasoning correct?

    The parameter name is blank for OPL.  Is this parameter still available?

    ------------------------------
    Alexander Balkum
    ------------------------------