Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  User cut callback

    Posted 07/13/22 06:10 AM
    Edited by System Admin 01/20/23 04:41 PM
    Hello,

    I have a user cut callback where I have separation routines that use the current solution from the LP to try and identify violated cuts.

    My callback uses the following line to obtain the current solution:

    status = CPXgetcallbacknodex(env, cbdata, wherefrom, cutinfo->x[thr], 0, cutinfo->numcols - 1);

    I am running into an out of bounds error on this line

    CPLEX Error 1206: CPXgetcallbacknodex: 'end' value 700 is greater than 699.
    CPLEX Error 1200: Index is outside range of valid values.

    in the following circumstance/setting before calling CPXmipopt:


    //CPXsetintparam(env, CPX_PARAM_PRELINEAR, 0);
    //CPXsetintparam(env, CPX_PARAM_MIPCBREDLP, CPX_OFF);
    CPXsetintparam(env, CPXPARAM_Advance, 0);

    The error goes away when the first two lines are uncommented thereby setting CPX_PARAM_PRELINEAR to 0 and CPX_PARAM_MIPCBREDLP to CPX_OFF.

    Is there any documentation that specifies the interaction between these different parameter settings?

    Below are the official documentation for these 3 parameter settings:

    advanced start switch - IBM Documentation
    linear reduction switch - IBM Documentation
    MIP callback switch between original model and reduced, presolved model - IBM Documentation

    I would like to gain a clearer understanding of why the error occurs.

    Thanks.

    ------------------------------
    CPLEX User
    ------------------------------
    #DecisionOptimization