|
Implementation of Sparse Linear Solver.This class implements a SLinSolver interface by using the sparse LU factorization implementet in CLUFactor.
More...
#include <slufactor.h>
|
|
UpdateType | utype () const |
| returns the current update type uptype.
|
|
void | setUtype (UpdateType tp) |
| sets update type.
|
|
void | setMarkowitz (Real m) |
| sets minimum Markowitz threshold.
|
|
Real | markowitz () |
| returns Markowitz threshold.
|
|
|
See documentation of SLinSolver for a documentation of these methods.
|
void | clear () |
|
int | dim () const |
|
int | memory () const |
|
const char * | getName () const |
|
Status | status () const |
|
Real | stability () const |
|
std::string | statistics () const |
|
Status | load (const SVector *vec[], int dim) |
|
|
void | solveRight (Vector &x, const Vector &b) |
| Solves .
|
|
void | solveRight (SSVector &x, const SVector &b) |
| Solves .
|
|
void | solveRight4update (SSVector &x, const SVector &b) |
| Solves .
|
|
void | solve2right4update (SSVector &x, Vector &y, const SVector &b, SSVector &d) |
| Solves and .
|
|
void | solve2right4update (SSVector &x, SSVector &y, const SVector &b, SSVector &d) |
| Sparse version of solving two systems of equations.
|
|
void | solve3right4update (SSVector &x, Vector &y, Vector &z, const SVector &b, SSVector &d, SSVector &e) |
| Solves , and .
|
|
void | solve3right4update (SSVector &x, SSVector &y, SSVector &z, const SVector &b, SSVector &d, SSVector &e) |
| sparse version of solving three systems of equations
|
|
void | solveLeft (Vector &x, const Vector &b) |
| sparse version of solving one system of equations with transposed basis matrix
|
|
void | solveLeft (SSVector &x, const SVector &b) |
| Solves .
|
|
void | solveLeft (SSVector &x, Vector &y, const SVector &b, SSVector &d) |
| Solves and .
|
|
void | solveLeft (SSVector &x, SSVector &two, const SVector &b, SSVector &rhs2) |
| sparse version of solving two systems of equations with transposed basis matrix
|
|
void | solveLeft (SSVector &x, Vector &y, Vector &z, const SVector &b, SSVector &d, SSVector &e) |
| Solves , and .
|
|
void | solveLeft (SSVector &x, SSVector &y, SSVector &z, const SVector &b, SSVector &d, SSVector &e) |
| sparse version of solving three systems of equations with transposed basis matrix
|
|
Status | change (int idx, const SVector &subst, const SSVector *eta=0) |
|
|
Real | getFactorTime () const |
| time spent in factorizations
|
|
void | resetFactorTime () |
| reset FactorTime
|
|
int | getFactorCount () const |
| number of factorizations performed
|
|
Real | getSolveTime () const |
| time spent in solves
|
|
void | resetSolveTime () |
| reset SolveTime
|
|
int | getSolveCount () const |
| number of solves performed
|
|
void | resetCounters () |
| reset timers and counters
|
|
void | dump () const |
| prints the LU factorization to stdout.
|
|
bool | isConsistent () const |
| consistency check.
|
|
|
| SLUFactor () |
| default constructor.
|
|
SLUFactor & | operator= (const SLUFactor &old) |
| assignment operator.
|
|
| SLUFactor (const SLUFactor &old) |
| copy constructor.
|
|
virtual | ~SLUFactor () |
| destructor.
|
|
virtual SLinSolver * | clone () const |
| clone function for polymorphism
|
|
| SLinSolver () |
| default constructor
|
|
virtual | ~SLinSolver () |
| destructor
|
|
|
|
void | assign (const SLUFactor &old) |
| used to implement the assignment operator
|
|
Implementation of Sparse Linear Solver.
This class implements a SLinSolver interface by using the sparse LU factorization implementet in CLUFactor.
Definition at line 41 of file slufactor.h.
Specifies how to perform change method.
Enumerator |
---|
ETA |
|
FOREST_TOMLIN |
|
Definition at line 49 of file slufactor.h.
default constructor.
Definition at line 975 of file slufactor.cpp.
References SLUFactor::clear(), CLUFactor::U::col, CLUFactor::col, TimerFactory::createTimer(), CLUFactor::diag, CLUFactor::U::Row::elem, CLUFactor::U::Col::elem, CLUFactor::factorCount, CLUFactor::factorTime, CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, SLUFactor::freeAll(), VectorBase< R >::get_ptr(), CLUFactor::Dring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, SLUFactor::isConsistent(), CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::list, CLUFactor::U::Col::list, CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::nzCnt, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::U::row, CLUFactor::L::row, CLUFactor::row, CLUFactor::L::rperm, CLUFactor::L::rval, CLUFactor::U::Row::size, CLUFactor::U::Col::size, CLUFactor::L::size, SLUFactor::solveCount, SLUFactor::solveTime, soplex::spx_alloc(), CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::L::start, CLUFactor::L::startSize, CLUFactor::thedim, SLUFactor::timerType, CLUFactor::u, CLUFactor::U::Row::used, CLUFactor::U::Col::used, CLUFactor::U::Row::val, CLUFactor::U::Col::val, CLUFactor::L::val, SLUFactor::vec, and CLUFactor::work.
Referenced by SLUFactor::clone().
copy constructor.
Definition at line 1111 of file slufactor.cpp.
References SLUFactor::assign(), CLUFactor::U::col, CLUFactor::col, TimerFactory::createTimer(), CLUFactor::diag, CLUFactor::U::Row::elem, CLUFactor::U::Col::elem, CLUFactor::factorTime, SLUFactor::freeAll(), CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, SLUFactor::isConsistent(), CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::U::row, CLUFactor::L::row, CLUFactor::row, CLUFactor::L::rperm, CLUFactor::L::rval, SLUFactor::solveCount, SLUFactor::solveTime, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::L::start, SLUFactor::timerType, CLUFactor::u, CLUFactor::U::Row::val, CLUFactor::U::Col::val, and CLUFactor::L::val.
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 SLUFactor are not copied here.
Definition at line 752 of file slufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::colMemMult, CLUFactor::diag, CLUFactor::U::Row::elem, CLUFactor::U::Col::elem, SLUFactor::epsilon, CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, VectorBase< R >::get_ptr(), CLUFactor::Dring::idx, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, CLUFactor::initMaxabs, CLUFactor::l, SLUFactor::lastThreshold, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::list, CLUFactor::U::Col::list, CLUFactor::lMemMult, CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::maxabs, SLUFactor::minStability, SLUFactor::minThreshold, CLUFactor::Dring::next, CLUFactor::nzCnt, SLinSolver::OK, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::Dring::prev, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::U::row, CLUFactor::L::row, CLUFactor::row, CLUFactor::rowMemMult, CLUFactor::L::rperm, CLUFactor::L::rval, CLUFactor::U::Row::size, CLUFactor::U::Col::size, CLUFactor::L::size, soplex::spx_alloc(), SLinSolver::spxout, CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::L::start, CLUFactor::L::startSize, CLUFactor::stat, CLUFactor::thedim, CLUFactor::u, CLUFactor::L::updateType, SLUFactor::uptype, CLUFactor::U::Row::used, CLUFactor::U::Col::used, CLUFactor::U::Row::val, CLUFactor::U::Col::val, CLUFactor::L::val, SLUFactor::vec, and CLUFactor::work.
Referenced by SLUFactor::operator=(), and SLUFactor::SLUFactor().
Implements SLinSolver.
Definition at line 610 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SLUFactor::changeEta(), SSVectorBase< R >::clear(), SLUFactor::ETA, SLUFactor::eta, SSVectorBase< R >::forceSetup(), SLUFactor::forest, SLUFactor::FOREST_TOMLIN, CLUFactor::forestUpdate(), VectorBase< R >::get_ptr(), SSVectorBase< R >::indexMem(), CLUFactor::l, MSG_DEBUG, SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), CLUFactor::solveLright(), CLUFactor::solveRight(), SLUFactor::stability(), SLUFactor::status(), CLUFactor::updateNoClear(), CLUFactor::L::updateType, SLUFactor::uptype, SLUFactor::usetup, SSVectorBase< R >::values(), and SLUFactor::vec.
void changeEta |
( |
int |
idx, |
|
|
SSVector & |
eta |
|
) |
| |
|
protected |
Implements SLinSolver.
Definition at line 673 of file slufactor.cpp.
References VectorBase< R >::clear(), SSVectorBase< R >::clear(), CLUFactor::U::col, CLUFactor::colMemMult, SLUFactor::epsilon, Param::epsilonFactorization(), SLUFactor::eta, CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, SLUFactor::forest, SLUFactor::freeAll(), CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, CLUFactor::initMaxabs, CLUFactor::l, SLUFactor::lastThreshold, CLUFactor::lMemMult, CLUFactor::maxabs, MINSTABILITY, SLUFactor::minStability, SLUFactor::minThreshold, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::U::row, CLUFactor::L::row, CLUFactor::rowMemMult, CLUFactor::L::rperm, CLUFactor::L::rval, CLUFactor::U::Row::size, CLUFactor::U::Col::size, CLUFactor::L::size, soplex::spx_alloc(), soplex::spx_free(), SLUFactor::ssvec, CLUFactor::L::start, CLUFactor::L::startSize, CLUFactor::stat, CLUFactor::thedim, CLUFactor::u, SLinSolver::UNLOADED, SLUFactor::usetup, CLUFactor::U::Row::val, CLUFactor::L::val, and SLUFactor::vec.
Referenced by SLUFactor::load(), and SLUFactor::SLUFactor().
Definition at line 1164 of file slufactor.cpp.
References CLUFactor::U::col, CLUFactor::col, CLUFactor::diag, CLUFactor::U::Row::elem, CLUFactor::U::Col::elem, CLUFactor::U::Row::idx, CLUFactor::U::Col::idx, CLUFactor::L::idx, CLUFactor::l, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::max, CLUFactor::U::Col::max, CLUFactor::Perm::orig, CLUFactor::Perm::perm, CLUFactor::L::rbeg, CLUFactor::L::ridx, CLUFactor::L::rorig, CLUFactor::U::row, CLUFactor::L::row, CLUFactor::row, CLUFactor::L::rperm, CLUFactor::L::rval, soplex::spx_free(), CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::L::start, CLUFactor::u, CLUFactor::U::Row::val, CLUFactor::U::Col::val, and CLUFactor::L::val.
Referenced by SLUFactor::clear(), SLUFactor::operator=(), SLUFactor::SLUFactor(), and SLUFactor::~SLUFactor().
int getFactorCount |
( |
| ) |
const |
|
virtual |
Real getFactorTime |
( |
| ) |
const |
const char* getName |
( |
| ) |
const |
|
virtual |
int getSolveCount |
( |
| ) |
const |
Real getSolveTime |
( |
| ) |
const |
bool isConsistent |
( |
| ) |
const |
|
virtual |
- Todo:
- if the factorization fails with stat = SINGULAR, distinuish between proven singularity (e.g., because of an empty column) and singularity due to numerics, that could be avoided by changing minStability and lastThreshold; in the first case, we want to abort, otherwise change the numerics
Implements SLinSolver.
Definition at line 1224 of file slufactor.cpp.
References soplex::betterThreshold(), SLUFactor::clear(), CLUFactor::U::col, CLUFactor::col, CLUFactor::diag, SLUFactor::dim(), SLUFactor::dump(), CLUFactor::U::Row::elem, CLUFactor::U::Col::elem, SLUFactor::epsilon, soplex::EQ(), SLUFactor::eta, CLUFactor::factor(), CLUFactor::L::firstUnused, CLUFactor::L::firstUpdate, SLUFactor::forest, VectorBase< R >::get_ptr(), CLUFactor::Dring::idx, initDR, SLUFactor::isConsistent(), CLUFactor::l, SLUFactor::lastThreshold, CLUFactor::U::Row::len, CLUFactor::U::Col::len, CLUFactor::U::Row::list, CLUFactor::U::Col::list, CLUFactor::U::Row::max, CLUFactor::U::Col::max, MAXUPDATES, MINSTABILITY, SLUFactor::minStability, SLUFactor::minThreshold, MSG_DEBUG, MSG_INFO3, SLinSolver::OK, CLUFactor::Perm::orig, CLUFactor::Perm::perm, DVectorBase< R >::reDim(), SSVectorBase< R >::reDim(), CLUFactor::U::row, CLUFactor::L::row, CLUFactor::row, SVectorBase< R >::size(), soplex::spx_realloc(), SLinSolver::spxout, SLUFactor::ssvec, SLUFactor::stability(), CLUFactor::U::Row::start, CLUFactor::U::Col::start, CLUFactor::L::start, CLUFactor::L::startSize, CLUFactor::stat, CLUFactor::thedim, CLUFactor::u, CLUFactor::L::updateType, SLUFactor::uptype, SLUFactor::usetup, SVectorBase< R >::value(), SLUFactor::vec, and CLUFactor::work.
void setMarkowitz |
( |
Real |
m | ) |
|
Solves and .
Implements SLinSolver.
Definition at line 106 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), VectorBase< R >::clear(), SSVectorBase< R >::clear(), SLUFactor::ETA, SLUFactor::eta, SSVectorBase< R >::forceSetup(), SLUFactor::forest, SSVectorBase< R >::get_ptr(), VectorBase< R >::get_ptr(), SSVectorBase< R >::getEpsilon(), CLUFactor::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactor::L::updateType, SLUFactor::usetup, and CLUFactor::vSolveRight4update2().
Sparse version of solving two systems of equations.
Implements SLinSolver.
Definition at line 161 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::clear(), SLUFactor::ETA, SLUFactor::eta, SSVectorBase< R >::forceSetup(), SLUFactor::forest, SSVectorBase< R >::get_ptr(), SSVectorBase< R >::getEpsilon(), CLUFactor::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactor::L::updateType, SLUFactor::usetup, and CLUFactor::vSolveRight4update2sparse().
Solves , and .
Implements SLinSolver.
Definition at line 223 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), VectorBase< R >::clear(), SSVectorBase< R >::clear(), SLUFactor::ETA, SLUFactor::eta, SSVectorBase< R >::forceSetup(), SLUFactor::forest, SSVectorBase< R >::get_ptr(), VectorBase< R >::get_ptr(), SSVectorBase< R >::getEpsilon(), CLUFactor::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactor::L::updateType, SLUFactor::usetup, and CLUFactor::vSolveRight4update3().
sparse version of solving three systems of equations
Implements SLinSolver.
Definition at line 287 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::clear(), SLUFactor::ETA, SLUFactor::eta, SSVectorBase< R >::forceSetup(), SLUFactor::forest, SSVectorBase< R >::get_ptr(), SSVectorBase< R >::getEpsilon(), CLUFactor::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactor::L::updateType, SLUFactor::usetup, and CLUFactor::vSolveRight4update3sparse().
Solves .
Implements SLinSolver.
Definition at line 377 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::assign(), SSVectorBase< R >::clear(), SSVectorBase< R >::forceSetup(), SSVectorBase< R >::getEpsilon(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), and CLUFactor::vSolveLeft().
Solves and .
Implements SLinSolver.
Definition at line 406 of file slufactor.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 >::getEpsilon(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), and CLUFactor::vSolveLeft2().
sparse version of solving two systems of equations with transposed basis matrix
Implements SLinSolver.
Definition at line 441 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::assign(), SSVectorBase< R >::clear(), SSVectorBase< R >::forceSetup(), SSVectorBase< R >::getEpsilon(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), CLUFactor::vSolveLeft2(), and CLUFactor::vSolveLeft2sparse().
Solves , and .
Implements SLinSolver.
Definition at line 491 of file slufactor.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 >::getEpsilon(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), and CLUFactor::vSolveLeft3().
sparse version of solving three systems of equations with transposed basis matrix
Implements SLinSolver.
Definition at line 530 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::assign(), SSVectorBase< R >::clear(), SSVectorBase< R >::forceSetup(), SSVectorBase< R >::getEpsilon(), SSVectorBase< R >::setSize(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), and CLUFactor::vSolveLeft3sparse().
Solves .
Implements SLinSolver.
Definition at line 66 of file slufactor.cpp.
References SSVectorBase< R >::altIndexMem(), SSVectorBase< R >::altValues(), SSVectorBase< R >::clear(), SLUFactor::ETA, SLUFactor::eta, SSVectorBase< R >::forceSetup(), SLUFactor::forest, SSVectorBase< R >::getEpsilon(), CLUFactor::l, SSVectorBase< R >::setSize(), SSVectorBase< R >::setup_and_assign(), SSVectorBase< R >::size(), SLUFactor::solveCount, SLUFactor::solveTime, SLUFactor::ssvec, Timer::start(), Timer::stop(), SSVectorBase< R >::unSetup(), CLUFactor::L::updateType, SLUFactor::usetup, and CLUFactor::vSolveRight4update().
std::string statistics |
( |
| ) |
const |
|
virtual |
|