| Overview | Group | Index | Concepts | 
This is an advanced routine. Advanced routines typically demand a thorough 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, and 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:
| env | The pointer to the ILOG CPLEX environment, as returned by   | 
| lp | A pointer to the CPLEX LP problem object, as returned by   | 
| 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   | 
| 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   | 
| dnorm | An array containing the dual steepest-edge norms. The length of the allocated array is at least the value returned by   |