|  | 
               
 
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 |  |