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.