41#define SOPLEX_MAXUPDATES 1000
171 return this->
nzCnt + this->
l.start[this->
l.firstUnused];
346#include "slufactor.hpp"
Implementation of sparse LU factorization.
const std::shared_ptr< Tolerances > tolerances() const
get tolerances
int factorCount
Number of factorizations.
std::shared_ptr< Tolerances > _tolerances
Tolerances for the factorization.
Timer * factorTime
Time spent in factorizations.
int hugeValues
number of times huge values occurred during solve (only used in debug mode)
SLinSolver< R >::Status stat
Status indicator.
int thedim
dimension of factorized matrix
int nzCnt
number of nonzeros in U
UpdateType
Specifies how to perform change method.
virtual ~SLUFactor()
destructor.
Timer * solveTime
Time spent in solves.
void changeEta(int idx, SSVectorBase< R > &eta)
void solveLeft(SSVectorBase< R > &x, SSVectorBase< R > &two, const SVectorBase< R > &b, SSVectorBase< R > &rhs2)
sparse version of solving two systems of equations with transposed basis matrix
R minStability
minimum stability to achieve by setting threshold.
Real getFactorTime() const
time spent in factorizations
bool isConsistent() const
consistency check.
void solve2right4update(SSVectorBase< R > &x, SSVectorBase< R > &y, const SVectorBase< R > &b, SSVectorBase< R > &d)
Sparse version of solving two systems of equations.
SLUFactor< R > & operator=(const SLUFactor< R > &old)
assignment operator.
void resetSolveTime()
reset SolveTime
void resetFactorTime()
reset FactorTime
UpdateType utype() const
returns the current update type uptype.
void solveLeft(SSVectorBase< R > &x, SSVectorBase< R > &y, SSVectorBase< R > &z, const SVectorBase< R > &b, SSVectorBase< R > &d, SSVectorBase< R > &e)
sparse version of solving three systems of equations with transposed basis matrix
SSVectorBase< R > forest
? Update VectorBase<R> set up by solveRight4update() and solve2right4update()
void setUtype(UpdateType tp)
sets update type.
void resetCounters()
reset timers and counters
UpdateType uptype
the current UpdateType.
void solveLeft(SSVectorBase< R > &x, const SSVectorBase< R > &b)
int solveCount
Number of solves.
Status change(int idx, const SVectorBase< R > &subst, const SSVectorBase< R > *eta=0)
const char * getName() const
void solveLeft(SSVectorBase< R > &x, const SVectorBase< R > &b)
Solves .
bool usetup
TRUE iff update vector has been setup.
R minThreshold
minimum threshold to use.
void solve2right4update(SSVectorBase< R > &x, VectorBase< R > &y, const SVectorBase< R > &b, SSVectorBase< R > &d)
Solves and .
virtual SLinSolver< R > * clone() const
clone function for polymorphism
void setMarkowitz(R m)
sets minimum Markowitz threshold.
void solveRight(SSVectorBase< R > &x, const SSVectorBase< R > &b)
void solveLeft(SSVectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &z, const SVectorBase< R > &b, SSVectorBase< R > &d, SSVectorBase< R > &e)
Solves , and .
void assign(const SLUFactor< R > &old)
used to implement the assignment operator
void solveRight4update(SSVectorBase< R > &x, const SVectorBase< R > &b)
Solves .
typename SLinSolver< R >::Status Status
for convenience
void solveRight(VectorBase< R > &x, const VectorBase< R > &b)
Solves .
SLUFactor()
default constructor.
virtual void setTolerances(std::shared_ptr< Tolerances > tolerances)
set tolerances
SSVectorBase< R > ssvec
Temporary semi-sparse VectorBase<R>
SLUFactor(const SLUFactor< R > &old)
copy constructor.
int getSolveCount() const
number of solves performed
void solveLeft(VectorBase< R > &x, const VectorBase< R > &b)
sparse version of solving one system of equations with transposed basis matrix
int getFactorCount() const
number of factorizations performed
R lastThreshold
pivoting threshold of last factorization
void solveLeft(SSVectorBase< R > &x, VectorBase< R > &y, const SVectorBase< R > &b, SSVectorBase< R > &d)
Solves and .
std::string statistics() const
void changeTimer(const Timer::TYPE ttype)
void solve3right4update(SSVectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &z, const SVectorBase< R > &b, SSVectorBase< R > &d, SSVectorBase< R > &e)
Solves , and .
void solve3right4update(SSVectorBase< R > &x, SSVectorBase< R > &y, SSVectorBase< R > &z, const SVectorBase< R > &b, SSVectorBase< R > &d, SSVectorBase< R > &e)
sparse version of solving three systems of equations
Real getSolveTime() const
time spent in solves
VectorBase< R > vec
Temporary VectorBase<R>
R matrixMetric(int type=0) const
void dump() const
prints the LU factorization to stdout.
Status load(const SVectorBase< R > *vec[], int dim)
void solveRight(SSVectorBase< R > &x, const SVectorBase< R > &b)
Solves .
R markowitz()
returns Markowitz threshold.
Status
status flags of the SLinSolver class.
SLinSolver()
default constructor
virtual void setTolerances(std::shared_ptr< Tolerances > newTolerances)
set the _tolerances member variable
void unSetup()
Makes SSVectorBase not setup.
static Timer * switchTimer(Timer *timer, Timer::TYPE ttype)
Wrapper for the system time query methods.
Implementation of sparse LU factorization.
Everything should be within this namespace.
Sparse Linear Solver virtual base class.
Debugging, floating point type and parameter definitions.