Abstract pricer base class. More...
#include <spxpricer.h>
Classes | |
struct | IdxCompare |
Compare class to sort idx/val pairs, used for hypersparse pricing leaving. More... | |
struct | IdxElement |
Public Types | |
enum | ViolationType { NOT_VIOLATED = 0 , VIOLATED = 1 , VIOLATED_AND_CHECKED = 2 } |
Public Member Functions | |
Initialization | |
virtual const char * | getName () const |
get name of pricer. More... | |
virtual void | load (SPxSolverBase< R > *p_solver) |
loads LP. More... | |
virtual void | clear () |
unloads LP. More... | |
virtual SPxSolverBase< R > * | solver () const |
returns loaded SPxSolverBase object. More... | |
virtual void | setPricingTolerance (R tol) |
sets pricing tolerance. More... | |
virtual R | pricingTolerance () const |
returns the pricing tolerance More... | |
virtual void | setTolerances (std::shared_ptr< Tolerances > newTolerances) |
set the _tolerances member variable More... | |
virtual void | setType (typename SPxSolverBase< R >::Type) |
sets pricing type. More... | |
virtual void | setRep (typename SPxSolverBase< R >::Representation) |
sets basis representation. More... | |
Pivoting | |
virtual int | selectLeave ()=0 |
returns selected index to leave basis. More... | |
virtual void | left4 (int, SPxId) |
performs leaving pivot. More... | |
virtual SPxId | selectEnter ()=0 |
selects Id to enter basis. More... | |
virtual void | entered4 (SPxId, int) |
performs entering pivot. More... | |
Extension | |
virtual void | addedVecs (int) |
n vectors have been added to loaded LP. More... | |
virtual void | addedCoVecs (int) |
n covectors have been added to loaded LP. More... | |
Shrinking | |
virtual void | removedVec (int) |
vector i was removed from loaded LP. More... | |
virtual void | removedVecs (const int *) |
vectors given by perm have been removed from loaded LP. More... | |
virtual void | removedCoVec (int) |
covector i was removed from loaded LP. More... | |
virtual void | removedCoVecs (const int *) |
covectors given by perm have been removed from loaded LP. More... | |
Debugging | |
virtual bool | isConsistent () const |
Constructors / Destructors | |
SPxPricer (const char *p_name) | |
constructor More... | |
SPxPricer (const SPxPricer &old) | |
copy constructor More... | |
SPxPricer & | operator= (const SPxPricer &rhs) |
assignment operator More... | |
virtual | ~SPxPricer () |
destructor. More... | |
virtual SPxPricer * | clone () const =0 |
clone function for polymorphism More... | |
Protected Attributes | |
IdxCompare | compare |
Data | |
const char * | m_name |
name of the pricer More... | |
SPxSolverBase< R > * | thesolver |
the solver More... | |
R | thetolerance |
violation bound More... | |
std::shared_ptr< Tolerances > | _tolerances |
tolerances used by the solver More... | |
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 SPxSolverBase<R>::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 SPxSolverBase<R>::Type by calling method setType().
Definition at line 56 of file spxpricer.h.
enum ViolationType |
Enumerator | |
---|---|
NOT_VIOLATED | |
VIOLATED | |
VIOLATED_AND_CHECKED |
Definition at line 108 of file spxpricer.h.
|
explicit |
constructor
Definition at line 284 of file spxpricer.h.
copy constructor
Definition at line 291 of file spxpricer.h.
|
virtual |
destructor.
Definition at line 312 of file spxpricer.h.
References SPxPricer< R >::m_name, and SPxPricer< R >::thesolver.
|
virtual |
n
covectors have been added to loaded LP.
Reimplemented in SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
Definition at line 246 of file spxpricer.h.
|
virtual |
n
vectors have been added to loaded LP.
Reimplemented in SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
Definition at line 243 of file spxpricer.h.
|
virtual |
unloads LP.
Reimplemented in SPxAutoPR< R >, SPxAutoPR< BP >, SPxHybridPR< R >, SPxSteepPR< R >, and SPxSteepPR< BP >.
Definition at line 133 of file spxpricer.h.
References SPxPricer< R >::thesolver.
|
pure virtual |
clone function for polymorphism
Implemented in SPxAutoPR< R >, SPxAutoPR< BP >, SPxDantzigPR< R >, SPxDantzigPR< BP >, SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxParMultPR< R >, SPxParMultPR< BP >, SPxSteepExPR< R >, SPxSteepExPR< BP >, SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
|
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 SPxAutoPR< R >, SPxAutoPR< BP >, SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxSteepPR< R >, and SPxSteepPR< BP >.
Definition at line 234 of file spxpricer.h.
|
virtual |
|
virtual |
Reimplemented in SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
Definition at line 270 of file spxpricer.h.
References SPxPricer< R >::thesolver.
Referenced by SPxPricer< R >::operator=().
|
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 SPxAutoPR< R >, SPxAutoPR< BP >, SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxSteepPR< R >, and SPxSteepPR< BP >.
Definition at line 206 of file spxpricer.h.
|
virtual |
loads LP.
Loads the solver and LP for which pricing steps are to be performed.
Reimplemented in SPxAutoPR< BP >, SPxDevexPR< BP >, SPxSteepPR< BP >, SPxParMultPR< BP >, SPxAutoPR< R >, SPxDevexPR< R >, SPxSteepPR< R >, SPxWeightPR< R >, SPxHybridPR< R >, and SPxParMultPR< R >.
Definition at line 127 of file spxpricer.h.
References SPxPricer< R >::thesolver.
assignment operator
Definition at line 298 of file spxpricer.h.
References SPxPricer< R >::isConsistent(), SPxPricer< R >::m_name, SPxPricer< R >::thesolver, and SPxPricer< R >::thetolerance.
Referenced by SPxAutoPR< R >::operator=(), SPxDantzigPR< R >::operator=(), SPxDevexPR< R >::operator=(), SPxHybridPR< R >::operator=(), SPxParMultPR< R >::operator=(), SPxSteepPR< R >::operator=(), and SPxWeightPR< R >::operator=().
|
virtual |
returns the pricing tolerance
Definition at line 154 of file spxpricer.h.
References SPxPricer< R >::thetolerance.
|
virtual |
covector i
was removed from loaded LP.
Reimplemented in SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
Definition at line 260 of file spxpricer.h.
|
virtual |
covectors given by perm
have been removed from loaded LP.
Definition at line 263 of file spxpricer.h.
|
virtual |
vector i
was removed from loaded LP.
Reimplemented in SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
Definition at line 254 of file spxpricer.h.
|
virtual |
vectors given by perm
have been removed from loaded LP.
Definition at line 257 of file spxpricer.h.
|
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 -pricingTolerance(). 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 SPxSolverBase<R>::Pricing type.
Implemented in SPxAutoPR< R >, SPxAutoPR< BP >, SPxDantzigPR< R >, SPxDantzigPR< BP >, SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxParMultPR< R >, SPxParMultPR< BP >, SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
|
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] < -pricingTolerance().
Implemented in SPxAutoPR< R >, SPxAutoPR< BP >, SPxDantzigPR< R >, SPxDantzigPR< BP >, SPxDevexPR< R >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxParMultPR< R >, SPxParMultPR< BP >, SPxSteepPR< R >, SPxSteepPR< BP >, and SPxWeightPR< R >.
|
virtual |
sets pricing tolerance.
Inequality violations are accepted, if their size is less than tol
.
Reimplemented in SPxAutoPR< BP >, SPxAutoPR< R >, and SPxHybridPR< R >.
Definition at line 147 of file spxpricer.h.
References SPxPricer< R >::thetolerance.
|
virtual |
sets basis representation.
Informs pricer about (a change of) the loaded SoPlex's Representation.
Reimplemented in SPxSteepPR< BP >, SPxAutoPR< BP >, SPxDevexPR< BP >, SPxHybridPR< R >, SPxSteepPR< R >, SPxWeightPR< R >, SPxAutoPR< R >, and SPxDevexPR< R >.
Definition at line 181 of file spxpricer.h.
|
virtual |
set the _tolerances member variable
Definition at line 161 of file spxpricer.h.
|
virtual |
sets pricing type.
Informs pricer about (a change of) the loaded SoPlex's Type. In the sequel, only the corresponding select methods may be called.
Reimplemented in SPxParMultPR< BP >, SPxAutoPR< BP >, SPxDevexPR< BP >, SPxSteepPR< BP >, SPxHybridPR< R >, SPxParMultPR< R >, SPxWeightPR< R >, SPxAutoPR< R >, SPxDevexPR< R >, and SPxSteepPR< R >.
Definition at line 170 of file spxpricer.h.
References SPxPricer< R >::thesolver.
|
virtual |
returns loaded SPxSolverBase object.
Definition at line 139 of file spxpricer.h.
References SPxPricer< R >::thesolver.
|
protected |
tolerances used by the solver
Definition at line 72 of file spxpricer.h.
|
protected |
Definition at line 103 of file spxpricer.h.
|
protected |
name of the pricer
Definition at line 64 of file spxpricer.h.
Referenced by SPxPricer< R >::getName(), SPxPricer< R >::operator=(), and SPxPricer< R >::~SPxPricer().
|
protected |
the solver
Definition at line 68 of file spxpricer.h.
Referenced by SPxPricer< R >::clear(), SPxPricer< R >::isConsistent(), SPxPricer< R >::load(), SPxPricer< R >::operator=(), SPxPricer< R >::setType(), SPxPricer< R >::solver(), and SPxPricer< R >::~SPxPricer().
|
protected |
violation bound
Definition at line 70 of file spxpricer.h.
Referenced by SPxPricer< R >::operator=(), SPxPricer< R >::pricingTolerance(), and SPxPricer< R >::setPricingTolerance().