|
Abstract pricer base class.Class SPxPricer is a pure virtual class defining the interface for pricer classes to be used by SoPlex. The pricer's task is to select a vector to enter or leave the simplex basis, depending on the chosen simplex type.
More...
#include <spxpricer.h>
Abstract pricer base class.
Class SPxPricer is a pure virtual class defining the interface for pricer classes to be used by SoPlex. The pricer's task is to select a vector to enter or leave the simplex basis, depending on the chosen simplex type.
An SPxPricer first loads the SoPlex object for which pricing is to be performed. Then, depending of the SPxSolver::Type, methods selectEnter() and entered4() (for entering Simplex) or selectLeave() and left4() (for leaving Simplex) are called by SoPlex. The SPxPricer object is informed of a change of the SPxSolver::Type by calling method setType().
Definition at line 46 of file spxpricer.h.
Enumerator |
---|
NOT_VIOLATED |
|
VIOLATED |
|
VIOLATED_AND_CHECKED |
|
Definition at line 98 of file spxpricer.h.
virtual void addedCoVecs |
( |
int |
| ) |
|
|
virtual |
virtual void addedVecs |
( |
int |
| ) |
|
|
virtual |
virtual void entered4 |
( |
SPxId |
, |
|
|
int |
|
|
) |
| |
|
virtual |
performs entering pivot.
Method entered4() is called after each simplex iteration in ENTER mode. It informs the SPxPricer that variable id has entered at the n 'th position. When being called, all vectors of SoPlex involved in such an entering update are setup correctly and may be accessed via the corresponding methods (fVec(), pVec(), etc.). In general, argument id will be the one returned by the SPxPricer at the previous call to selectEnter(). However, one can not rely on this.
Reimplemented in SPxSteepPR, SPxDevexPR, SPxAutoPR, and SPxHybridPR.
Definition at line 214 of file spxpricer.h.
Referenced by SPxHybridPR::entered4(), SPxAutoPR::entered4(), and SPxSolver::solve().
virtual Real epsilon |
( |
| ) |
const |
|
virtual |
virtual bool getDualNorms |
( |
int & |
nrows, |
|
|
int & |
ncols, |
|
|
Real * |
norms |
|
) |
| const |
|
virtual |
virtual const char* getName |
( |
| ) |
const |
|
virtual |
virtual void getNdualNorms |
( |
int & |
nrows, |
|
|
int & |
ncols |
|
) |
| const |
|
virtual |
virtual bool isConsistent |
( |
| ) |
const |
|
virtual |
virtual void left4 |
( |
int |
, |
|
|
SPxId |
|
|
) |
| |
|
virtual |
performs leaving pivot.
Method left4() is called after each simplex iteration in LEAVE mode. It informs the SPxPricer that the n 'th variable has left the basis for id to come in at this position. When being called, all vectors of SoPlex involved in such an entering update are setup correctly and may be accessed via the corresponding methods (fVec(), pVec(), etc.). In general, argument n will be the one returned by the SPxPricer at the previous call to selectLeave(). However, one can not rely on this.
Reimplemented in SPxSteepPR, SPxDevexPR, SPxAutoPR, and SPxHybridPR.
Definition at line 186 of file spxpricer.h.
References SPxPricer::selectEnter().
Referenced by SPxHybridPR::left4(), SPxAutoPR::left4(), and SPxSolver::solve().
assignment operator
Definition at line 382 of file spxpricer.h.
References SPxPricer::coWeights, SPxPricer::isConsistent(), SPxPricer::m_name, SPxPricer::theeps, SPxPricer::thesolver, SPxPricer::weights, and SPxPricer::weightsAreSetup.
Referenced by SPxDantzigPR::operator=(), SPxAutoPR::operator=(), SPxParMultPR::operator=(), SPxWeightPR::operator=(), SPxDevexPR::operator=(), SPxHybridPR::operator=(), and SPxSteepPR::operator=().
virtual void removedCoVec |
( |
int |
| ) |
|
|
virtual |
virtual void removedCoVecs |
( |
const int * |
| ) |
|
|
virtual |
covectors given by perm have been removed from loaded LP.
Definition at line 243 of file spxpricer.h.
virtual void removedVec |
( |
int |
| ) |
|
|
virtual |
virtual void removedVecs |
( |
const int * |
| ) |
|
|
virtual |
virtual SPxId selectEnter |
( |
| ) |
|
|
pure virtual |
selects Id to enter basis.
Selects the SPxId of a vector to enter the basis. The selected id, must not represent a basic index (i.e. solver()->isBasic(id) must be false). However, the corresponding test value needs not to be less than -epsilon(). If not, SoPlex will discard the pivot.
Note: When method selectEnter() is called by the loaded SoPlex object, all values from coTest() are up to date. However, whether the elements of test() are up to date depends on the SPxSolver::Pricing type.
Implemented in SPxSteepPR, SPxWeightPR, SPxParMultPR, SPxDevexPR, SPxAutoPR, SPxDantzigPR, and SPxHybridPR.
Referenced by SPxPricer::left4(), SPxHybridPR::selectEnter(), SPxAutoPR::selectEnter(), and SPxSolver::solve().
virtual int selectLeave |
( |
| ) |
|
|
pure virtual |
returns selected index to leave basis.
Selects the index of a vector to leave the basis. The selected index i, say, must be in the range 0 <= i < solver()->dim() and its tested value must fullfill solver()->test()[i] < -epsilon().
Implemented in SPxSteepPR, SPxWeightPR, SPxParMultPR, SPxDevexPR, SPxAutoPR, SPxDantzigPR, and SPxHybridPR.
Referenced by SPxHybridPR::selectLeave(), SPxAutoPR::selectLeave(), SPxPricer::setRep(), and SPxSolver::solve().
virtual bool setDualNorms |
( |
int |
nrows, |
|
|
int |
ncols, |
|
|
Real * |
norms |
|
) |
| |
|
virtual |
virtual void setEpsilon |
( |
Real |
eps | ) |
|
|
virtual |
returns loaded SPxSolver object.
Definition at line 129 of file spxpricer.h.
References SPxPricer::thesolver.
Referenced by SPxWeightPR::addedCoVecs(), SPxWeightPR::addedVecs(), SPxParMultPR::clone(), SPxWeightPR::computeCP(), SPxWeightPR::computeLeavePenalty(), SPxWeightPR::computeRP(), SPxSolver::initRep(), SPxHybridPR::isConsistent(), SPxWeightPR::isConsistent(), SPxWeightPR::load(), SPxWeightPR::removedCoVec(), SPxWeightPR::removedCoVecs(), SPxWeightPR::removedVec(), SPxWeightPR::removedVecs(), SPxWeightPR::selectEnter(), SPxWeightPR::selectLeave(), and SPxSolver::solve().
Definition at line 61 of file spxpricer.h.
Referenced by SPxDevexPR::addedCoVecs(), SPxSteepPR::addedCoVecs(), SPxDevexPR::buildBestPriceVectorEnterDim(), SPxSteepPR::buildBestPriceVectorEnterDim(), SPxDevexPR::buildBestPriceVectorLeave(), SPxSteepPR::buildBestPriceVectorLeave(), SPxDevexPR::entered4(), SPxSteepPR::entered4(), SPxDevexPR::init(), SPxDevexPR::isConsistent(), SPxSteepPR::isConsistent(), SPxDevexPR::left4(), SPxSteepPR::left4(), SPxPricer::operator=(), SPxSteepPR::removedCoVec(), SPxSteepPR::removedCoVecs(), SPxDevexPR::selectEnterDenseDim(), SPxSteepPR::selectEnterDenseDim(), SPxDevexPR::selectEnterHyperDim(), SPxSteepPR::selectEnterHyperDim(), SPxDevexPR::selectEnterSparseDim(), SPxSteepPR::selectEnterSparseDim(), SPxDevexPR::selectLeaveHyper(), SPxSteepPR::selectLeaveHyper(), SPxDevexPR::selectLeaveSparse(), SPxSteepPR::selectLeaveSparse(), SPxDevexPR::selectLeaveX(), SPxSteepPR::selectLeaveX(), SPxSteepPR::setRep(), and SPxSteepPR::setupWeights().
violation bound
Definition at line 58 of file spxpricer.h.
Referenced by SPxPricer::epsilon(), SPxDevexPR::left4(), SPxSteepPR::left4(), SPxPricer::operator=(), SPxDevexPR::selectEnter(), SPxParMultPR::selectEnter(), SPxWeightPR::selectEnter(), SPxSteepPR::selectEnter(), SPxDantzigPR::selectEnterDenseCoDim(), SPxDantzigPR::selectEnterDenseDim(), SPxDantzigPR::selectEnterSparseCoDim(), SPxDantzigPR::selectEnterSparseDim(), SPxDantzigPR::selectEnterX(), SPxDantzigPR::selectLeave(), SPxDevexPR::selectLeave(), SPxParMultPR::selectLeave(), SPxWeightPR::selectLeave(), SPxSteepPR::selectLeave(), SPxDantzigPR::selectLeaveSparse(), and SPxAutoPR::setEpsilon().
the solver
Definition at line 56 of file spxpricer.h.
Referenced by SPxDevexPR::addedCoVecs(), SPxSteepPR::addedCoVecs(), SPxDevexPR::addedVecs(), SPxSteepPR::addedVecs(), SPxDevexPR::buildBestPriceVectorEnterCoDim(), SPxSteepPR::buildBestPriceVectorEnterCoDim(), SPxDevexPR::buildBestPriceVectorEnterDim(), SPxSteepPR::buildBestPriceVectorEnterDim(), SPxDevexPR::buildBestPriceVectorLeave(), SPxSteepPR::buildBestPriceVectorLeave(), SPxHybridPR::clear(), SPxAutoPR::clear(), SPxSteepPR::clear(), SPxWeightPR::computeLeavePenalty(), SPxDevexPR::entered4(), SPxSteepPR::entered4(), SPxDevexPR::init(), SPxHybridPR::isConsistent(), SPxDevexPR::isConsistent(), SPxSteepPR::isConsistent(), SPxDevexPR::left4(), SPxSteepPR::left4(), SPxHybridPR::load(), SPxAutoPR::load(), SPxDevexPR::load(), SPxParMultPR::load(), SPxWeightPR::load(), SPxSteepPR::load(), SPxPricer::operator=(), SPxSteepPR::removedCoVec(), SPxSteepPR::removedCoVecs(), SPxSteepPR::removedVec(), SPxSteepPR::removedVecs(), SPxDantzigPR::selectEnter(), SPxAutoPR::selectEnter(), SPxDevexPR::selectEnter(), SPxParMultPR::selectEnter(), SPxSteepPR::selectEnter(), SPxDantzigPR::selectEnterDenseCoDim(), SPxDevexPR::selectEnterDenseCoDim(), SPxSteepPR::selectEnterDenseCoDim(), SPxDantzigPR::selectEnterDenseDim(), SPxDevexPR::selectEnterDenseDim(), SPxSteepPR::selectEnterDenseDim(), SPxDevexPR::selectEnterHyperCoDim(), SPxSteepPR::selectEnterHyperCoDim(), SPxDevexPR::selectEnterHyperDim(), SPxSteepPR::selectEnterHyperDim(), SPxDantzigPR::selectEnterSparseCoDim(), SPxDevexPR::selectEnterSparseCoDim(), SPxSteepPR::selectEnterSparseCoDim(), SPxDantzigPR::selectEnterSparseDim(), SPxDevexPR::selectEnterSparseDim(), SPxSteepPR::selectEnterSparseDim(), SPxDantzigPR::selectEnterX(), SPxDevexPR::selectEnterX(), SPxSteepPR::selectEnterX(), SPxDantzigPR::selectLeave(), SPxAutoPR::selectLeave(), SPxDevexPR::selectLeave(), SPxParMultPR::selectLeave(), SPxWeightPR::selectLeave(), SPxSteepPR::selectLeave(), SPxDevexPR::selectLeaveHyper(), SPxSteepPR::selectLeaveHyper(), SPxDantzigPR::selectLeaveSparse(), SPxDevexPR::selectLeaveSparse(), SPxSteepPR::selectLeaveSparse(), SPxDevexPR::selectLeaveX(), SPxSteepPR::selectLeaveX(), SPxAutoPR::setActivePricer(), SPxDevexPR::setRep(), SPxSteepPR::setRep(), SPxHybridPR::setType(), SPxParMultPR::setType(), SPxWeightPR::setType(), SPxSteepPR::setType(), SPxSteepPR::setupPrefs(), SPxSteepPR::setupPrefsX(), SPxSteepPR::setupWeights(), and SPxPricer::solver().
vector to store pricing weights or norms
Definition at line 60 of file spxpricer.h.
Referenced by SPxDevexPR::addedVecs(), SPxSteepPR::addedVecs(), SPxDevexPR::buildBestPriceVectorEnterCoDim(), SPxSteepPR::buildBestPriceVectorEnterCoDim(), SPxDevexPR::entered4(), SPxSteepPR::entered4(), SPxDevexPR::init(), SPxDevexPR::isConsistent(), SPxSteepPR::isConsistent(), SPxPricer::operator=(), SPxSteepPR::removedVec(), SPxSteepPR::removedVecs(), SPxDevexPR::selectEnterDenseCoDim(), SPxSteepPR::selectEnterDenseCoDim(), SPxDevexPR::selectEnterHyperCoDim(), SPxSteepPR::selectEnterHyperCoDim(), SPxDevexPR::selectEnterSparseCoDim(), SPxSteepPR::selectEnterSparseCoDim(), SPxSteepPR::setRep(), and SPxSteepPR::setupWeights().
|