CoinUtils trunk
Public Member Functions | Protected Member Functions | Friends
CoinDenseFactorization Class Reference

This deals with Factorization and Updates This is a simple dense version so other people can write a better one. More...

#include <CoinDenseFactorization.hpp>

Inheritance diagram for CoinDenseFactorization:
Collaboration diagram for CoinDenseFactorization:

List of all members.

Public Member Functions

void gutsOfDestructor ()
 The real work of desstructor.
void gutsOfInitialize ()
 The real work of constructor.
void gutsOfCopy (const CoinDenseFactorization &other)
 The real work of copy.
Constructors and destructor and copy
 CoinDenseFactorization ()
 Default constructor.
 CoinDenseFactorization (const CoinDenseFactorization &other)
 Copy constructor.
virtual ~CoinDenseFactorization ()
 Destructor.
CoinDenseFactorizationoperator= (const CoinDenseFactorization &other)
 = copy
virtual CoinOtherFactorizationclone () const
 Clone.
Do factorization - public
virtual void getAreas (int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
 Gets space for a factorization.
virtual void preProcess ()
 PreProcesses column ordered copy of basis.
virtual int factor ()
 Does most of factorization returning status 0 - OK.
virtual void postProcess (const int *sequence, int *pivotVariable)
 Does post processing on valid factorization - putting variables on correct rows.
virtual void makeNonSingular (int *sequence, int numberColumns)
 Makes a non-singular basis by replacing variables.
general stuff such as number of elements
virtual int numberElements () const
 Total number of elements in factorization.
double maximumCoefficient () const
 Returns maximum absolute value in factorization.
rank one updates which do exist
virtual int replaceColumn (CoinIndexedVector *regionSparse, int pivotRow, double pivotCheck, bool checkBeforeModifying=false, double acceptablePivot=1.0e-8)
 Replaces one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room If checkBeforeModifying is true will do all accuracy checks before modifying factorization.
various uses of factorization (return code number elements)

which user may want to know about

virtual int updateColumnFT (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool=false)
 Updates one column (FTRAN) from regionSparse2 Tries to do FT update number returned is negative if no room regionSparse starts as zero and is zero at end.
virtual int updateColumn (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, bool noPermute=false) const
 This version has same effect as above with FTUpdate==false so number returned is always >=0.
virtual int updateTwoColumnsFT (CoinIndexedVector *regionSparse1, CoinIndexedVector *regionSparse2, CoinIndexedVector *regionSparse3, bool noPermute=false)
 does FTRAN on two columns
virtual int updateColumnTranspose (CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2) const
 Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - if regionSparse2 packed on input - will be packed on output.
various uses of factorization

*** Below this user may not want to know about

which user may not want to know about (left over from my LP code)

void clearArrays ()
 Get rid of all memory.
virtual int * indices () const
 Returns array to put basis indices in.
virtual int * permute () const
 Returns permute in.

Protected Member Functions

int checkPivot (double saveFromU, double oldPivot) const
 Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.

Friends

void CoinDenseFactorizationUnitTest (const std::string &mpsDir)

Detailed Description

This deals with Factorization and Updates This is a simple dense version so other people can write a better one.

I am assuming that 32 bits is enough for number of rows or columns, but CoinBigIndex may be redefined to get 64 bits.

Definition at line 282 of file CoinDenseFactorization.hpp.


Constructor & Destructor Documentation

CoinDenseFactorization::CoinDenseFactorization ( )

Default constructor.

CoinDenseFactorization::CoinDenseFactorization ( const CoinDenseFactorization other)

Copy constructor.

virtual CoinDenseFactorization::~CoinDenseFactorization ( ) [virtual]

Destructor.


Member Function Documentation

CoinDenseFactorization& CoinDenseFactorization::operator= ( const CoinDenseFactorization other)

= copy

virtual CoinOtherFactorization* CoinDenseFactorization::clone ( ) const [virtual]

Clone.

Implements CoinOtherFactorization.

virtual void CoinDenseFactorization::getAreas ( int  numberRows,
int  numberColumns,
CoinBigIndex  maximumL,
CoinBigIndex  maximumU 
) [virtual]

Gets space for a factorization.

Implements CoinOtherFactorization.

virtual void CoinDenseFactorization::preProcess ( ) [virtual]

PreProcesses column ordered copy of basis.

Implements CoinOtherFactorization.

virtual int CoinDenseFactorization::factor ( ) [virtual]

Does most of factorization returning status 0 - OK.

-99 - needs more memory -1 - singular - use numberGoodColumns and redo

Implements CoinOtherFactorization.

virtual void CoinDenseFactorization::postProcess ( const int *  sequence,
int *  pivotVariable 
) [virtual]

Does post processing on valid factorization - putting variables on correct rows.

Implements CoinOtherFactorization.

virtual void CoinDenseFactorization::makeNonSingular ( int *  sequence,
int  numberColumns 
) [virtual]

Makes a non-singular basis by replacing variables.

Implements CoinOtherFactorization.

virtual int CoinDenseFactorization::numberElements ( ) const [inline, virtual]

Total number of elements in factorization.

Implements CoinOtherFactorization.

Definition at line 327 of file CoinDenseFactorization.hpp.

double CoinDenseFactorization::maximumCoefficient ( ) const

Returns maximum absolute value in factorization.

virtual int CoinDenseFactorization::replaceColumn ( CoinIndexedVector regionSparse,
int  pivotRow,
double  pivotCheck,
bool  checkBeforeModifying = false,
double  acceptablePivot = 1.0e-8 
) [virtual]

Replaces one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room If checkBeforeModifying is true will do all accuracy checks before modifying factorization.

Whether to set this depends on speed considerations. You could just do this on first iteration after factorization and thereafter re-factorize partial update already in U

Implements CoinOtherFactorization.

virtual int CoinDenseFactorization::updateColumnFT ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2,
bool  = false 
) [inline, virtual]

Updates one column (FTRAN) from regionSparse2 Tries to do FT update number returned is negative if no room regionSparse starts as zero and is zero at end.

Note - if regionSparse2 packed on input - will be packed on output

Implements CoinOtherFactorization.

Definition at line 360 of file CoinDenseFactorization.hpp.

virtual int CoinDenseFactorization::updateColumn ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2,
bool  noPermute = false 
) const [virtual]

This version has same effect as above with FTUpdate==false so number returned is always >=0.

Implements CoinOtherFactorization.

virtual int CoinDenseFactorization::updateTwoColumnsFT ( CoinIndexedVector regionSparse1,
CoinIndexedVector regionSparse2,
CoinIndexedVector regionSparse3,
bool  noPermute = false 
) [virtual]

does FTRAN on two columns

Implements CoinOtherFactorization.

virtual int CoinDenseFactorization::updateColumnTranspose ( CoinIndexedVector regionSparse,
CoinIndexedVector regionSparse2 
) const [virtual]

Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - if regionSparse2 packed on input - will be packed on output.

Implements CoinOtherFactorization.

void CoinDenseFactorization::clearArrays ( ) [inline, virtual]

Get rid of all memory.

Reimplemented from CoinOtherFactorization.

Definition at line 387 of file CoinDenseFactorization.hpp.

virtual int* CoinDenseFactorization::indices ( ) const [inline, virtual]

Returns array to put basis indices in.

Implements CoinOtherFactorization.

Definition at line 390 of file CoinDenseFactorization.hpp.

virtual int* CoinDenseFactorization::permute ( ) const [inline, virtual]

Returns permute in.

Implements CoinOtherFactorization.

Definition at line 393 of file CoinDenseFactorization.hpp.

void CoinDenseFactorization::gutsOfDestructor ( )

The real work of desstructor.

void CoinDenseFactorization::gutsOfInitialize ( )

The real work of constructor.

void CoinDenseFactorization::gutsOfCopy ( const CoinDenseFactorization other)

The real work of copy.

int CoinDenseFactorization::checkPivot ( double  saveFromU,
double  oldPivot 
) const [protected]

Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.


Friends And Related Function Documentation

void CoinDenseFactorizationUnitTest ( const std::string &  mpsDir) [friend]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines