Scippy

SoPlex

Sequential object-oriented simPlex

SLUFactorRational Class Reference

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>

Inheritance diagram for SLUFactorRational:

Public Types

Types
enum  UpdateType { ETA = 0, FOREST_TOMLIN }
 Specifies how to perform change method. More...
 
typedef SLinSolverRational::Status Status
 for convenience
 
- Public Types inherited from SLinSolverRational
enum  Status {
  OK = 0, INSTABLE = 1, SINGULAR = 2, UNLOADED = 4,
  ERROR = 8, TIME = 16
}
 status flags of the SLinSolverRational class. More...
 

Public Member Functions

Update type
UpdateType utype () const
 returns the current update type uptype.
 
void setUtype (UpdateType tp)
 sets update type.
 
void setMarkowitz (const Rational &m)
 sets minimum Markowitz threshold.
 
Rational markowitz ()
 returns Markowitz threshold.
 
Derived from SLinSolverRational

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)
 
Solve
void solveRight (VectorRational &x, const VectorRational &b)
 Solves $Ax=b$.
 
void solveRight (SSVectorRational &x, const SVectorRational &b)
 Solves $Ax=b$.
 
void solveRight4update (SSVectorRational &x, const SVectorRational &b)
 Solves $Ax=b$.
 
void solve2right4update (SSVectorRational &x, VectorRational &y, const SVectorRational &b, SSVectorRational &d)
 Solves $Ax=b$ and $Ay=d$.
 
void solve3right4update (SSVectorRational &x, VectorRational &y, VectorRational &z, const SVectorRational &b, SSVectorRational &d, SSVectorRational &e)
 Solves $Ax=b$, $Ay=d$ and $Az=e$.
 
void solveLeft (VectorRational &x, const VectorRational &b)
 Solves $Ax=b$.
 
void solveLeft (SSVectorRational &x, const SVectorRational &b)
 Solves $Ax=b$.
 
void solveLeft (SSVectorRational &x, VectorRational &y, const SVectorRational &b, SSVectorRational &d)
 Solves $Ax=b$ and $Ay=d$.
 
void solveLeft (SSVectorRational &x, VectorRational &y, VectorRational &z, const SVectorRational &b, SSVectorRational &d, SSVectorRational &e)
 Solves $Ax=b$, $Ay=d$ and $Az=e$.
 
Status change (int idx, const SVectorRational &subst, const SSVectorRational *eta=0)
 
Miscellaneous
Real getFactorTime () const
 time spent in factorizations
 
void setTimeLimit (const Real limit)
 set time limit on factorization
 
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.
 
Constructors / Destructors
 SLUFactorRational ()
 default constructor.
 
SLUFactorRationaloperator= (const SLUFactorRational &old)
 assignment operator.
 
 SLUFactorRational (const SLUFactorRational &old)
 copy constructor.
 
virtual ~SLUFactorRational ()
 destructor.
 
virtual SLinSolverRationalclone () const
 clone function for polymorphism
 
- Public Member Functions inherited from SLinSolverRational
 SLinSolverRational ()
 default constructor
 
virtual ~SLinSolverRational ()
 destructor
 

Protected Member Functions

Protected helpers
void freeAll ()
 
void changeEta (int idx, SSVectorRational &eta)
 

Protected Attributes

Protected data
bool usetup
 TRUE iff update vector has been setup.
 
UpdateType uptype
 the current UpdateType.
 
SSVectorRational eta
 
SSVectorRational forest
 ? Update vector set up by solveRight4update() and solve2right4update()
 
Rational lastThreshold
 pivoting threshold of last factorization
 
Control Parameters
Rational minThreshold
 minimum threshold to use.
 
Rational minStability
 minimum stability to achieve by setting threshold.
 
TimersolveTime
 Time spent in solves.
 
Timer::TYPE timerType
 
int solveCount
 Number of solves.
 

Private Member Functions

Private helpers
void assign (const SLUFactorRational &old)
 used to implement the assignment operator
 

Private Attributes

Private data
DVectorRational vec
 Temporary vector.
 
SSVectorRational ssvec
 Temporary semi-sparse vector.
 

Detailed Description

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.

Member Typedef Documentation

for convenience

Definition at line 56 of file slufactor_rational.h.

Member Enumeration Documentation

enum UpdateType

Specifies how to perform change method.

Enumerator
ETA 
FOREST_TOMLIN 

Definition at line 50 of file slufactor_rational.h.

Constructor & Destructor Documentation

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().

~SLUFactorRational ( )
virtual

destructor.

Definition at line 907 of file slufactor_rational.cpp.

References SLUFactorRational::freeAll().

Member Function Documentation

void assign ( const SLUFactorRational old)
private

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::operator=(), and SLUFactorRational::SLUFactorRational().

virtual SLinSolverRational* clone ( ) const
virtual

clone function for polymorphism

Implements SLinSolverRational.

Definition at line 283 of file slufactor_rational.h.

References SLUFactorRational::SLUFactorRational().

int dim ( ) const
virtual

Implements SLinSolverRational.

Definition at line 162 of file slufactor_rational.h.

References CLUFactorRational::thedim.

Referenced by SLUFactorRational::load().

void dump ( ) const

prints the LU factorization to stdout.

Definition at line 1046 of file slufactor_rational.cpp.

References CLUFactorRational::dump().

Referenced by SLUFactorRational::load().

int getFactorCount ( ) const
virtual

number of factorizations performed

Implements SLinSolverRational.

Definition at line 237 of file slufactor_rational.h.

References CLUFactorRational::factorCount.

Referenced by SoPlex::_factorizeColumnRational(), and SLUFactorRational::statistics().

Real getFactorTime ( ) const

time spent in factorizations

Definition at line 222 of file slufactor_rational.h.

References CLUFactorRational::factorTime, and Timer::time().

Referenced by SoPlex::_factorizeColumnRational(), and SLUFactorRational::statistics().

const char* getName ( ) const
virtual

Implements SLinSolverRational.

Definition at line 172 of file slufactor_rational.h.

References SLUFactorRational::ETA, and SLUFactorRational::uptype.

int getSolveCount ( ) const

number of solves performed

Definition at line 252 of file slufactor_rational.h.

References SLUFactorRational::solveCount.

Referenced by SLUFactorRational::statistics().

Real getSolveTime ( ) const

time spent in solves

Definition at line 242 of file slufactor_rational.h.

References SLUFactorRational::solveTime, and Timer::time().

Referenced by SoPlex::_factorizeColumnRational(), and SLUFactorRational::statistics().

bool isConsistent ( ) const
virtual
SLUFactorRational::Status load ( const SVectorRational vec[],
int  dim 
)
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().

Rational markowitz ( )

returns Markowitz threshold.

Definition at line 147 of file slufactor_rational.h.

References SLUFactorRational::lastThreshold.

void resetFactorTime ( )

reset FactorTime

Definition at line 232 of file slufactor_rational.h.

References CLUFactorRational::factorTime, and Timer::reset().

void resetSolveTime ( )

reset SolveTime

Definition at line 247 of file slufactor_rational.h.

References Timer::reset(), and SLUFactorRational::solveTime.

void setMarkowitz ( const Rational m)

sets minimum Markowitz threshold.

Definition at line 127 of file slufactor_rational.h.

References SLUFactorRational::lastThreshold, and SLUFactorRational::minThreshold.

void setTimeLimit ( const Real  limit)

set time limit on factorization

Definition at line 227 of file slufactor_rational.h.

References CLUFactorRational::timeLimit.

Referenced by SoPlex::_factorizeColumnRational().

void setUtype ( UpdateType  tp)

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.

References SLUFactorRational::uptype.

UpdateType utype ( ) const

returns the current update type uptype.

Definition at line 112 of file slufactor_rational.h.

References SLUFactorRational::uptype.

Member Data Documentation

Rational lastThreshold
protected
Rational minStability
protected

minimum stability to achieve by setting threshold.

Definition at line 86 of file slufactor_rational.h.

Referenced by SLUFactorRational::assign(), SLUFactorRational::clear(), and SLUFactorRational::load().

Rational minThreshold
protected
Timer::TYPE timerType
protected

Definition at line 89 of file slufactor_rational.h.

Referenced by SLUFactorRational::SLUFactorRational().