CPXXuncrushx and CPXuncrushx

The routine CPXXuncrushx/CPXuncrushx uncrushes a solution for the presolved problem to the solution for the original problem.

int  CPXXuncrushx( CPXCENVptr env, CPXCLPptr lp, double * x, double const * prex )

int  CPXuncrushx( CPXCENVptr env, CPXCLPptr lp, double * x, double const * prex )

Description

Warning:

This is an advanced routine. Advanced routines typically demand a thorough understanding of the algorithms used by CPLEX. Thus they incur a higher risk of incorrect behavior in your application, behavior that can be difficult to debug. Therefore, the team encourages you to consider carefully whether you can accomplish the same task by means of other Callable Library routines instead.

The routine CPXXuncrushx/CPXuncrushx uncrushes a solution for the presolved problem to the solution for the original problem.

Note:

To use this routine effectively, you must set the value of the parameter that controls the presolve dual setting (CPXPARAM_Preprocessing_Dual) to -1, thus turning off the presolve dual feature.

Arguments

env
A pointer to the CPLEX environment, as returned by CPXXopenCPLEX/CPXopenCPLEX.
lp
A pointer to a CPLEX LP problem object, as returned by CPXXcreateprob/CPXcreateprob.
x
An array to receive the primal solution (x) values for the original problem as computed from primal values of the presolved problem object. The array must be of length at least the number of columns in the LP problem object.
prex
An array that contains primal solution (x) values for the presolved problem, as returned by routines such as CPXXgetx/CPXgetx and CPXXsolution/CPXsolution when applied to the presolved problem object. The array must be of length at least the number of columns in the presolved problem object.

Return

The routine returns 0 (zero) if successful and nonzero if an error occurs.

Example


status = CPXuncrushx (env, lp, x, prex);