NO FRAMES

CPXgetbasednorms

int CPXPUBLIC CPXgetbasednorms(CPXCENVptr env, CPXCLPptr lp, int * cstat, int * rstat, double * dnorm)
Definition file: cplex.h
Include files: cplex.h
Note

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

The routine CPXgetbasednorms works in conjunction with the routine CPXcopybasednorms. CPXgetbasednorms retrieves the resident basis and dual norms from a specified problem object.

Each of the arrays cstat, rstat, and dnorm must be non NULL. That is, each of these arrays must be allocated. The allocated size of cstat is assumed by this routine to be at least the number returned by CPXgetnumcols. The allocated size of rstat and dnorm are assumed to be at least the number returned by CPXgetnumrows. (Other details of cstat, rstat, and dnorm are not documented.)

Success, Failure

If this routine succeeds, cstat and rstat contain information about the resident basis, and dnorm contains the dual steepest-edge norms. If there is no basis, or if there is no set of dual steepest-edge norms, this routine returns an error code. The returned data are intended solely for use by CPXcopybasednorms.

Example

For example, if a given LP has just been successfully solved by the ILOG CPLEX Callable Library optimizer CPXdualopt with the dual pricing option CPX_PARAM_DPRIIND set to CPX_DPRIIND_STEEP, CPX_DPRIIND_FULLSTEEP, or CPX_DPRIIND_STEEPQSTART, then a call to CPXgetbasednorms should succeed. (That optimizer and those pricing options are documented in the ILOG CPLEX Reference Manual, and their use is illustrated in the ILOG CPLEX User's Manual.)

Motivation

When the ILOG CPLEX Callable Library optimizer CPXdualopt is called to solve a problem with the dual pricing option CPX_PARAM_DPRIIND set to CPX_DPRIIND_STEEP or CPX_DPRIIND_FULLSTEEP, there must be values of appropriate dual norms available before the optimizer can begin. If these norms are not already resident, they must be computed, ant that computation may be expensive. The functions CPXgetbasednorms and CPXcopybasednorms can, in some cases, avoid that expense. Suppose, for example, that in some application an LP is solved by CPXdualopt with one of those pricing settings. After the solution of the LP, some intermediate optimizations are carried out on the same LP, and those subsequent optimizations are in turn followed by some changes to the LP, and a re-solve. In such a case, copying the basis and norms that were resident before the intermediate solves, back into ILOG CPLEX data structures can greatly increase the speed of the re-solve.

See Also:

Parameters:

env

The pointer to the ILOG CPLEX environment, as returned by CPXopenCPLEX.

lp

A pointer to the CPLEX LP problem object, as returned by CPXcreateprob.

cstat

An array containing the basis status of the columns in the constraint matrix. The length of the allocated array is at least the value returned by CPXgetnumcols.

rstat

An array containing the basis status of the rows in the constraint matrix. The length of the allocated array is at least the value returned by CPXgetnumrows.

dnorm

An array containing the dual steepest-edge norms. The length of the allocated array is at least the value returned by CPXgetnumrows.

Returns:

The routine returns zero on success and nonzero if an error occurs.