CPXCALLBACKSOLUTIONSTRATEGY

Solution strategies for handling solutions passed to CPXXcallbackpostheursoln.


typedef enum {
   CPXCALLBACKSOLUTION_NOCHECK = -1,
   CPXCALLBACKSOLUTION_CHECKFEAS,
   CPXCALLBACKSOLUTION_PROPAGATE,
   CPXCALLBACKSOLUTION_SOLVE
} CPXCALLSOLUTIONTYPE; 
            

Description

value description
CPXCALLBACKSOLUTION_NOCHECK CPLEX does not check feasibility of the solution passed to CPXXcallbackpostheursoln and CPXcallbackpostheursoln but accepts it no matter what. Solutions posted with this strategy must be complete (that is, the solution must have a value for each variable in the model).
CPXCALLBACKSOLUTION_CHECKFEAS CPLEX checks only feasibility of the solution passed to CPXXcallbackpostheursoln and CPXcallbackpostheursoln. This check implies that the solution must be a complete solution. (That is, the solution must have a value for each variable in the model.) Otherwise, CPLEX drops the solution.
CPXCALLBACKSOLUTION_PROPAGATE Use bound propagation to try to complete the solution passed to CPXXcallbackpostheursoln and CPXcallbackpostheursoln. This strategy can be used if the solution does not contain a value for each variable. See the explanation after this table for details.
CPXCALLBACKSOLUTION_SOLVE Try to complete the solution passed to CPXXcallbackpostheursoln and CPXcallbackpostheursoln by fixing all the variables specified in the solution and solving the resulting reduced problem.

It is possible that the arguments to CPXXcallbackpostheursoln and CPXcallbackpostheursoln specify only a partial solution, either because the ind and val arrays do not provide a value for each variable or because some entries in val are NaNs (not a number).

Consider such an incomplete solution passed to CPXXcallbackpostheursoln and CPXcallbackpostheursoln. If you choose the strategy CPX_CALLBACKSOLUTION_PROPAGATE, then CPLEX executes bound propagation using the values specified in the solution. More precisely, CPLEX fixes the variables listed in the solution with non-NaN values to the specified values and then propagates these fixings to try to fix the remaining variables. If that attempt manages to fix all variables, then the result is a complete solution that CPLEX can inject into the solution process. If that attempt fails instead, then CPLEX discards the incomplete solution posted by the user.

The propagation that CPLEX applies in such a case is similar to CPXXbasicpresolve and CPXbasicpresolve.

See also

CPXXcallbackpostheursoln and CPXcallbackpostheursoln