Overview | Group | Tree | Graph | Index | Concepts |
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:
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 |