|
Implementation of Sparse Linear Solver with Rational precision.This class implements a SLinSolverRational interface by using the sparse LU factorization implemented in CLUFactorRational.
More...
#include <slufactor_rational.h>
|
|
UpdateType | utype () const |
| returns the current update type uptype. More...
|
|
void | setUtype (UpdateType tp) |
| sets update type. More...
|
|
void | setMarkowitz (const Rational &m) |
| sets minimum Markowitz threshold. More...
|
|
Rational | markowitz () |
| returns Markowitz threshold. More...
|
|
|
See documentation of SLinSolverRational for a documentation of these methods.
|
void | clear () |
|
int | dim () const |
|
int | memory () const |
|
const char * | getName () const |
|
Status | status () const |
|
Rational | stability () const |
|
std::string | statistics () const |
|
Status | load (const SVectorRational *vec[], int dim) |
|
|
void | solveRight (VectorRational &x, const VectorRational &b) |
| Solves . More...
|
|
void | solveRight (SSVectorRational &x, const SVectorRational &b) |
| Solves . More...
|
|
void | solveRight4update (SSVectorRational &x, const SVectorRational &b) |
| Solves . More...
|
|
void | solve2right4update (SSVectorRational &x, VectorRational &y, const SVectorRational &b, SSVectorRational &d) |
| Solves and . More...
|
|
void | solve3right4update (SSVectorRational &x, VectorRational &y, VectorRational &z, const SVectorRational &b, SSVectorRational &d, SSVectorRational &e) |
| Solves , and . More...
|
|
void | solveLeft (VectorRational &x, const VectorRational &b) |
| Solves . More...
|
|
void | solveLeft (SSVectorRational &x, const SVectorRational &b) |
| Solves . More...
|
|
void | solveLeft (SSVectorRational &x, VectorRational &y, const SVectorRational &b, SSVectorRational &d) |
| Solves and . More...
|
|
void | solveLeft (SSVectorRational &x, VectorRational &y, VectorRational &z, const SVectorRational &b, SSVectorRational &d, SSVectorRational &e) |
| Solves , and . More...
|
|
Status | change (int idx, const SVectorRational &subst, const SSVectorRational *eta=0) |
|
|
Real | getFactorTime () const |
| time spent in factorizations More...
|
|
void | setTimeLimit (const Real limit) |
| set time limit on factorization More...
|
|
void | resetFactorTime () |
| reset FactorTime More...
|
|
int | getFactorCount () const |
| number of factorizations performed More...
|
|
Real | getSolveTime () const |
| time spent in solves More...
|
|
void | resetSolveTime () |
| reset SolveTime More...
|
|
int | getSolveCount () const |
| number of solves performed More...
|
|
void | resetCounters () |
| reset timers and counters More...
|
|
void | dump () const |
| prints the LU factorization to stdout. More...
|
|
bool | isConsistent () const |
| consistency check. More...
|
|
|
| SLUFactorRational () |
| default constructor. More...
|
|
SLUFactorRational & | operator= (const SLUFactorRational &old) |
| assignment operator. More...
|
|
| SLUFactorRational (const SLUFactorRational &old) |
| copy constructor. More...
|
|
virtual | ~SLUFactorRational () |
| destructor. More...
|
|
virtual SLinSolverRational * | clone () const |
| clone function for polymorphism More...
|
|
| SLinSolverRational () |
| default constructor More...
|
|
virtual | ~SLinSolverRational () |
| destructor More...
|
|
|
|
void | freeAll () |
|
void | changeEta (int idx, SSVectorRational &eta) |
|
| CLUFactorRational () |
| default construtor. More...
|
|
void | solveLright (Rational *vec) |
|
int | solveRight4update (Rational *vec, int *nonz, Rational *rhs, Rational *forest, int *forestNum, int *forestIdx) |
|
void | solveRight (Rational *vec, Rational *rhs) |
|
int | solveRight2update (Rational *vec1, Rational *vec2, Rational *rhs1, Rational *rhs2, int *nonz, Rational *forest, int *forestNum, int *forestIdx) |
|
void | solveRight2 (Rational *vec1, Rational *vec2, Rational *rhs1, Rational *rhs2) |
|
void | solveLeft (Rational *vec, Rational *rhs) |
|
int | solveLeftEps (Rational *vec, Rational *rhs, int *nonz) |
|
int | solveLeft2 (Rational *vec1, int *nonz, Rational *vec2, Rational *rhs1, Rational *rhs2) |
|
int | vSolveRight4update (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *forest, int *forestNum, int *forestIdx) |
|
int | vSolveRight4update2 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2, Rational *forest, int *forestNum, int *forestIdx) |
|
int | vSolveRight4update3 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2, Rational *vec3, Rational *rhs3, int *ridx3, int rn3, Rational *forest, int *forestNum, int *forestIdx) |
|
void | vSolveRightNoNZ (Rational *vec2, Rational *rhs2, int *ridx2, int rn2) |
|
int | vSolveLeft (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn) |
|
void | vSolveLeftNoNZ (Rational *vec, Rational *rhs, int *ridx, int rn) |
|
int | vSolveLeft2 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2) |
|
int | vSolveLeft3 (Rational *vec, int *idx, Rational *rhs, int *ridx, int rn, Rational *vec2, Rational *rhs2, int *ridx2, int rn2, Rational *vec3, Rational *rhs3, int *ridx3, int rn3) |
|
void | forestUpdate (int col, Rational *work, int num, int *nonz) |
| Performs the Forrest-Tomlin update of the LU factorization. More...
|
|
void | update (int p_col, Rational *p_work, const int *p_idx, int num) |
|
void | updateNoClear (int p_col, const Rational *p_work, const int *p_idx, int num) |
|
void | factor (const SVectorRational **vec, const Rational &threshold) |
| pivoting threshold More...
|
|
void | dump () const |
|
bool | isConsistent () const |
|
Implementation of Sparse Linear Solver with Rational precision.
This class implements a SLinSolverRational interface by using the sparse LU factorization implemented in CLUFactorRational.
Definition at line 42 of file slufactor_rational.h.
default constructor.
Definition at line 697 of file slufactor_rational.cpp.
References SLUFactorRational::clear(), CLUFactorRational::U::col, CLUFactorRational::col, TimerFactory::createTimer(), CLUFactorRational::diag, VectorBase< R >::dim(), CLUFactorRational::U::Row::elem, CLUFactorRational::U::Col::elem, CLUFactorRational::factorCount, CLUFactorRational::factorTime, CLUFactorRational::L::firstUnused, CLUFactorRational::L::firstUpdate, SLUFactorRational::freeAll(), VectorBase< R >::get_ptr(), CLUFactorRational::Dring::idx, CLUFactorRational::U::Row::idx, CLUFactorRational::U::Col::idx, CLUFactorRational::L::idx, SLUFactorRational::isConsistent(), CLUFactorRational::l, CLUFactorRational::U::Row::len, CLUFactorRational::U::Col::len, CLUFactorRational::U::Row::list, CLUFactorRational::U::Col::list, CLUFactorRational::U::Row::max, CLUFactorRational::U::Col::max, CLUFactorRational::nzCnt, CLUFactorRational::Perm::orig, CLUFactorRational::Perm::perm, CLUFactorRational::L::rbeg, DVectorBase< R >::reDim(), CLUFactorRational::L::ridx, CLUFactorRational::L::rorig, CLUFactorRational::U::row, CLUFactorRational::L::row, CLUFactorRational::row, CLUFactorRational::L::rperm, CLUFactorRational::L::rval, CLUFactorRational::U::Col::size, SLUFactorRational::solveCount, SLUFactorRational::solveTime, soplex::spx_alloc(), CLUFactorRational::U::Row::start, CLUFactorRational::U::Col::start, CLUFactorRational::L::start, CLUFactorRational::L::startSize, CLUFactorRational::thedim, CLUFactorRational::timeLimit, SLUFactorRational::timerType, CLUFactorRational::u, CLUFactorRational::U::Row::used, CLUFactorRational::U::Col::used, CLUFactorRational::U::Row::val, CLUFactorRational::U::Col::val, CLUFactorRational::L::val, SLUFactorRational::vec, and CLUFactorRational::work.
Referenced by SLUFactorRational::clone(), and SLUFactorRational::resetCounters().
copy constructor.
Definition at line 823 of file slufactor_rational.cpp.
References SLUFactorRational::assign(), CLUFactorRational::U::col, CLUFactorRational::col, TimerFactory::createTimer(), CLUFactorRational::U::Row::elem, CLUFactorRational::U::Col::elem, CLUFactorRational::factorTime, SLUFactorRational::freeAll(), CLUFactorRational::U::Row::idx, CLUFactorRational::U::Col::idx, CLUFactorRational::L::idx, SLUFactorRational::isConsistent(), CLUFactorRational::l, CLUFactorRational::U::Row::len, CLUFactorRational::U::Col::len, CLUFactorRational::U::Row::max, CLUFactorRational::U::Col::max, CLUFactorRational::Perm::orig, CLUFactorRational::Perm::perm, CLUFactorRational::L::rbeg, CLUFactorRational::L::ridx, CLUFactorRational::L::rorig, CLUFactorRational::U::row, CLUFactorRational::L::row, CLUFactorRational::row, CLUFactorRational::L::rperm, SLUFactorRational::solveCount, SLUFactorRational::solveTime, CLUFactorRational::U::Row::start, CLUFactorRational::U::Col::start, CLUFactorRational::L::start, SLUFactorRational::timerType, and CLUFactorRational::u.
used to implement the assignment operator
assignment used to implement operator=() and copy constructor. If this is initialised, freeAll() has to be called before. Class objects from SLUFactorRational are not copied here.
Definition at line 492 of file slufactor_rational.cpp.
References CLUFactorRational::U::col, CLUFactorRational::col, CLUFactorRational::colMemMult, CLUFactorRational::diag, VectorBase< R >::dim(), CLUFactorRational::U::Row::elem, CLUFactorRational::U::Col::elem, CLUFactorRational::factorCount, CLUFactorRational::factorTime, CLUFactorRational::L::firstUnused, CLUFactorRational::L::firstUpdate, VectorBase< R >::get_ptr(), CLUFactorRational::Dring::idx, CLUFactorRational::U::Row::idx, CLUFactorRational::U::Col::idx, CLUFactorRational::L::idx, CLUFactorRational::initMaxabs, CLUFactorRational::l, SLUFactorRational::lastThreshold, CLUFactorRational::U::Row::len, CLUFactorRational::U::Col::len, CLUFactorRational::U::Row::list, CLUFactorRational::U::Col::list, CLUFactorRational::lMemMult, CLUFactorRational::U::Row::max, CLUFactorRational::U::Col::max, CLUFactorRational::maxabs, SLUFactorRational::minStability, SLUFactorRational::minThreshold, CLUFactorRational::Dring::next, CLUFactorRational::nzCnt, SLinSolverRational::OK, CLUFactorRational::Perm::orig, CLUFactorRational::Perm::perm, CLUFactorRational::Dring::prev, CLUFactorRational::L::rbeg, DVectorBase< R >::reDim(), CLUFactorRational::L::ridx, CLUFactorRational::L::rorig, CLUFactorRational::U::row, CLUFactorRational::L::row, CLUFactorRational::row, CLUFactorRational::rowMemMult, CLUFactorRational::L::rperm, CLUFactorRational::L::rval, CLUFactorRational::U::Col::size, soplex::spx_alloc(), CLUFactorRational::U::Row::start, CLUFactorRational::U::Col::start, CLUFactorRational::L::start, CLUFactorRational::L::startSize, CLUFactorRational::stat, CLUFactorRational::thedim, CLUFactorRational::timeLimit, CLUFactorRational::u, CLUFactorRational::L::updateType, SLUFactorRational::uptype, CLUFactorRational::U::Row::used, CLUFactorRational::U::Col::used, CLUFactorRational::U::Row::val, CLUFactorRational::U::Col::val, CLUFactorRational::L::val, SLUFactorRational::vec, and CLUFactorRational::work.
Referenced by SLUFactorRational::clone(), SLUFactorRational::operator=(), and SLUFactorRational::SLUFactorRational().
Implements SLinSolverRational.
Definition at line 358 of file slufactor_rational.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SLUFactorRational::changeEta(), SSVectorBase< R >::clear(), SLUFactorRational::ETA, SLUFactorRational::eta, SSVectorBase< R >::forceSetup(), SLUFactorRational::forest, SLUFactorRational::FOREST_TOMLIN, CLUFactorRational::forestUpdate(), VectorBase< R >::get_ptr(), SSVectorBase< R >::indexMem(), CLUFactorRational::l, MSG_DEBUG, SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), CLUFactorRational::solveLright(), CLUFactorRational::solveRight(), SLUFactorRational::stability(), SLUFactorRational::status(), CLUFactorRational::updateNoClear(), CLUFactorRational::L::updateType, SLUFactorRational::uptype, SLUFactorRational::usetup, SSVectorBase< R >::values(), and SLUFactorRational::vec.
Referenced by SLUFactorRational::status().
Implements SLinSolverRational.
Definition at line 421 of file slufactor_rational.cpp.
References VectorBase< R >::clear(), SSVectorBase< R >::clear(), CLUFactorRational::U::col, CLUFactorRational::colMemMult, VectorBase< R >::dim(), SLUFactorRational::eta, CLUFactorRational::L::firstUnused, CLUFactorRational::L::firstUpdate, SLUFactorRational::forest, SLUFactorRational::freeAll(), CLUFactorRational::U::Row::idx, CLUFactorRational::U::Col::idx, CLUFactorRational::L::idx, CLUFactorRational::initMaxabs, CLUFactorRational::l, SLUFactorRational::lastThreshold, CLUFactorRational::lMemMult, CLUFactorRational::maxabs, MINSTABILITY, SLUFactorRational::minStability, SLUFactorRational::minThreshold, CLUFactorRational::L::rbeg, DVectorBase< R >::reDim(), CLUFactorRational::L::ridx, CLUFactorRational::L::rorig, CLUFactorRational::U::row, CLUFactorRational::L::row, CLUFactorRational::rowMemMult, CLUFactorRational::L::rperm, CLUFactorRational::L::rval, CLUFactorRational::U::Col::size, soplex::spx_alloc(), soplex::spx_free(), SLUFactorRational::ssvec, CLUFactorRational::L::start, CLUFactorRational::L::startSize, CLUFactorRational::stat, CLUFactorRational::thedim, CLUFactorRational::u, SLinSolverRational::UNLOADED, SLUFactorRational::usetup, CLUFactorRational::U::Row::val, CLUFactorRational::L::val, and SLUFactorRational::vec.
Referenced by SLUFactorRational::load(), SLUFactorRational::markowitz(), and SLUFactorRational::SLUFactorRational().
Definition at line 871 of file slufactor_rational.cpp.
References CLUFactorRational::U::col, CLUFactorRational::col, CLUFactorRational::diag, CLUFactorRational::U::Row::elem, CLUFactorRational::U::Col::elem, CLUFactorRational::factorTime, CLUFactorRational::U::Row::idx, CLUFactorRational::U::Col::idx, CLUFactorRational::L::idx, CLUFactorRational::l, CLUFactorRational::U::Row::len, CLUFactorRational::U::Col::len, CLUFactorRational::U::Row::max, CLUFactorRational::U::Col::max, CLUFactorRational::Perm::orig, CLUFactorRational::Perm::perm, CLUFactorRational::L::rbeg, DVectorBase< R >::reDim(), CLUFactorRational::L::ridx, CLUFactorRational::L::rorig, CLUFactorRational::U::row, CLUFactorRational::L::row, CLUFactorRational::row, CLUFactorRational::L::rperm, CLUFactorRational::L::rval, SLUFactorRational::solveTime, soplex::spx_free(), CLUFactorRational::U::Row::start, CLUFactorRational::U::Col::start, CLUFactorRational::L::start, CLUFactorRational::u, CLUFactorRational::U::Row::val, CLUFactorRational::U::Col::val, and CLUFactorRational::L::val.
Referenced by SLUFactorRational::clear(), SLUFactorRational::operator=(), SLUFactorRational::SLUFactorRational(), and SLUFactorRational::~SLUFactorRational().
int getFactorCount |
( |
| ) |
const |
|
virtual |
Real getFactorTime |
( |
| ) |
const |
const char* getName |
( |
| ) |
const |
|
virtual |
int getSolveCount |
( |
| ) |
const |
Real getSolveTime |
( |
| ) |
const |
bool isConsistent |
( |
| ) |
const |
|
virtual |
Implements SLinSolverRational.
Definition at line 928 of file slufactor_rational.cpp.
References soplex::betterThreshold(), SLUFactorRational::clear(), CLUFactorRational::U::col, CLUFactorRational::col, CLUFactorRational::diag, SLUFactorRational::dim(), SLUFactorRational::dump(), CLUFactorRational::U::Row::elem, CLUFactorRational::U::Col::elem, SLUFactorRational::eta, CLUFactorRational::factor(), CLUFactorRational::L::firstUnused, CLUFactorRational::L::firstUpdate, SLUFactorRational::forest, VectorBase< R >::get_ptr(), CLUFactorRational::Dring::idx, initDR, SLUFactorRational::isConsistent(), CLUFactorRational::l, SLUFactorRational::lastThreshold, CLUFactorRational::U::Row::len, CLUFactorRational::U::Col::len, CLUFactorRational::U::Row::list, CLUFactorRational::U::Col::list, CLUFactorRational::U::Row::max, CLUFactorRational::U::Col::max, MAXUPDATES, MINSTABILITY, SLUFactorRational::minStability, SLUFactorRational::minThreshold, MSG_DEBUG, SLinSolverRational::OK, CLUFactorRational::Perm::orig, CLUFactorRational::Perm::perm, soplex::rationalToString(), DVectorBase< R >::reDim(), SSVectorBase< R >::reDim(), CLUFactorRational::U::row, CLUFactorRational::L::row, CLUFactorRational::row, SVectorBase< R >::size(), soplex::spx_realloc(), SLUFactorRational::ssvec, SLUFactorRational::stability(), CLUFactorRational::U::Row::start, CLUFactorRational::U::Col::start, CLUFactorRational::L::start, CLUFactorRational::L::startSize, CLUFactorRational::stat, CLUFactorRational::thedim, CLUFactorRational::u, CLUFactorRational::L::updateType, SLUFactorRational::uptype, SLUFactorRational::usetup, SLUFactorRational::vec, and CLUFactorRational::work.
Referenced by SoPlex::_factorizeColumnRational(), and SLUFactorRational::status().
void setTimeLimit |
( |
const Real |
limit | ) |
|
sets update type.
The new UpdateType becomes valid only after the next call to method load().
Definition at line 121 of file slufactor_rational.h.
Solves and .
Implements SLinSolverRational.
Definition at line 105 of file slufactor_rational.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), VectorBase< R >::clear(), SSVectorBase< R >::clear(), SLUFactorRational::ETA, SLUFactorRational::eta, SSVectorBase< R >::forceSetup(), SLUFactorRational::forest, SSVectorBase< R >::get_ptr(), VectorBase< R >::get_ptr(), CLUFactorRational::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactorRational::solveCount, SLUFactorRational::solveTime, SLUFactorRational::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactorRational::L::updateType, SLUFactorRational::usetup, and CLUFactorRational::vSolveRight4update2().
Referenced by SLUFactorRational::status().
Solves , and .
Implements SLinSolverRational.
Definition at line 154 of file slufactor_rational.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), VectorBase< R >::clear(), SSVectorBase< R >::clear(), SLUFactorRational::ETA, SLUFactorRational::eta, SSVectorBase< R >::forceSetup(), SLUFactorRational::forest, SSVectorBase< R >::get_ptr(), VectorBase< R >::get_ptr(), CLUFactorRational::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactorRational::solveCount, SLUFactorRational::solveTime, SLUFactorRational::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactorRational::L::updateType, SLUFactorRational::usetup, and CLUFactorRational::vSolveRight4update3().
Referenced by SLUFactorRational::status().
Solves .
Implements SLinSolverRational.
Definition at line 223 of file slufactor_rational.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::assign(), SSVectorBase< R >::clear(), SSVectorBase< R >::forceSetup(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactorRational::solveCount, SLUFactorRational::solveTime, SLUFactorRational::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), and CLUFactorRational::vSolveLeft().
Solves and .
Implements SLinSolverRational.
Definition at line 250 of file slufactor_rational.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::assign(), VectorBase< R >::clear(), SSVectorBase< R >::clear(), SSVectorBase< R >::forceSetup(), VectorBase< R >::get_ptr(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactorRational::solveCount, SLUFactorRational::solveTime, SLUFactorRational::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), and CLUFactorRational::vSolveLeft2().
Solves , and .
Implements SLinSolverRational.
Definition at line 288 of file slufactor_rational.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::assign(), VectorBase< R >::clear(), SSVectorBase< R >::clear(), SSVectorBase< R >::forceSetup(), VectorBase< R >::get_ptr(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactorRational::solveCount, SLUFactorRational::solveTime, SLUFactorRational::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), and CLUFactorRational::vSolveLeft3().
Solves .
Implements SLinSolverRational.
Definition at line 67 of file slufactor_rational.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::clear(), SLUFactorRational::ETA, SLUFactorRational::eta, SSVectorBase< R >::forceSetup(), SLUFactorRational::forest, CLUFactorRational::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactorRational::solveCount, SLUFactorRational::solveTime, SLUFactorRational::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactorRational::L::updateType, SLUFactorRational::usetup, and CLUFactorRational::vSolveRight4update().
Referenced by SLUFactorRational::status().
std::string statistics |
( |
| ) |
const |
|
virtual |
Implements SLinSolverRational.
Definition at line 177 of file slufactor_rational.h.
References SLUFactorRational::change(), SLUFactorRational::dim(), SLUFactorRational::load(), SLUFactorRational::solve2right4update(), SLUFactorRational::solve3right4update(), SLUFactorRational::solveLeft(), SLUFactorRational::solveRight(), SLUFactorRational::solveRight4update(), SLUFactorRational::stability(), CLUFactorRational::stat, and SLUFactorRational::statistics().
Referenced by SoPlex::_factorizeColumnRational(), SLUFactorRational::change(), and SLUFactorRational::stability().
|