Abstract ratio test base class.Class SPxRatioTester is the virtual base class for computing the ratio test within the Simplex algorithm driven by SoPlex. After a SoPlex solver has been load()ed to an SPxRatioTester, the solver calls selectLeave() for computing the ratio test for the entering simplex and selectEnter() for computing the ratio test in leaving simplex. More...
#include <spxratiotester.h>
Public Member Functions | |
Access / modification | |
virtual const char * | getName () const |
get name of ratio tester. More... | |
virtual void | load (SPxSolver *p_solver) |
loads LP. More... | |
virtual void | clear () |
unloads LP. More... | |
virtual SPxSolver * | solver () const |
returns loaded LP solver. More... | |
virtual void | setDelta (Real newDelta) |
set allowed bound violation More... | |
virtual Real | getDelta () |
get allowed bound violation More... | |
Entering / leaving | |
virtual int | selectLeave (Real &val, Real enterTest, bool polish=false)=0 |
selects index to leave the basis. More... | |
virtual SPxId | selectEnter (Real &val, int leaveIdx, bool polish=false)=0 |
selects variable Id to enter the basis. More... | |
virtual void | setType (SPxSolver::Type) |
sets Simplex type. More... | |
Construction / destruction | |
SPxRatioTester (const char *name) | |
default constructor More... | |
SPxRatioTester (const SPxRatioTester &old) | |
copy constructor More... | |
SPxRatioTester & | operator= (const SPxRatioTester &rhs) |
assignment operator More... | |
virtual | ~SPxRatioTester () |
destructor. More... | |
virtual SPxRatioTester * | clone () const =0 |
clone function for polymorphism More... | |
Protected Attributes | |
Data | |
SPxSolver * | thesolver |
the solver More... | |
const char * | m_name |
name of the ratio tester More... | |
SPxSolver::Type | m_type |
internal storage of type More... | |
Real | delta |
allowed bound violation More... | |
Abstract ratio test base class.
Class SPxRatioTester is the virtual base class for computing the ratio test within the Simplex algorithm driven by SoPlex. After a SoPlex solver has been load()ed to an SPxRatioTester, the solver calls selectLeave() for computing the ratio test for the entering simplex and selectEnter() for computing the ratio test in leaving simplex.
Definition at line 40 of file spxratiotester.h.
|
explicit |
default constructor
Definition at line 169 of file spxratiotester.h.
SPxRatioTester | ( | const SPxRatioTester & | old | ) |
copy constructor
Definition at line 176 of file spxratiotester.h.
|
virtual |
|
virtual |
unloads LP.
Definition at line 76 of file spxratiotester.h.
Referenced by SPxSolver::loadLP(), SPxSolver::read(), SPxSolver::reLoad(), SPxSolver::setTester(), and SPxSolver::SPxSolver().
|
pure virtual |
clone function for polymorphism
Implemented in SPxBoundFlippingRT, SPxFastRT, SPxHarrisRT, and SPxDefaultRT.
Referenced by SPxSolver::operator=(), SPxSolver::SPxSolver(), and SPxRatioTester::~SPxRatioTester().
|
virtual |
get allowed bound violation
Reimplemented in SPxFastRT.
Definition at line 97 of file spxratiotester.h.
References SPxRatioTester::delta, SPxRatioTester::selectEnter(), and SPxRatioTester::selectLeave().
Referenced by SPxSolver::solve().
|
virtual |
get name of ratio tester.
Definition at line 63 of file spxratiotester.h.
References SPxRatioTester::m_name.
Referenced by SoPlex::getRatiotesterName().
|
virtual |
loads LP.
Load the solver and LP for which pricing steps are to be performed.
Reimplemented in SPxFastRT.
Definition at line 70 of file spxratiotester.h.
Referenced by SPxSolver::init(), SPxSolver::operator=(), SPxSolver::setTester(), and SPxSolver::SPxSolver().
SPxRatioTester& operator= | ( | const SPxRatioTester & | rhs | ) |
assignment operator
Definition at line 183 of file spxratiotester.h.
References SPxRatioTester::delta, SPxRatioTester::m_name, SPxRatioTester::m_type, and SPxRatioTester::thesolver.
Referenced by SPxDefaultRT::operator=(), SPxHarrisRT::operator=(), and SPxFastRT::operator=().
selects variable Id to enter the basis.
Method selectEnter() is called by the loaded SoPlex solver, when computing the leaving simplex algorithm. It's task is to select and return the Id of the basis variable that is to enter the basis. When being called, pVec() fullfills the bounds lbBound() and ubBound() within leavetol(). Similarly, coPvec() fulfills the bounds lbBound() and ubBound() within leavetol(). pVec().delta() and coPvec().delta() are the vectors by which pVec() and coPvec() will be updated in this simplex step. Their nonzero indices are stored in sorted order in pVec().idx() and coPvec().idx().
If val
> 0, val
is the maximum allowed update value for pVec() and coPvec(), otherwise the minimum. Method selectEnter() must chose val
of the same sign as passed, such that updating pVec() and coPvec() by val
yields a new vector that satisfies all basic bounds (within leavetol). The returned Id must be the Id of an element of pVec() or coPvec(), that reaches one of its bounds with this update.
Implemented in SPxBoundFlippingRT, SPxFastRT, SPxHarrisRT, and SPxDefaultRT.
Referenced by SPxRatioTester::getDelta(), and SPxSolver::leave().
selects index to leave the basis.
Method selectLeave() is called by the loaded SoPlex solver when computing the entering simplex algorithm. Its task is to select and return the index of the basis variable that is to leave the basis. When being called, fVec() fullfills the basic bounds lbBound() and ubBound() within entertol(). fVec().delta() is the vector by which fVec() will be updated in this simplex step. Its nonzero indices are stored in sorted order in fVec().idx().
If val
> 0, val
is the maximum allowed update value for fVec(), otherwise the minimum. Method selectLeave() must chose val
of the same sign as passed, such that updating fVec() by val
yields a new vector that satisfies all basic bounds (within entertol). The returned index, must be the index of an element of fVec(), that reaches one of its bounds with this update.
Implemented in SPxBoundFlippingRT, SPxFastRT, SPxHarrisRT, and SPxDefaultRT.
Referenced by SPxSolver::enter(), and SPxRatioTester::getDelta().
|
virtual |
set allowed bound violation
Reimplemented in SPxFastRT.
Definition at line 88 of file spxratiotester.h.
References DEFAULT_EPS_ZERO.
Referenced by SPxSolver::init(), and SPxSolver::solve().
|
virtual |
sets Simplex 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 SPxFastRT.
Definition at line 161 of file spxratiotester.h.
Referenced by SPxSolver::performSolutionPolishing(), and SPxSolver::solve().
|
virtual |
returns loaded LP solver.
Definition at line 82 of file spxratiotester.h.
References SPxRatioTester::thesolver.
Referenced by SPxFastRT::clone(), SPxHarrisRT::degenerateEps(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), SPxFastRT::selectEnter(), SPxDefaultRT::selectLeave(), SPxHarrisRT::selectLeave(), SPxFastRT::selectLeave(), and SPxSolver::solve().
|
protected |
allowed bound violation
Definition at line 54 of file spxratiotester.h.
Referenced by SPxRatioTester::getDelta(), SPxHarrisRT::maxDelta(), SPxHarrisRT::minDelta(), SPxRatioTester::operator=(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxDefaultRT::selectLeave(), SPxHarrisRT::selectLeave(), SPxBoundFlippingRT::selectLeave(), SPxFastRT::setDelta(), SPxFastRT::setType(), and SPxFastRT::tighten().
|
protected |
name of the ratio tester
Definition at line 50 of file spxratiotester.h.
Referenced by SPxRatioTester::getName(), and SPxRatioTester::operator=().
|
protected |
internal storage of type
Definition at line 52 of file spxratiotester.h.
Referenced by SPxBoundFlippingRT::flipAndUpdate(), SPxFastRT::maxDelta(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minSelect(), SPxRatioTester::operator=(), SPxFastRT::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxFastRT::selectLeave(), SPxBoundFlippingRT::selectLeave(), and SPxFastRT::setType().
|
protected |
the solver
Definition at line 48 of file spxratiotester.h.
Referenced by SPxBoundFlippingRT::flipAndUpdate(), SPxBoundFlippingRT::getData(), SPxFastRT::load(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxReLeave(), SPxFastRT::maxSelect(), SPxFastRT::maxShortLeave(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minReLeave(), SPxFastRT::minSelect(), SPxFastRT::minShortLeave(), SPxRatioTester::operator=(), SPxFastRT::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxFastRT::selectLeave(), SPxBoundFlippingRT::selectLeave(), SPxFastRT::shortEnter(), and SPxRatioTester::solver().