Hybrid pricer.The hybrid pricer for SoPlex tries to guess the best pricing strategy to use for pricing the loaded LP with the loaded algorithm type and basis representation. Currently it does so by switching between SPxSteepPR, SPxDevexPR and SPxParMultPR. More...
#include <spxhybridpr.h>
Public Member Functions | |
Access / modification | |
virtual void | setEpsilon (Real eps) |
sets the epsilon More... | |
virtual void | load (SPxSolver *solver) |
sets the solver More... | |
virtual void | clear () |
clears all pricers and unselects the current pricer More... | |
virtual void | setType (SPxSolver::Type tp) |
sets entering or leaving algorithm More... | |
virtual void | setRep (SPxSolver::Representation rep) |
sets row or column representation More... | |
virtual int | selectLeave () |
selects the leaving algorithm More... | |
virtual SPxId | selectEnter () |
selects the entering algorithm More... | |
virtual void | left4 (int n, SPxId id) |
calls left4 on the current pricer More... | |
virtual void | entered4 (SPxId id, int n) |
calls entered4 on the current pricer More... | |
virtual void | addedVecs (int n) |
calls addedVecs(n) on all pricers More... | |
virtual void | addedCoVecs (int n) |
calls addedCoVecs(n) on all pricers More... | |
Consistency check | |
virtual bool | isConsistent () const |
consistency check More... | |
Construction / destruction | |
SPxHybridPR () | |
default constructor More... | |
SPxHybridPR (const SPxHybridPR &old) | |
copy constructor More... | |
SPxHybridPR & | operator= (const SPxHybridPR &rhs) |
assignment operator More... | |
virtual | ~SPxHybridPR () |
destructor More... | |
virtual SPxPricer * | clone () const |
clone function for polymorphism More... | |
Public Member Functions inherited from SPxPricer | |
virtual const char * | getName () const |
get name of pricer. More... | |
virtual SPxSolver * | solver () const |
returns loaded SPxSolver object. More... | |
virtual Real | epsilon () const |
returns violation bound theeps. More... | |
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... | |
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... | |
Private Attributes | |
Data | |
SPxSteepPR | steep |
steepest edge pricer More... | |
SPxParMultPR | parmult |
partial multiple pricer More... | |
SPxDevexPR | devex |
devex pricer More... | |
SPxPricer * | thepricer |
the currently used pricer More... | |
Real | hybridFactor |
factor between dim and coDim of the problem to decide about the pricer More... | |
Additional Inherited Members | |
Public Types inherited from SPxPricer | |
enum | ViolationType { NOT_VIOLATED = 0, VIOLATED = 1, VIOLATED_AND_CHECKED = 2 } |
Protected Attributes inherited from SPxPricer | |
IdxCompare | compare |
const char * | m_name |
name of the pricer More... | |
SPxSolver * | thesolver |
the solver More... | |
Real | theeps |
violation bound More... | |
Hybrid pricer.
The hybrid pricer for SoPlex tries to guess the best pricing strategy to use for pricing the loaded LP with the loaded algorithm type and basis representation. Currently it does so by switching between SPxSteepPR, SPxDevexPR and SPxParMultPR.
See SPxPricer for a class documentation.
Definition at line 43 of file spxhybridpr.h.
SPxHybridPR | ( | ) |
default constructor
Definition at line 100 of file spxhybridpr.h.
Referenced by SPxHybridPR::clone().
SPxHybridPR | ( | const SPxHybridPR & | old | ) |
copy constructor
Definition at line 106 of file spxhybridpr.h.
References SPxHybridPR::devex, SPxHybridPR::parmult, SPxHybridPR::steep, and SPxHybridPR::thepricer.
|
virtual |
destructor
Definition at line 162 of file spxhybridpr.h.
|
virtual |
calls addedCoVecs(n) on all pricers
Reimplemented from SPxPricer.
Definition at line 133 of file spxhybridpr.cpp.
References SPxDevexPR::addedCoVecs(), SPxSteepPR::addedCoVecs(), SPxPricer::addedCoVecs(), SPxHybridPR::devex, SPxHybridPR::parmult, and SPxHybridPR::steep.
|
virtual |
calls addedVecs(n) on all pricers
Reimplemented from SPxPricer.
Definition at line 126 of file spxhybridpr.cpp.
References SPxDevexPR::addedVecs(), SPxSteepPR::addedVecs(), SPxPricer::addedVecs(), SPxHybridPR::devex, SPxHybridPR::parmult, and SPxHybridPR::steep.
|
virtual |
clears all pricers and unselects the current pricer
Reimplemented from SPxPricer.
Definition at line 52 of file spxhybridpr.cpp.
References SPxPricer::clear(), SPxSteepPR::clear(), SPxHybridPR::devex, SPxHybridPR::parmult, SPxHybridPR::steep, and SPxPricer::thesolver.
|
virtual |
clone function for polymorphism
Implements SPxPricer.
Definition at line 165 of file spxhybridpr.h.
References SPxHybridPR::SPxHybridPR().
|
virtual |
calls entered4 on the current pricer
Reimplemented from SPxPricer.
Definition at line 121 of file spxhybridpr.cpp.
References SPxPricer::entered4(), and SPxHybridPR::thepricer.
|
virtual |
consistency check
Reimplemented from SPxPricer.
Definition at line 25 of file spxhybridpr.cpp.
References SPxHybridPR::devex, SPxDevexPR::isConsistent(), SPxSteepPR::isConsistent(), SPxPricer::isConsistent(), MSGinconsistent, SPxHybridPR::parmult, SPxPricer::solver(), SPxHybridPR::steep, and SPxPricer::thesolver.
|
virtual |
calls left4 on the current pricer
Reimplemented from SPxPricer.
Definition at line 111 of file spxhybridpr.cpp.
References SPxPricer::left4(), and SPxHybridPR::thepricer.
|
virtual |
sets the solver
Reimplemented from SPxPricer.
Definition at line 43 of file spxhybridpr.cpp.
References SPxHybridPR::devex, SPxDevexPR::load(), SPxParMultPR::load(), SPxSteepPR::load(), SPxHybridPR::parmult, SPxHybridPR::setType(), SPxHybridPR::steep, SPxPricer::thesolver, and SPxSolver::type().
SPxHybridPR& operator= | ( | const SPxHybridPR & | rhs | ) |
assignment operator
Definition at line 131 of file spxhybridpr.h.
References SPxHybridPR::devex, SPxHybridPR::hybridFactor, SPxPricer::operator=(), SPxHybridPR::parmult, SPxHybridPR::steep, and SPxHybridPR::thepricer.
|
virtual |
selects the entering algorithm
Implements SPxPricer.
Definition at line 116 of file spxhybridpr.cpp.
References SPxPricer::selectEnter(), and SPxHybridPR::thepricer.
|
virtual |
selects the leaving algorithm
Implements SPxPricer.
Definition at line 106 of file spxhybridpr.cpp.
References SPxPricer::selectLeave(), and SPxHybridPR::thepricer.
|
virtual |
sets the epsilon
Reimplemented from SPxPricer.
Definition at line 60 of file spxhybridpr.cpp.
References SPxHybridPR::devex, SPxHybridPR::parmult, SPxPricer::setEpsilon(), and SPxHybridPR::steep.
|
virtual |
sets row or column representation
Reimplemented from SPxPricer.
Definition at line 99 of file spxhybridpr.cpp.
References SPxHybridPR::devex, SPxHybridPR::parmult, SPxDevexPR::setRep(), SPxPricer::setRep(), SPxSteepPR::setRep(), and SPxHybridPR::steep.
|
virtual |
sets entering or leaving algorithm
Reimplemented from SPxPricer.
Definition at line 67 of file spxhybridpr.cpp.
References SPxSolver::coDim(), SPxSolver::dim(), SPxSolver::FULL, SPxPricer::getName(), SPxHybridPR::hybridFactor, SPxSolver::LEAVE, MSG_INFO1, SPxHybridPR::parmult, SPxSolver::PARTIAL, SPxSolver::setPricing(), SPxPricer::setType(), SPxSolver::spxout, SPxHybridPR::steep, SPxHybridPR::thepricer, and SPxPricer::thesolver.
Referenced by SPxHybridPR::load().
|
private |
devex pricer
Definition at line 53 of file spxhybridpr.h.
Referenced by SPxHybridPR::addedCoVecs(), SPxHybridPR::addedVecs(), SPxHybridPR::clear(), SPxHybridPR::isConsistent(), SPxHybridPR::load(), SPxHybridPR::operator=(), SPxHybridPR::setEpsilon(), SPxHybridPR::setRep(), and SPxHybridPR::SPxHybridPR().
|
private |
factor between dim and coDim of the problem to decide about the pricer
Definition at line 57 of file spxhybridpr.h.
Referenced by SPxHybridPR::operator=(), and SPxHybridPR::setType().
|
private |
partial multiple pricer
Definition at line 51 of file spxhybridpr.h.
Referenced by SPxHybridPR::addedCoVecs(), SPxHybridPR::addedVecs(), SPxHybridPR::clear(), SPxHybridPR::isConsistent(), SPxHybridPR::load(), SPxHybridPR::operator=(), SPxHybridPR::setEpsilon(), SPxHybridPR::setRep(), SPxHybridPR::setType(), and SPxHybridPR::SPxHybridPR().
|
private |
steepest edge pricer
Definition at line 49 of file spxhybridpr.h.
Referenced by SPxHybridPR::addedCoVecs(), SPxHybridPR::addedVecs(), SPxHybridPR::clear(), SPxHybridPR::isConsistent(), SPxHybridPR::load(), SPxHybridPR::operator=(), SPxHybridPR::setEpsilon(), SPxHybridPR::setRep(), SPxHybridPR::setType(), and SPxHybridPR::SPxHybridPR().
|
private |
the currently used pricer
Definition at line 55 of file spxhybridpr.h.
Referenced by SPxHybridPR::entered4(), SPxHybridPR::left4(), SPxHybridPR::operator=(), SPxHybridPR::selectEnter(), SPxHybridPR::selectLeave(), SPxHybridPR::setType(), and SPxHybridPR::SPxHybridPR().