Loading...
Searching...
No Matches
CoinAbcBaseFactorization.hpp
Go to the documentation of this file.
/* $Id$ */
// Copyright (C) 2002, International Business Machines
// Corporation and others, Copyright (C) 2012, FasterCoin. All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).
/*
Authors
John Forrest
*/
#include "AbcCommon.hpp"
#include "CoinAbcHelperFunctions.hpp"
#if ABC_PARALLEL
#define FACTOR_CPU 4
#else
#define FACTOR_CPU 1
#endif
#define LARGE_SET COIN_INT_MAX - 10
#define LARGE_UNSET (LARGE_SET + 1)
class CoinAbcTypeFactorization : public CoinAbcAnyFactorization {
friend void CoinAbcFactorizationUnitTest(const std::string &mpsDir);
public:
CoinAbcTypeFactorization();
CoinAbcTypeFactorization(const CoinAbcTypeFactorization &other);
CoinAbcTypeFactorization(const CoinFactorization &other);
virtual ~CoinAbcTypeFactorization();
virtual CoinAbcAnyFactorization *clone() const;
void almostDestructor();
void show_self() const;
void sort() const;
CoinAbcTypeFactorization &operator=(const CoinAbcTypeFactorization &other);
CoinSimplexDouble conditionNumber() const;
inline CoinSimplexInt *permute() const
{
return NULL; //permute_.array();
}
virtual inline CoinSimplexInt *indices() const
{
return indexRowU_.array();
}
virtual inline CoinSimplexInt *pivotColumn() const
{
return pivotColumn_.array();
}
virtual inline CoinFactorizationDouble *pivotRegion() const
{
return pivotRegionAddress_;
}
#if ABC_SMALL < 2
inline CoinBigIndex *startRowL() const
{
return startRowL_.array();
}
#endif
inline CoinBigIndex *startColumnL() const
{
return startColumnL_.array();
}
#if ABC_SMALL < 2
inline CoinSimplexInt *indexColumnL() const
{
return indexColumnL_.array();
}
#endif
inline CoinSimplexInt *indexRowL() const
{
return indexRowL_.array();
}
#if ABC_SMALL < 2
inline CoinFactorizationDouble *elementByRowL() const
{
return elementByRowL_.array();
}
#endif
inline CoinSimplexInt *pivotLinkedBackwards() const
{
return firstCount_.array() + numberRows_ + 1;
}
inline CoinSimplexInt *pivotLinkedForwards() const
{
return firstCount_.array() + 2 * numberRows_ + 3;
}
inline CoinSimplexInt *pivotLOrder() const
{
return firstCount_.array();
}
#if ABC_SMALL < 0
#define ABC_USE_FUNCTION_POINTERS 0
#define SMALL_PERMUTE
#endif
#ifdef ABC_USE_FUNCTION_POINTERS
typedef void (*scatterUpdate)(int, CoinFactorizationDouble, const CoinFactorizationDouble *, CoinFactorizationDouble *);
#if ABC_USE_FUNCTION_POINTERS
typedef struct {
scatterUpdate functionPointer;
CoinBigIndex offset;
int number;
} scatterStruct;
#else
typedef struct {
CoinBigIndex offset;
int number;
} scatterStruct;
#endif
inline scatterStruct *scatterUColumn() const
{
return scatterPointersUColumnAddress_;
}
#endif
inline CoinSimplexInt *firstCount() const
{
return firstCount_.array();
}
inline CoinSimplexInt *nextCount() const
{
return firstCount_.array() + numberRows_ + 2;
}
inline CoinSimplexInt *lastCount() const
{
return firstCount_.array() + 3 * numberRows_ + 2;
}
inline CoinSimplexInt numberRowsExtra() const
{
return numberRowsExtra_;
}
inline CoinBigIndex numberL() const
{
return numberL_;
}
inline CoinBigIndex baseL() const
{
return baseL_;
}
inline CoinSimplexInt maximumRowsExtra() const
{
return maximumRowsExtra_;
}
virtual inline CoinBigIndex numberElements() const
{
return totalElements_;
}
inline CoinSimplexInt numberForrestTomlin() const
{
return numberInColumn_.array()[numberRowsExtra_];
}
CoinSimplexDouble adjustedAreaFactor() const;
inline CoinSimplexInt messageLevel() const
{
return messageLevel_;
}
void messageLevel(CoinSimplexInt value);
virtual void maximumPivots(CoinSimplexInt value);
#if ABC_SMALL < 4
inline CoinSimplexInt denseThreshold() const
{
return denseThreshold_;
}
inline void setDenseThreshold(CoinSimplexInt value)
{
denseThreshold_ = value;
}
#endif
CoinSimplexDouble maximumCoefficient() const;
#if 0
inline bool forrestTomlin() const
{ return doForrestTomlin_;}
inline void setForrestTomlin(bool value)
{ doForrestTomlin_=value;}
#endif
inline bool spaceForForrestTomlin() const
{
CoinBigIndex start = lastEntryByColumnU_;
CoinBigIndex space = lengthAreaU_ - (start + numberRowsExtra_);
return (space >= 0); //&&doForrestTomlin_;
}
inline CoinBigIndex numberElementsU() const
{
return lengthU_;
}
inline void setNumberElementsU(CoinBigIndex value)
{
lengthU_ = value;
}
inline CoinBigIndex lengthAreaU() const
{
return lengthAreaU_;
}
inline CoinBigIndex numberElementsL() const
{
return lengthL_;
}
inline CoinBigIndex lengthAreaL() const
{
return lengthAreaL_;
}
inline CoinBigIndex numberElementsR() const
{
return lengthR_;
}
inline CoinBigIndex numberCompressions() const
{
return numberCompressions_;
}
//virtual CoinSimplexInt * pivotRow() const;
//virtual CoinFactorizationDouble * workArea() const;
//virtual CoinSimplexInt * intWorkArea() const;
virtual inline CoinBigIndex *starts() const
{
return startColumnU_.array();
}
virtual inline CoinSimplexInt *numberInRow() const
{
return numberInRow_.array();
}
virtual inline CoinSimplexInt *numberInColumn() const
{
return numberInColumn_.array();
}
virtual inline CoinFactorizationDouble *elements() const
{
return elementU_.array();
}
inline CoinBigIndex *startColumnR() const
{
return reinterpret_cast< CoinBigIndex * >(firstCount_.array() + 3 * numberRows_ + 4);
}
inline CoinFactorizationDouble *elementU() const
{
return elementU_.array();
}
inline CoinSimplexInt *indexRowU() const
{
return indexRowU_.array();
}
inline CoinBigIndex *startColumnU() const
{
return startColumnU_.array();
}
#if COIN_BIG_DOUBLE == 1
void toLongArray(CoinIndexedVector *vector, int which) const;
void fromLongArray(CoinIndexedVector *vector) const;
void fromLongArray(int which) const;
long double *denseVector(CoinIndexedVector *vector) const;
long double *denseVector(CoinIndexedVector &vector) const;
const long double *denseVector(const CoinIndexedVector *vector) const;
const long double *denseVector(const CoinIndexedVector &vector) const;
void scan(CoinIndexedVector *vector) const;
void clearHiddenArrays();
#else
inline double *denseVector(CoinIndexedVector *vector) const
{
return vector->denseVector();
}
inline double *denseVector(CoinIndexedVector &vector) const
{
return vector.denseVector();
}
inline const double *denseVector(const CoinIndexedVector *vector) const
{
return vector->denseVector();
}
inline const double *denseVector(const CoinIndexedVector &vector) const
{
return vector.denseVector();
}
inline void toLongArray(CoinIndexedVector *vector, int which) const {}
inline void fromLongArray(CoinIndexedVector *vector) const {}
inline void fromLongArray(int which) const {}
inline void scan(CoinIndexedVector *vector) const
{
vector->scan(0, numberRows_, zeroTolerance_);
}
#endif
#ifdef ABC_ORDERED_FACTORIZATION
void permuteInForFtran(CoinIndexedVector &regionSparse, bool full = false) const;
void permuteInForBtranAndMultiply(CoinIndexedVector &regionSparse, bool full = false) const;
void permuteOutForBtran(CoinIndexedVector &regionSparse) const;
#endif
//inline CoinSimplexInt persistenceFlag() const
//{ return persistenceFlag_;}
#if 0
virtual int checkReplace ( const AbcSimplex * model,
CoinIndexedVector * regionSparse,
int pivotRow,
CoinSimplexDouble & pivotCheck,
double acceptablePivot = 1.0e-8);
virtual CoinSimplexInt replaceColumn ( CoinIndexedVector * regionSparse,
CoinSimplexInt pivotRow,
CoinSimplexDouble pivotCheck ,
bool skipBtranU=false,
CoinSimplexDouble acceptablePivot=1.0e-8);
#endif
virtual
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double
checkReplacePart1(CoinIndexedVector *regionSparse,
int pivotRow);
virtual
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double
checkReplacePart1(CoinIndexedVector *regionSparse,
CoinIndexedVector *partialUpdate,
int pivotRow);
#ifdef MOVE_REPLACE_PART1A
virtual void checkReplacePart1a(CoinIndexedVector *regionSparse,
int pivotRow);
virtual
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double
checkReplacePart1b(CoinIndexedVector *regionSparse,
int pivotRow);
#endif
virtual int checkReplacePart2(int pivotRow,
CoinSimplexDouble btranAlpha,
double ftranAlpha,
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double ftAlpha,
double acceptablePivot = 1.0e-8);
virtual void replaceColumnPart3(const AbcSimplex *model,
CoinIndexedVector *regionSparse,
CoinIndexedVector *tableauColumn,
int pivotRow,
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double alpha);
virtual void replaceColumnPart3(const AbcSimplex *model,
CoinIndexedVector *regionSparse,
CoinIndexedVector *tableauColumn,
CoinIndexedVector *partialUpdate,
int pivotRow,
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double alpha);
#ifdef EARLY_FACTORIZE
virtual int replaceColumns(const AbcSimplex *model,
CoinIndexedVector &stuff,
int firstPivot, int lastPivot, bool cleanUp);
#endif
void updatePartialUpdate(CoinIndexedVector &partialUpdate);
inline virtual bool wantsTableauColumn() const
{
return false;
}
int replaceColumnU(CoinIndexedVector *regionSparse,
CoinBigIndex *deletedPosition,
CoinSimplexInt *deletedColumns,
CoinSimplexInt pivotRow);
virtual CoinSimplexInt updateColumnFT(CoinIndexedVector &regionSparse);
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse);
virtual void updateColumnFTPart2(CoinIndexedVector &regionSparse);
virtual void updateColumnFT(CoinIndexedVector &regionSparseFT,
CoinIndexedVector &partialUpdate,
int which);
virtual CoinSimplexInt updateColumn(CoinIndexedVector &regionSparse) const;
virtual CoinSimplexInt updateTwoColumnsFT(CoinIndexedVector &regionFT,
CoinIndexedVector &regionOther);
virtual CoinSimplexInt updateColumnTranspose(CoinIndexedVector &regionSparse) const;
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const;
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const;
virtual void updateWeights(CoinIndexedVector &regionSparse) const;
virtual void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const;
virtual void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const;
void unpack(CoinIndexedVector *regionFrom,
CoinIndexedVector *regionTo) const;
void pack(CoinIndexedVector *regionFrom,
CoinIndexedVector *regionTo) const;
inline void goSparse() {}
void goSparse2();
#ifndef NDEBUG
virtual void checkMarkArrays() const;
#endif
#if ABC_SMALL < 2
inline CoinSimplexInt sparseThreshold() const
{
return sparseThreshold_;
}
#endif
void sparseThreshold(CoinSimplexInt value);
inline void clearArrays()
{
gutsOfDestructor();
}
void checkSparse();
void gutsOfDestructor(CoinSimplexInt type = 1);
void gutsOfInitialize(CoinSimplexInt type);
void gutsOfCopy(const CoinAbcTypeFactorization &other);
void resetStatistics();
void printRegion(const CoinIndexedVector &vector, const char *where) const;
virtual void getAreas(CoinSimplexInt numberRows,
CoinSimplexInt numberColumns,
CoinBigIndex maximumL,
CoinBigIndex maximumU);
virtual void preProcess();
void preProcess(CoinSimplexInt);
double preProcess3();
void preProcess4();
virtual CoinSimplexInt factor(AbcSimplex *model);
#ifdef EARLY_FACTORIZE
virtual int factorize(AbcSimplex *model, CoinIndexedVector &stuff);
#endif
virtual void postProcess(const CoinSimplexInt *sequence, CoinSimplexInt *pivotVariable);
virtual void makeNonSingular(CoinSimplexInt *sequence);
protected:
CoinSimplexInt factorSparse();
CoinSimplexInt factorDense();
bool pivotOneOtherRow(CoinSimplexInt pivotRow,
CoinSimplexInt pivotColumn);
bool pivotRowSingleton(CoinSimplexInt pivotRow,
CoinSimplexInt pivotColumn);
void pivotColumnSingleton(CoinSimplexInt pivotRow,
CoinSimplexInt pivotColumn);
void afterPivot(CoinSimplexInt pivotRow,
CoinSimplexInt pivotColumn);
int wantToGoDense();
bool getColumnSpace(CoinSimplexInt iColumn,
CoinSimplexInt extraNeeded);
bool reorderU();
bool getColumnSpaceIterateR(CoinSimplexInt iColumn, CoinFactorizationDouble value,
CoinSimplexInt iRow);
CoinBigIndex getColumnSpaceIterate(CoinSimplexInt iColumn, CoinFactorizationDouble value,
CoinSimplexInt iRow);
bool getRowSpace(CoinSimplexInt iRow, CoinSimplexInt extraNeeded);
bool getRowSpaceIterate(CoinSimplexInt iRow,
CoinSimplexInt extraNeeded);
void checkConsistency();
//#define CHECK_LINKS
#ifdef CHECK_LINKS
void checkLinks(int x = 0);
#else
#define checkLinks(x)
#endif
inline void addLink(CoinSimplexInt index, CoinSimplexInt count)
{
CoinSimplexInt *COIN_RESTRICT nextCount = nextCountAddress_;
CoinSimplexInt *COIN_RESTRICT firstCount = this->firstCount();
CoinSimplexInt *COIN_RESTRICT lastCount = lastCountAddress_;
CoinSimplexInt next = firstCount[count];
firstCount[count] = index;
nextCount[index] = next;
lastCount[index] = count - numberRows_ - 2; // points to firstCount[count]
if (next >= 0)
lastCount[next] = index;
}
inline void deleteLink(CoinSimplexInt index)
{
CoinSimplexInt *COIN_RESTRICT nextCount = nextCountAddress_;
CoinSimplexInt *COIN_RESTRICT lastCount = lastCountAddress_;
CoinSimplexInt next = nextCount[index];
CoinSimplexInt last = lastCount[index];
assert(next != index);
assert(last != index);
if (next >= 0)
lastCount[next] = last;
if (last >= 0) {
nextCount[last] = next;
} else {
int count = last + numberRows_ + 2;
CoinSimplexInt *COIN_RESTRICT firstCount = this->firstCount();
firstCount[count] = next;
}
}
inline void modifyLink(CoinSimplexInt index, CoinSimplexInt count)
{
CoinSimplexInt *COIN_RESTRICT nextCount = nextCountAddress_;
CoinSimplexInt *COIN_RESTRICT lastCount = lastCountAddress_;
CoinSimplexInt *COIN_RESTRICT firstCount = this->firstCount();
CoinSimplexInt next2 = firstCount[count];
if (next2 == index)
return;
firstCount[count] = index;
CoinSimplexInt next = nextCount[index];
CoinSimplexInt last = lastCount[index];
assert(next != index);
assert(last != index);
nextCount[index] = next2;
lastCount[index] = count - numberRows_ - 2; // points to firstCount[count]
if (next >= 0)
lastCount[next] = last;
if (next2 >= 0)
lastCount[next2] = index;
if (last >= 0) {
nextCount[last] = next;
} else {
int count = last + numberRows_ + 2;
firstCount[count] = next;
}
}
void separateLinks();
void separateLinks(CoinSimplexInt, CoinSimplexInt);
void cleanup();
void doAddresses();
void updateColumnL(CoinIndexedVector *region
#if ABC_SMALL < 2
,
CoinAbcStatistics &statistics
#endif
#if ABC_PARALLEL
,
int whichSparse = 0
#endif
) const;
void updateColumnLDensish(CoinIndexedVector *region) const;
void updateColumnLDense(CoinIndexedVector *region) const;
void updateColumnLSparse(CoinIndexedVector *region
#if ABC_PARALLEL
,
int whichSparse
#endif
) const;
void updateColumnR(CoinIndexedVector *region
#if ABC_SMALL < 2
,
CoinAbcStatistics &statistics
#endif
#if ABC_PARALLEL
,
int whichSparse = 0
#endif
) const;
bool storeFT(
#if ABC_SMALL < 3
const
#endif
CoinIndexedVector *regionFT);
void updateColumnU(CoinIndexedVector *region
#if ABC_SMALL < 2
,
CoinAbcStatistics &statistics
#endif
#if ABC_PARALLEL
,
int whichSparse = 0
#endif
) const;
void updateColumnUSparse(CoinIndexedVector *regionSparse
#if ABC_PARALLEL
,
int whichSparse
#endif
) const;
void updateColumnUDensish(CoinIndexedVector *regionSparse) const;
void updateColumnUDense(CoinIndexedVector *regionSparse) const;
void updateTwoColumnsUDensish(
CoinSimplexInt &numberNonZero1,
CoinFactorizationDouble *COIN_RESTRICT region1,
CoinSimplexInt *COIN_RESTRICT index1,
CoinSimplexInt &numberNonZero2,
CoinFactorizationDouble *COIN_RESTRICT region2,
CoinSimplexInt *COIN_RESTRICT index2) const;
void updateColumnPFI(CoinIndexedVector *regionSparse) const;
void updateColumnTransposePFI(CoinIndexedVector *region) const;
void updateColumnTransposeU(CoinIndexedVector *region,
CoinSimplexInt smallestIndex
#if ABC_SMALL < 2
,
CoinAbcStatistics &statistics
#endif
#if ABC_PARALLEL
,
int whichCpu
#endif
) const;
void updateColumnTransposeUDensish(CoinIndexedVector *region,
CoinSimplexInt smallestIndex) const;
void updateColumnTransposeUSparse(CoinIndexedVector *region
#if ABC_PARALLEL
,
int whichSparse
#endif
) const;
void updateColumnTransposeUByColumn(CoinIndexedVector *region,
CoinSimplexInt smallestIndex) const;
void updateColumnTransposeR(CoinIndexedVector *region
#if ABC_SMALL < 2
,
CoinAbcStatistics &statistics
#endif
) const;
void updateColumnTransposeRDensish(CoinIndexedVector *region) const;
void updateColumnTransposeRSparse(CoinIndexedVector *region) const;
void updateColumnTransposeL(CoinIndexedVector *region
#if ABC_SMALL < 2
,
CoinAbcStatistics &statistics
#endif
#if ABC_PARALLEL
,
int whichSparse
#endif
) const;
void updateColumnTransposeLDensish(CoinIndexedVector *region) const;
void updateColumnTransposeLByRow(CoinIndexedVector *region) const;
void updateColumnTransposeLSparse(CoinIndexedVector *region
#if ABC_PARALLEL
,
int whichSparse
#endif
) const;
public:
CoinSimplexInt replaceColumnPFI(CoinIndexedVector *regionSparse,
CoinSimplexInt pivotRow, CoinSimplexDouble alpha);
protected:
CoinSimplexInt checkPivot(CoinSimplexDouble saveFromU, CoinSimplexDouble oldPivot) const;
int pivot(CoinSimplexInt pivotRow,
CoinSimplexInt pivotColumn,
CoinBigIndex pivotRowPosition,
CoinBigIndex pivotColumnPosition,
CoinFactorizationDouble *COIN_RESTRICT work,
CoinSimplexUnsignedInt *COIN_RESTRICT workArea2,
CoinSimplexInt increment2,
int *COIN_RESTRICT markRow);
int pivot(CoinSimplexInt &pivotRow,
CoinSimplexInt &pivotColumn,
CoinBigIndex pivotRowPosition,
CoinBigIndex pivotColumnPosition,
int *COIN_RESTRICT markRow);
#if ABC_SMALL < 2
#define CONVERTROW 2
#elif ABC_SMALL < 4
#else
#undef ABC_DENSE_CODE
#define ABC_DENSE_CODE 0
#endif
protected:
CoinSimplexInt *pivotColumnAddress_;
CoinSimplexInt *permuteAddress_;
CoinFactorizationDouble *pivotRegionAddress_;
CoinFactorizationDouble *elementUAddress_;
CoinSimplexInt *indexRowUAddress_;
CoinSimplexInt *numberInColumnAddress_;
CoinSimplexInt *numberInColumnPlusAddress_;
#ifdef ABC_USE_FUNCTION_POINTERS
scatterStruct *scatterPointersUColumnAddress_;
CoinFactorizationDouble *elementUColumnPlusAddress_;
#endif
CoinBigIndex *startColumnUAddress_;
#if CONVERTROW
CoinBigIndex *convertRowToColumnUAddress_;
#if CONVERTROW > 1
CoinBigIndex *convertColumnToRowUAddress_;
#endif
#endif
#if ABC_SMALL < 2
CoinFactorizationDouble *elementRowUAddress_;
#endif
CoinBigIndex *startRowUAddress_;
CoinSimplexInt *numberInRowAddress_;
CoinSimplexInt *indexColumnUAddress_;
CoinSimplexInt *firstCountAddress_;
CoinSimplexInt *nextCountAddress_;
CoinSimplexInt *lastCountAddress_;
CoinSimplexInt *nextColumnAddress_;
CoinSimplexInt *lastColumnAddress_;
CoinSimplexInt *nextRowAddress_;
CoinSimplexInt *lastRowAddress_;
CoinSimplexInt *saveColumnAddress_;
//CoinSimplexInt * saveColumnAddress2_;
CoinCheckZero *markRowAddress_;
CoinSimplexInt *listAddress_;
CoinFactorizationDouble *elementLAddress_;
CoinSimplexInt *indexRowLAddress_;
CoinBigIndex *startColumnLAddress_;
#if ABC_SMALL < 2
CoinBigIndex *startRowLAddress_;
#endif
CoinSimplexInt *pivotLinkedBackwardsAddress_;
CoinSimplexInt *pivotLinkedForwardsAddress_;
CoinSimplexInt *pivotLOrderAddress_;
CoinBigIndex *startColumnRAddress_;
CoinFactorizationDouble *elementRAddress_;
CoinSimplexInt *indexRowRAddress_;
CoinSimplexInt *indexColumnLAddress_;
CoinFactorizationDouble *elementByRowLAddress_;
#if ABC_SMALL < 4
CoinFactorizationDouble *denseAreaAddress_;
#endif
CoinFactorizationDouble *workAreaAddress_;
CoinSimplexUnsignedInt *workArea2Address_;
mutable CoinSimplexInt *sparseAddress_;
#ifdef SMALL_PERMUTE
CoinSimplexInt *fromSmallToBigRow_;
CoinSimplexInt *fromSmallToBigColumn_;
#endif
CoinSimplexInt numberRowsExtra_;
CoinSimplexInt maximumRowsExtra_;
CoinSimplexInt numberRowsSmall_;
CoinSimplexInt numberGoodL_;
CoinSimplexInt numberRowsLeft_;
CoinBigIndex totalElements_;
CoinBigIndex firstZeroed_;
#if ABC_SMALL < 2
CoinSimplexInt sparseThreshold_;
#endif
CoinSimplexInt numberR_;
CoinBigIndex lengthR_;
CoinBigIndex lengthAreaR_;
CoinBigIndex numberL_;
CoinBigIndex baseL_;
CoinBigIndex lengthL_;
CoinBigIndex lengthAreaL_;
CoinSimplexInt numberU_;
CoinBigIndex maximumU_;
CoinBigIndex lengthU_;
CoinBigIndex lengthAreaU_;
CoinBigIndex lastEntryByColumnU_;
#ifdef ABC_USE_FUNCTION_POINTERS
CoinBigIndex lastEntryByColumnUPlus_;
CoinBigIndex lengthAreaUPlus_;
#endif
CoinBigIndex lastEntryByRowU_;
CoinSimplexInt numberTrials_;
#if ABC_SMALL < 4
CoinSimplexInt leadingDimension_;
#endif
#if COIN_BIG_DOUBLE == 1
mutable CoinFactorizationLongDoubleArrayWithLength longArray_[FACTOR_CPU];
mutable CoinIndexedVector *associatedVector_[FACTOR_CPU];
#endif
CoinIntArrayWithLength pivotColumn_;
CoinIntArrayWithLength permute_;
CoinBigIndexArrayWithLength startRowU_;
CoinIntArrayWithLength numberInRow_;
CoinIntArrayWithLength numberInColumn_;
CoinIntArrayWithLength numberInColumnPlus_;
CoinIntArrayWithLength firstCount_;
CoinIntArrayWithLength nextColumn_;
CoinIntArrayWithLength lastColumn_;
CoinIntArrayWithLength nextRow_;
CoinIntArrayWithLength lastRow_;
CoinIntArrayWithLength saveColumn_;
CoinIntArrayWithLength markRow_;
CoinIntArrayWithLength indexColumnU_;
CoinFactorizationDoubleArrayWithLength pivotRegion_;
CoinFactorizationDoubleArrayWithLength elementU_;
CoinIntArrayWithLength indexRowU_;
CoinBigIndexArrayWithLength startColumnU_;
#ifdef ABC_USE_FUNCTION_POINTERS
CoinArbitraryArrayWithLength scatterUColumn_;
#endif
#if CONVERTROW
CoinBigIndexArrayWithLength convertRowToColumnU_;
#if CONVERTROW > 1
CoinBigIndexArrayWithLength convertColumnToRowU_;
#endif
#endif
#if ABC_SMALL < 2
CoinFactorizationDoubleArrayWithLength elementRowU_;
#endif
CoinFactorizationDoubleArrayWithLength elementL_;
CoinIntArrayWithLength indexRowL_;
CoinBigIndexArrayWithLength startColumnL_;
#if ABC_SMALL < 4
CoinFactorizationDoubleArrayWithLength denseArea_;
#endif
CoinFactorizationDoubleArrayWithLength workArea_;
CoinUnsignedIntArrayWithLength workArea2_;
#if ABC_SMALL < 2
CoinBigIndexArrayWithLength startRowL_;
CoinIntArrayWithLength indexColumnL_;
CoinFactorizationDoubleArrayWithLength elementByRowL_;
mutable CoinIntArrayWithLength sparse_;
#endif
CoinSimplexInt messageLevel_;
CoinBigIndex numberCompressions_;
// last slack pivot row
CoinSimplexInt lastSlack_;
#if ABC_SMALL < 2
mutable double ftranCountInput_;
mutable double ftranCountAfterL_;
mutable double ftranCountAfterR_;
mutable double ftranCountAfterU_;
double ftranAverageAfterL_;
double ftranAverageAfterR_;
double ftranAverageAfterU_;
#if FACTORIZATION_STATISTICS
double ftranTwiddleFactor1_;
double ftranTwiddleFactor2_;
#endif
mutable CoinSimplexInt numberFtranCounts_;
#endif
CoinSimplexInt maximumRows_;
#if ABC_SMALL < 2
mutable double ftranFTCountInput_;
mutable double ftranFTCountAfterL_;
mutable double ftranFTCountAfterR_;
mutable double ftranFTCountAfterU_;
double ftranFTAverageAfterL_;
double ftranFTAverageAfterR_;
double ftranFTAverageAfterU_;
#if FACTORIZATION_STATISTICS
double ftranFTTwiddleFactor1_;
double ftranFTTwiddleFactor2_;
#endif
mutable CoinSimplexInt numberFtranFTCounts_;
#endif
#if ABC_SMALL < 4
CoinSimplexInt denseThreshold_;
#endif
#if ABC_SMALL < 2
mutable double btranCountInput_;
mutable double btranCountAfterU_;
mutable double btranCountAfterR_;
mutable double btranCountAfterL_;
double btranAverageAfterU_;
double btranAverageAfterR_;
double btranAverageAfterL_;
#if FACTORIZATION_STATISTICS
double btranTwiddleFactor1_;
double btranTwiddleFactor2_;
#endif
mutable CoinSimplexInt numberBtranCounts_;
#endif
CoinSimplexInt maximumMaximumPivots_;
#if ABC_SMALL < 2
mutable double ftranFullCountInput_;
mutable double ftranFullCountAfterL_;
mutable double ftranFullCountAfterR_;
mutable double ftranFullCountAfterU_;
double ftranFullAverageAfterL_;
double ftranFullAverageAfterR_;
double ftranFullAverageAfterU_;
#if FACTORIZATION_STATISTICS
double ftranFullTwiddleFactor1_;
double ftranFullTwiddleFactor2_;
#endif
mutable CoinSimplexInt numberFtranFullCounts_;
#endif
CoinSimplexInt initialNumberRows_;
#if ABC_SMALL < 2
mutable double btranFullCountInput_;
mutable double btranFullCountAfterL_;
mutable double btranFullCountAfterR_;
mutable double btranFullCountAfterU_;
double btranFullAverageAfterL_;
double btranFullAverageAfterR_;
double btranFullAverageAfterU_;
#if FACTORIZATION_STATISTICS
double btranFullTwiddleFactor1_;
double btranFullTwiddleFactor2_;
#endif
mutable CoinSimplexInt numberBtranFullCounts_;
#endif
CoinSimplexInt state_;
CoinBigIndex sizeSparseArray_;
public:
#if ABC_SMALL < 2
#if ABC_SMALL >= 0
inline bool gotLCopy() const
{
return ((state_ & ABC_FAC_GOT_LCOPY) != 0);
}
inline void setNoGotLCopy() { state_ &= ~ABC_FAC_GOT_LCOPY; }
inline void setYesGotLCopy() { state_ |= ABC_FAC_GOT_LCOPY; }
inline bool gotRCopy() const { return ((state_ & ABC_FAC_GOT_RCOPY) != 0); }
inline void setNoGotRCopy() { state_ &= ~ABC_FAC_GOT_RCOPY; }
inline void setYesGotRCopy() { state_ |= ABC_FAC_GOT_RCOPY; }
inline bool gotUCopy() const { return ((state_ & ABC_FAC_GOT_UCOPY) != 0); }
inline void setNoGotUCopy() { state_ &= ~ABC_FAC_GOT_UCOPY; }
inline void setYesGotUCopy() { state_ |= ABC_FAC_GOT_UCOPY; }
inline bool gotSparse() const { return ((state_ & ABC_FAC_GOT_SPARSE) != 0); }
inline void setNoGotSparse() { state_ &= ~ABC_FAC_GOT_SPARSE; }
inline void setYesGotSparse() { state_ |= ABC_FAC_GOT_SPARSE; }
#else
// force use of copies
inline bool gotLCopy() const { return true; }
inline void setNoGotLCopy() {}
inline void setYesGotLCopy() {}
inline bool gotRCopy() const { return true; }
inline void setNoGotRCopy() {}
inline void setYesGotRCopy() {}
inline bool gotUCopy() const { return true; }
inline void setNoGotUCopy() {}
inline void setYesGotUCopy() {}
inline bool gotSparse() const { return true; }
inline void setNoGotSparse() {}
inline void setYesGotSparse() {}
#endif
#else
// force no use of copies
inline bool gotLCopy() const { return false; }
inline void setNoGotLCopy() {}
inline void setYesGotLCopy() {}
inline bool gotRCopy() const { return false; }
inline void setNoGotRCopy() {}
inline void setYesGotRCopy() {}
inline bool gotUCopy() const { return false; }
inline void setNoGotUCopy() {}
inline void setYesGotUCopy() {}
inline bool gotSparse() const { return false; }
inline void setNoGotSparse() {}
inline void setYesGotSparse() {}
#endif
//CoinSimplexInt persistenceFlag_;
};
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
*/
AbcCommon.hpp
AbcSimplex
#define AbcSimplex
Definition AbcWarmStart.hpp:16
type
CbcOrClpParameterType type() const
type
Definition CbcOrClpParam.hpp:462
COIN_RESTRICT
#define COIN_RESTRICT
Definition ClpMatrixBase.hpp:21
checkLinks
#define checkLinks(x)
Definition CoinAbcBaseFactorization.hpp:691
FACTOR_CPU
#define FACTOR_CPU
This deals with Factorization and Updates.
Definition CoinAbcBaseFactorization.hpp:23
ABC_FAC_GOT_UCOPY
#define ABC_FAC_GOT_UCOPY
Definition CoinAbcCommonFactorization.hpp:69
ABC_FAC_GOT_RCOPY
#define ABC_FAC_GOT_RCOPY
Definition CoinAbcCommonFactorization.hpp:68
ABC_FAC_GOT_SPARSE
#define ABC_FAC_GOT_SPARSE
Definition CoinAbcCommonFactorization.hpp:70
ABC_FAC_GOT_LCOPY
#define ABC_FAC_GOT_LCOPY
Definition CoinAbcCommonFactorization.hpp:67
CoinSimplexDouble
double CoinSimplexDouble
Definition CoinAbcCommon.hpp:21
CoinSimplexUnsignedInt
unsigned int CoinSimplexUnsignedInt
Definition CoinAbcCommon.hpp:23
ABC_PARALLEL
#define ABC_PARALLEL
Definition CoinAbcCommon.hpp:36
CoinCheckZero
unsigned char CoinCheckZero
Definition CoinAbcCommon.hpp:226
CoinSimplexInt
int CoinSimplexInt
Definition CoinAbcCommon.hpp:22
ABC_SMALL
#define ABC_SMALL
Definition CoinAbcFactorization.hpp:17
CoinAbcHelperFunctions.hpp
scatterUpdate
void(* scatterUpdate)(int, CoinFactorizationDouble, const CoinFactorizationDouble *, double *) SCATTER_ATTRIBUTE
Definition CoinAbcHelperFunctions.hpp:548
CoinAbcAnyFactorization::zeroTolerance_
double zeroTolerance_
Zero tolerance.
Definition CoinAbcDenseFactorization.hpp:392
CoinAbcAnyFactorization::checkReplacePart1b
virtual double checkReplacePart1b(CoinIndexedVector *, int)
Definition CoinAbcDenseFactorization.hpp:303
CoinAbcAnyFactorization::CoinAbcAnyFactorization
CoinAbcAnyFactorization()
Default constructor.
CoinAbcAnyFactorization::checkReplacePart1a
virtual void checkReplacePart1a(CoinIndexedVector *, int)
Definition CoinAbcDenseFactorization.hpp:299
CoinAbcAnyFactorization::numberRows
int numberRows() const
Number of Rows after factorization.
Definition CoinAbcDenseFactorization.hpp:87
CoinAbcAnyFactorization::pivotRow
virtual int * pivotRow() const
Returns pivot row.
CoinAbcAnyFactorization::numberRows_
int numberRows_
Number of Rows in factorization.
Definition CoinAbcDenseFactorization.hpp:401
CoinAbcTypeFactorization::startRowL
CoinBigIndex * startRowL() const
Start of each row in L.
Definition CoinAbcBaseFactorization.hpp:86
CoinAbcTypeFactorization::lengthAreaU_
CoinBigIndex lengthAreaU_
Length of area reserved for U.
Definition CoinAbcBaseFactorization.hpp:1042
CoinAbcTypeFactorization::indexColumnU_
CoinIntArrayWithLength indexColumnU_
Base address for U (may change).
Definition CoinAbcBaseFactorization.hpp:1093
CoinAbcTypeFactorization::nextColumnAddress_
CoinSimplexInt * nextColumnAddress_
Definition CoinAbcBaseFactorization.hpp:968
CoinAbcTypeFactorization::updateColumnTransposeU
void updateColumnTransposeU(CoinIndexedVector *region, CoinSimplexInt smallestIndex, CoinAbcStatistics &statistics) const
Updates part of column transpose (BTRANU), assumes index is sorted i.e.
CoinAbcTypeFactorization::deleteLink
void deleteLink(CoinSimplexInt index)
Deletes a link in chain of equal counts.
Definition CoinAbcBaseFactorization.hpp:707
CoinAbcTypeFactorization::gutsOfDestructor
void gutsOfDestructor(CoinSimplexInt type=1)
The real work of constructors etc 0 just scalars, 1 bit normal.
CoinAbcTypeFactorization::gutsOfInitialize
void gutsOfInitialize(CoinSimplexInt type)
1 bit - tolerances etc, 2 more, 4 dummy arrays
CoinAbcTypeFactorization::lastSlack_
CoinSimplexInt lastSlack_
Definition CoinAbcBaseFactorization.hpp:1147
CoinAbcTypeFactorization::maximumRowsExtra
CoinSimplexInt maximumRowsExtra() const
Maximum of Rows after iterating.
Definition CoinAbcBaseFactorization.hpp:197
CoinAbcTypeFactorization::maximumU_
CoinBigIndex maximumU_
Maximum space used in U.
Definition CoinAbcBaseFactorization.hpp:1038
CoinAbcTypeFactorization::numberInColumn_
CoinIntArrayWithLength numberInColumn_
Number in each Column.
Definition CoinAbcBaseFactorization.hpp:1074
CoinAbcTypeFactorization::btranFullAverageAfterL_
double btranFullAverageAfterL_
Definition CoinAbcBaseFactorization.hpp:1222
CoinAbcTypeFactorization::elementU_
CoinFactorizationDoubleArrayWithLength elementU_
Elements of U.
Definition CoinAbcBaseFactorization.hpp:1097
CoinAbcTypeFactorization::firstCount
CoinSimplexInt * firstCount() const
For equal counts in factorization.
Definition CoinAbcBaseFactorization.hpp:163
CoinAbcTypeFactorization::getColumnSpace
bool getColumnSpace(CoinSimplexInt iColumn, CoinSimplexInt extraNeeded)
Gets space for one Column with given length, may have to do compression (returns True if successful),...
CoinAbcTypeFactorization::pivotLinkedForwards
CoinSimplexInt * pivotLinkedForwards() const
Definition CoinAbcBaseFactorization.hpp:126
CoinAbcTypeFactorization::setNoGotRCopy
void setNoGotRCopy()
Definition CoinAbcBaseFactorization.hpp:1251
CoinAbcTypeFactorization::updateColumnTransposeRDensish
void updateColumnTransposeRDensish(CoinIndexedVector *region) const
Updates part of column transpose (BTRANR) when dense.
CoinAbcTypeFactorization::elementUAddress_
CoinFactorizationDouble * elementUAddress_
Definition CoinAbcBaseFactorization.hpp:941
CoinAbcTypeFactorization::denseAreaAddress_
CoinFactorizationDouble * denseAreaAddress_
Definition CoinAbcBaseFactorization.hpp:993
CoinAbcTypeFactorization::checkReplacePart1
virtual double checkReplacePart1(CoinIndexedVector *regionSparse, int pivotRow)
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial...
CoinAbcTypeFactorization::saveColumn_
CoinIntArrayWithLength saveColumn_
Columns left to do in a single pivot.
Definition CoinAbcBaseFactorization.hpp:1089
CoinAbcTypeFactorization::btranFullCountAfterR_
double btranFullCountAfterR_
Definition CoinAbcBaseFactorization.hpp:1220
CoinAbcTypeFactorization::listAddress_
CoinSimplexInt * listAddress_
Definition CoinAbcBaseFactorization.hpp:975
CoinAbcTypeFactorization::numberFtranFTCounts_
CoinSimplexInt numberFtranFTCounts_
Definition CoinAbcBaseFactorization.hpp:1177
CoinAbcTypeFactorization::btranFullCountAfterL_
double btranFullCountAfterL_
Definition CoinAbcBaseFactorization.hpp:1219
CoinAbcTypeFactorization::btranCountInput_
double btranCountInput_
Definition CoinAbcBaseFactorization.hpp:1184
CoinAbcTypeFactorization::nextCount
CoinSimplexInt * nextCount() const
Next Row/Column with count.
Definition CoinAbcBaseFactorization.hpp:169
CoinAbcTypeFactorization::getRowSpace
bool getRowSpace(CoinSimplexInt iRow, CoinSimplexInt extraNeeded)
Gets space for one Row with given length, may have to do compression (returns True if successful),...
CoinAbcTypeFactorization::ftranFullCountAfterR_
double ftranFullCountAfterR_
Definition CoinAbcBaseFactorization.hpp:1203
CoinAbcTypeFactorization::ftranFTCountAfterU_
double ftranFTCountAfterU_
Definition CoinAbcBaseFactorization.hpp:1169
CoinAbcTypeFactorization::numberRowsSmall_
CoinSimplexInt numberRowsSmall_
Size of small inverse.
Definition CoinAbcBaseFactorization.hpp:1007
CoinAbcTypeFactorization::ftranFullAverageAfterL_
double ftranFullAverageAfterL_
Definition CoinAbcBaseFactorization.hpp:1205
CoinAbcTypeFactorization::btranFullAverageAfterR_
double btranFullAverageAfterR_
Definition CoinAbcBaseFactorization.hpp:1223
CoinAbcTypeFactorization::goSparse2
void goSparse2()
CoinAbcTypeFactorization::ftranCountAfterL_
double ftranCountAfterL_
Definition CoinAbcBaseFactorization.hpp:1151
CoinAbcTypeFactorization::ftranCountAfterR_
double ftranCountAfterR_
Definition CoinAbcBaseFactorization.hpp:1152
CoinAbcTypeFactorization::lengthAreaR_
CoinBigIndex lengthAreaR_
length of area reserved for R
Definition CoinAbcBaseFactorization.hpp:1026
CoinAbcTypeFactorization::pivotRegion_
CoinFactorizationDoubleArrayWithLength pivotRegion_
Inverses of pivot values.
Definition CoinAbcBaseFactorization.hpp:1095
CoinAbcTypeFactorization::numberElementsL
CoinBigIndex numberElementsL() const
Returns number in L area.
Definition CoinAbcBaseFactorization.hpp:271
CoinAbcTypeFactorization::numberForrestTomlin
CoinSimplexInt numberForrestTomlin() const
Length of FT vector.
Definition CoinAbcBaseFactorization.hpp:207
CoinAbcTypeFactorization::factorSparse
CoinSimplexInt factorSparse()
Does sparse phase of factorization return code is <0 error, 0= finished.
CoinAbcTypeFactorization::numberL
CoinBigIndex numberL() const
Number in L.
Definition CoinAbcBaseFactorization.hpp:186
CoinAbcTypeFactorization::updateColumnFT
virtual CoinSimplexInt updateColumnFT(CoinIndexedVector &regionSparse)
Later take out return codes (apart from +- 1 on FT).
CoinAbcTypeFactorization::startColumnUAddress_
CoinBigIndex * startColumnUAddress_
Definition CoinAbcBaseFactorization.hpp:950
CoinAbcTypeFactorization::makeNonSingular
virtual void makeNonSingular(CoinSimplexInt *sequence)
Makes a non-singular basis by replacing variables.
CoinAbcTypeFactorization::ftranAverageAfterR_
double ftranAverageAfterR_
Definition CoinAbcBaseFactorization.hpp:1155
CoinAbcTypeFactorization::pivotRegion
virtual CoinFactorizationDouble * pivotRegion() const
Returns address of pivot region.
Definition CoinAbcBaseFactorization.hpp:80
CoinAbcTypeFactorization::elementU
CoinFactorizationDouble * elementU() const
Elements of U.
Definition CoinAbcBaseFactorization.hpp:322
CoinAbcTypeFactorization::ftranFullCountAfterL_
double ftranFullCountAfterL_
Definition CoinAbcBaseFactorization.hpp:1202
CoinAbcTypeFactorization::btranFullAverageAfterU_
double btranFullAverageAfterU_
Definition CoinAbcBaseFactorization.hpp:1224
CoinAbcTypeFactorization::reorderU
bool reorderU()
Reorders U so contiguous and in order (if there is space) Returns true if it could.
CoinAbcTypeFactorization::numberInColumnPlusAddress_
CoinSimplexInt * numberInColumnPlusAddress_
Definition CoinAbcBaseFactorization.hpp:944
CoinAbcTypeFactorization::pivotLOrder
CoinSimplexInt * pivotLOrder() const
Definition CoinAbcBaseFactorization.hpp:130
CoinAbcTypeFactorization::updateColumnLDense
void updateColumnLDense(CoinIndexedVector *region) const
Updates part of column (FTRANL) when dense (i.e. do as inner products).
CoinAbcTypeFactorization::adjustedAreaFactor
CoinSimplexDouble adjustedAreaFactor() const
Returns areaFactor but adjusted for dense.
CoinAbcTypeFactorization::nextRow_
CoinIntArrayWithLength nextRow_
Next Row in memory order.
Definition CoinAbcBaseFactorization.hpp:1085
CoinAbcTypeFactorization::checkReplacePart2
virtual int checkReplacePart2(int pivotRow, CoinSimplexDouble btranAlpha, double ftranAlpha, double ftAlpha, double acceptablePivot=1.0e-8)
Checks if can replace one Column to basis, returns 0=OK, 1=Probably OK, 2=singular,...
CoinAbcTypeFactorization::baseL
CoinBigIndex baseL() const
Base of L.
Definition CoinAbcBaseFactorization.hpp:192
CoinAbcTypeFactorization::checkMarkArrays
virtual void checkMarkArrays() const
CoinAbcTypeFactorization::numberFtranCounts_
CoinSimplexInt numberFtranCounts_
Definition CoinAbcBaseFactorization.hpp:1161
CoinAbcTypeFactorization::numberInRowAddress_
CoinSimplexInt * numberInRowAddress_
Definition CoinAbcBaseFactorization.hpp:961
CoinAbcTypeFactorization::updatePartialUpdate
void updatePartialUpdate(CoinIndexedVector &partialUpdate)
Update partial Ftran by R update.
CoinAbcTypeFactorization::replaceColumnPart3
virtual void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, CoinIndexedVector *partialUpdate, int pivotRow, double alpha)
Replaces one Column to basis, partial update in vector.
CoinAbcTypeFactorization::btranCountAfterL_
double btranCountAfterL_
Definition CoinAbcBaseFactorization.hpp:1187
CoinAbcTypeFactorization::updateColumnTransposeUDensish
void updateColumnTransposeUDensish(CoinIndexedVector *region, CoinSimplexInt smallestIndex) const
Updates part of column transpose (BTRANU) when densish, assumes index is sorted i....
CoinAbcTypeFactorization::updateColumnUSparse
void updateColumnUSparse(CoinIndexedVector *regionSparse) const
Updates part of column (FTRANU) when sparse.
CoinAbcTypeFactorization::ftranFTAverageAfterR_
double ftranFTAverageAfterR_
Definition CoinAbcBaseFactorization.hpp:1171
CoinAbcTypeFactorization::numberElements
virtual CoinBigIndex numberElements() const
Total number of elements in factorization.
Definition CoinAbcBaseFactorization.hpp:202
CoinAbcTypeFactorization::numberRowsExtra_
CoinSimplexInt numberRowsExtra_
Number of Rows after iterating.
Definition CoinAbcBaseFactorization.hpp:1003
CoinAbcTypeFactorization::checkSparse
void checkSparse()
See if worth going sparse.
CoinAbcTypeFactorization::storeFT
bool storeFT(const CoinIndexedVector *regionFT)
Store update after doing L and R - retuns false if no room.
CoinAbcTypeFactorization::numberElementsR
CoinBigIndex numberElementsR() const
Returns number in R area.
Definition CoinAbcBaseFactorization.hpp:281
CoinAbcTypeFactorization::updateFullColumn
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const
Updates one full column (FTRAN).
CoinAbcTypeFactorization::numberR_
CoinSimplexInt numberR_
Number in R.
Definition CoinAbcBaseFactorization.hpp:1022
CoinAbcTypeFactorization::startColumnL
CoinBigIndex * startColumnL() const
Start of each column in L.
Definition CoinAbcBaseFactorization.hpp:93
CoinAbcTypeFactorization::operator=
CoinAbcTypeFactorization & operator=(const CoinAbcTypeFactorization &other)
= copy
CoinAbcTypeFactorization::elementByRowL_
CoinFactorizationDoubleArrayWithLength elementByRowL_
Elements in L (row copy).
Definition CoinAbcBaseFactorization.hpp:1138
CoinAbcTypeFactorization::numberL_
CoinBigIndex numberL_
Number in L.
Definition CoinAbcBaseFactorization.hpp:1028
CoinAbcTypeFactorization::workArea2_
CoinUnsignedIntArrayWithLength workArea2_
Second work area.
Definition CoinAbcBaseFactorization.hpp:1131
CoinAbcTypeFactorization::setNoGotLCopy
void setNoGotLCopy()
Definition CoinAbcBaseFactorization.hpp:1248
CoinAbcTypeFactorization::pivotColumn
virtual CoinSimplexInt * pivotColumn() const
Returns address of pivotColumn region (also used for permuting).
Definition CoinAbcBaseFactorization.hpp:75
CoinAbcTypeFactorization::startColumnR
CoinBigIndex * startColumnR() const
Start of columns for R.
Definition CoinAbcBaseFactorization.hpp:317
CoinAbcTypeFactorization::ftranFTCountInput_
double ftranFTCountInput_
Definition CoinAbcBaseFactorization.hpp:1166
CoinAbcTypeFactorization::updateColumnPFI
void updateColumnPFI(CoinIndexedVector *regionSparse) const
Updates part of column PFI (FTRAN) (after rest).
CoinAbcTypeFactorization::updateColumnL
void updateColumnL(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column (FTRANL).
CoinAbcTypeFactorization::lastCount
CoinSimplexInt * lastCount() const
Previous Row/Column with count.
Definition CoinAbcBaseFactorization.hpp:175
CoinAbcTypeFactorization::doAddresses
void doAddresses()
Set up addresses from arrays.
CoinAbcTypeFactorization::ftranCountInput_
double ftranCountInput_
To decide how to solve.
Definition CoinAbcBaseFactorization.hpp:1150
CoinAbcTypeFactorization::separateLinks
void separateLinks(CoinSimplexInt, CoinSimplexInt)
CoinAbcTypeFactorization::setNoGotUCopy
void setNoGotUCopy()
Definition CoinAbcBaseFactorization.hpp:1254
CoinAbcTypeFactorization::startRowL_
CoinBigIndexArrayWithLength startRowL_
Start of each row in L.
Definition CoinAbcBaseFactorization.hpp:1134
CoinAbcTypeFactorization::CoinAbcFactorizationUnitTest
friend void CoinAbcFactorizationUnitTest(const std::string &mpsDir)
CoinAbcTypeFactorization::startColumnL_
CoinBigIndexArrayWithLength startColumnL_
Start of each column in L.
Definition CoinAbcBaseFactorization.hpp:1123
CoinAbcTypeFactorization::numberInColumn
virtual CoinSimplexInt * numberInColumn() const
Number of entries in each column.
Definition CoinAbcBaseFactorization.hpp:307
CoinAbcTypeFactorization::ftranFullCountAfterU_
double ftranFullCountAfterU_
Definition CoinAbcBaseFactorization.hpp:1204
CoinAbcTypeFactorization::lastEntryByRowU_
CoinBigIndex lastEntryByRowU_
Last entry by row for U.
Definition CoinAbcBaseFactorization.hpp:1052
CoinAbcTypeFactorization::denseVector
const double * denseVector(const CoinIndexedVector &vector) const
Definition CoinAbcBaseFactorization.hpp:370
CoinAbcTypeFactorization::sort
void sort() const
Debug - sort so can compare.
CoinAbcTypeFactorization::numberInColumnAddress_
CoinSimplexInt * numberInColumnAddress_
Definition CoinAbcBaseFactorization.hpp:943
CoinAbcTypeFactorization::ftranFTCountAfterL_
double ftranFTCountAfterL_
Definition CoinAbcBaseFactorization.hpp:1167
CoinAbcTypeFactorization::wantsTableauColumn
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
Definition CoinAbcBaseFactorization.hpp:503
CoinAbcTypeFactorization::lengthU_
CoinBigIndex lengthU_
Length of U.
Definition CoinAbcBaseFactorization.hpp:1040
CoinAbcTypeFactorization::pivotLinkedForwardsAddress_
CoinSimplexInt * pivotLinkedForwardsAddress_
Definition CoinAbcBaseFactorization.hpp:983
CoinAbcTypeFactorization::workAreaAddress_
CoinFactorizationDouble * workAreaAddress_
Definition CoinAbcBaseFactorization.hpp:995
CoinAbcTypeFactorization::startRowLAddress_
CoinBigIndex * startRowLAddress_
Definition CoinAbcBaseFactorization.hpp:980
CoinAbcTypeFactorization::lastEntryByColumnU_
CoinBigIndex lastEntryByColumnU_
Last entry by column for U.
Definition CoinAbcBaseFactorization.hpp:1044
CoinAbcTypeFactorization::CoinAbcTypeFactorization
CoinAbcTypeFactorization()
Default constructor.
CoinAbcTypeFactorization::startColumnLAddress_
CoinBigIndex * startColumnLAddress_
Definition CoinAbcBaseFactorization.hpp:978
CoinAbcTypeFactorization::pivotLinkedBackwards
CoinSimplexInt * pivotLinkedBackwards() const
Forward and backward linked lists (numberRows_+2).
Definition CoinAbcBaseFactorization.hpp:122
CoinAbcTypeFactorization::sparseThreshold
CoinSimplexInt sparseThreshold() const
get sparse threshold
Definition CoinAbcBaseFactorization.hpp:572
CoinAbcTypeFactorization::scan
void scan(CoinIndexedVector *vector) const
Scans region to find nonzeros.
Definition CoinAbcBaseFactorization.hpp:381
CoinAbcTypeFactorization::startRowUAddress_
CoinBigIndex * startRowUAddress_
Definition CoinAbcBaseFactorization.hpp:960
CoinAbcTypeFactorization::updateColumnLDensish
void updateColumnLDensish(CoinIndexedVector *region) const
Updates part of column (FTRANL) when densish.
CoinAbcTypeFactorization::elementRowU_
CoinFactorizationDoubleArrayWithLength elementRowU_
Elements of U by row.
Definition CoinAbcBaseFactorization.hpp:1116
CoinAbcTypeFactorization::state_
CoinSimplexInt state_
State of saved version and what can be done 0 - nothing saved 1 - saved and can go back to previous s...
Definition CoinAbcBaseFactorization.hpp:1237
CoinAbcTypeFactorization::sparseAddress_
CoinSimplexInt * sparseAddress_
Definition CoinAbcBaseFactorization.hpp:997
CoinAbcTypeFactorization::setYesGotSparse
void setYesGotSparse()
Definition CoinAbcBaseFactorization.hpp:1258
CoinAbcTypeFactorization::maximumCoefficient
CoinSimplexDouble maximumCoefficient() const
Returns maximum absolute value in factorization.
CoinAbcTypeFactorization::preProcess
virtual void preProcess()
PreProcesses column ordered copy of basis.
CoinAbcTypeFactorization::sizeSparseArray_
CoinBigIndex sizeSparseArray_
Size in bytes of a sparseArray.
Definition CoinAbcBaseFactorization.hpp:1239
CoinAbcTypeFactorization::btranCountAfterU_
double btranCountAfterU_
Definition CoinAbcBaseFactorization.hpp:1185
CoinAbcTypeFactorization::pack
void pack(CoinIndexedVector *regionFrom, CoinIndexedVector *regionTo) const
CoinAbcTypeFactorization::numberInRow_
CoinIntArrayWithLength numberInRow_
Number in each Row.
Definition CoinAbcBaseFactorization.hpp:1072
CoinAbcTypeFactorization::denseVector
double * denseVector(CoinIndexedVector *vector) const
Returns double * associated with vector.
Definition CoinAbcBaseFactorization.hpp:357
CoinAbcTypeFactorization::pivotColumn_
CoinIntArrayWithLength pivotColumn_
Pivot order for each Column.
Definition CoinAbcBaseFactorization.hpp:1066
CoinAbcTypeFactorization::maximumRowsExtra_
CoinSimplexInt maximumRowsExtra_
Maximum number of Rows after iterating.
Definition CoinAbcBaseFactorization.hpp:1005
CoinAbcTypeFactorization::lengthAreaU
CoinBigIndex lengthAreaU() const
Returns length of U area.
Definition CoinAbcBaseFactorization.hpp:266
CoinAbcTypeFactorization::messageLevel_
CoinSimplexInt messageLevel_
Detail in messages.
Definition CoinAbcBaseFactorization.hpp:1143
CoinAbcTypeFactorization::getColumnSpaceIterate
CoinBigIndex getColumnSpaceIterate(CoinSimplexInt iColumn, CoinFactorizationDouble value, CoinSimplexInt iRow)
getColumnSpaceIterate.
CoinAbcTypeFactorization::pivotRowSingleton
bool pivotRowSingleton(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
Does one pivot on Row Singleton in factorization.
CoinAbcTypeFactorization::lengthAreaL_
CoinBigIndex lengthAreaL_
Length of area reserved for L.
Definition CoinAbcBaseFactorization.hpp:1034
CoinAbcTypeFactorization::indices
virtual CoinSimplexInt * indices() const
Returns array to put basis indices in.
Definition CoinAbcBaseFactorization.hpp:70
CoinAbcTypeFactorization::cleanup
void cleanup()
Cleans up at end of factorization.
CoinAbcTypeFactorization::numberU_
CoinSimplexInt numberU_
Number in U.
Definition CoinAbcBaseFactorization.hpp:1036
CoinAbcTypeFactorization::updateColumnFTPart1
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse)
CoinAbcTypeFactorization::updateTwoColumnsUDensish
void updateTwoColumnsUDensish(CoinSimplexInt &numberNonZero1, CoinFactorizationDouble *COIN_RESTRICT region1, CoinSimplexInt *COIN_RESTRICT index1, CoinSimplexInt &numberNonZero2, CoinFactorizationDouble *COIN_RESTRICT region2, CoinSimplexInt *COIN_RESTRICT index2) const
Updates part of 2 columns (FTRANU) real work.
CoinAbcTypeFactorization::sparseThreshold_
CoinSimplexInt sparseThreshold_
Below this use sparse technology - if 0 then no L row copy.
Definition CoinAbcBaseFactorization.hpp:1019
CoinAbcTypeFactorization::startColumnU
CoinBigIndex * startColumnU() const
Start of each column in U.
Definition CoinAbcBaseFactorization.hpp:332
CoinAbcTypeFactorization::indexRowU
CoinSimplexInt * indexRowU() const
Row indices of U.
Definition CoinAbcBaseFactorization.hpp:327
CoinAbcTypeFactorization::lengthAreaL
CoinBigIndex lengthAreaL() const
Returns length of L area.
Definition CoinAbcBaseFactorization.hpp:276
CoinAbcTypeFactorization::separateLinks
void separateLinks()
Separate out links with same row/column count.
CoinAbcTypeFactorization::btranFullCountAfterU_
double btranFullCountAfterU_
Definition CoinAbcBaseFactorization.hpp:1221
CoinAbcTypeFactorization::ftranFTCountAfterR_
double ftranFTCountAfterR_
Definition CoinAbcBaseFactorization.hpp:1168
CoinAbcTypeFactorization::firstZeroed_
CoinBigIndex firstZeroed_
First place in funny copy zeroed out.
Definition CoinAbcBaseFactorization.hpp:1016
CoinAbcTypeFactorization::updateTwoColumnsFT
virtual CoinSimplexInt updateTwoColumnsFT(CoinIndexedVector &regionFT, CoinIndexedVector &regionOther)
Updates one column (FTRAN) from region2 Tries to do FT update number returned is negative if no room.
CoinAbcTypeFactorization::lastCountAddress_
CoinSimplexInt * lastCountAddress_
Previous Row/Column with count.
Definition CoinAbcBaseFactorization.hpp:967
CoinAbcTypeFactorization::lastRow_
CoinIntArrayWithLength lastRow_
Previous Row in memory order.
Definition CoinAbcBaseFactorization.hpp:1087
CoinAbcTypeFactorization::numberRowsExtra
CoinSimplexInt numberRowsExtra() const
Number of Rows after iterating.
Definition CoinAbcBaseFactorization.hpp:181
CoinAbcTypeFactorization::numberFtranFullCounts_
CoinSimplexInt numberFtranFullCounts_
Definition CoinAbcBaseFactorization.hpp:1212
CoinAbcTypeFactorization::btranAverageAfterU_
double btranAverageAfterU_
Definition CoinAbcBaseFactorization.hpp:1188
CoinAbcTypeFactorization::replaceColumnU
int replaceColumnU(CoinIndexedVector *regionSparse, CoinBigIndex *deletedPosition, CoinSimplexInt *deletedColumns, CoinSimplexInt pivotRow)
Combines BtranU and store which elements are to be deleted returns number to be deleted.
CoinAbcTypeFactorization::updateColumnR
void updateColumnR(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column (FTRANR) without FT update.
CoinAbcTypeFactorization::factorDense
CoinSimplexInt factorDense()
Does dense phase of factorization return code is <0 error, 0= finished.
CoinAbcTypeFactorization::btranAverageAfterL_
double btranAverageAfterL_
Definition CoinAbcBaseFactorization.hpp:1190
CoinAbcTypeFactorization::indexRowL
CoinSimplexInt * indexRowL() const
Row indices of L.
Definition CoinAbcBaseFactorization.hpp:107
CoinAbcTypeFactorization::ftranFTAverageAfterL_
double ftranFTAverageAfterL_
Definition CoinAbcBaseFactorization.hpp:1170
CoinAbcTypeFactorization::updateColumnFT
virtual void updateColumnFT(CoinIndexedVector &regionSparseFT, CoinIndexedVector &partialUpdate, int which)
Updates one column (FTRAN) Tries to do FT update puts partial update in vector.
CoinAbcTypeFactorization::maximumPivots
virtual void maximumPivots(CoinSimplexInt value)
Set maximum pivots.
CoinAbcTypeFactorization::nextCountAddress_
CoinSimplexInt * nextCountAddress_
Next Row/Column with count.
Definition CoinAbcBaseFactorization.hpp:965
CoinAbcTypeFactorization::lengthL_
CoinBigIndex lengthL_
Length of L.
Definition CoinAbcBaseFactorization.hpp:1032
CoinAbcTypeFactorization::numberTrials_
CoinSimplexInt numberTrials_
Number of trials before rejection.
Definition CoinAbcBaseFactorization.hpp:1054
CoinAbcTypeFactorization::numberRowsLeft_
CoinSimplexInt numberRowsLeft_
Number Rows left (numberRows-numberGood).
Definition CoinAbcBaseFactorization.hpp:1011
CoinAbcTypeFactorization::denseVector
const double * denseVector(const CoinIndexedVector *vector) const
Returns double * associated with vector.
Definition CoinAbcBaseFactorization.hpp:366
CoinAbcTypeFactorization::updateColumnLSparse
void updateColumnLSparse(CoinIndexedVector *region) const
Updates part of column (FTRANL) when sparse.
CoinAbcTypeFactorization::setYesGotLCopy
void setYesGotLCopy()
Definition CoinAbcBaseFactorization.hpp:1249
CoinAbcTypeFactorization::getAreas
virtual void getAreas(CoinSimplexInt numberRows, CoinSimplexInt numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
Gets space for a factorization, called by constructors.
CoinAbcTypeFactorization::ftranAverageAfterL_
double ftranAverageAfterL_
Definition CoinAbcBaseFactorization.hpp:1154
CoinAbcTypeFactorization::updateColumnFTPart2
virtual void updateColumnFTPart2(CoinIndexedVector &regionSparse)
CoinAbcTypeFactorization::wantToGoDense
int wantToGoDense()
After pivoting - returns true if need to go dense.
CoinAbcTypeFactorization::checkPivot
CoinSimplexInt checkPivot(CoinSimplexDouble saveFromU, CoinSimplexDouble oldPivot) const
Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.
CoinAbcTypeFactorization::ftranFullAverageAfterU_
double ftranFullAverageAfterU_
Definition CoinAbcBaseFactorization.hpp:1207
CoinAbcTypeFactorization::totalElements_
CoinBigIndex totalElements_
Number of elements in U (to go) or while iterating total overall.
Definition CoinAbcBaseFactorization.hpp:1014
CoinAbcTypeFactorization::elementByRowLAddress_
CoinFactorizationDouble * elementByRowLAddress_
Definition CoinAbcBaseFactorization.hpp:991
CoinAbcTypeFactorization::elementByRowL
CoinFactorizationDouble * elementByRowL() const
Elements in L (row copy).
Definition CoinAbcBaseFactorization.hpp:114
CoinAbcTypeFactorization::updateWeights
virtual void updateWeights(CoinIndexedVector &regionSparse) const
Updates one column for dual steepest edge weights (FTRAN).
CoinAbcTypeFactorization::startColumnU_
CoinBigIndexArrayWithLength startColumnU_
Start of each column in U.
Definition CoinAbcBaseFactorization.hpp:1101
CoinAbcTypeFactorization::almostDestructor
void almostDestructor()
Delete all stuff (leaves as after CoinAbcFactorization()).
CoinAbcTypeFactorization::lastColumn_
CoinIntArrayWithLength lastColumn_
Previous Column in memory order.
Definition CoinAbcBaseFactorization.hpp:1083
CoinAbcTypeFactorization::setYesGotUCopy
void setYesGotUCopy()
Definition CoinAbcBaseFactorization.hpp:1255
CoinAbcTypeFactorization::setYesGotRCopy
void setYesGotRCopy()
Definition CoinAbcBaseFactorization.hpp:1252
CoinAbcTypeFactorization::updateColumnTransposeRSparse
void updateColumnTransposeRSparse(CoinIndexedVector *region) const
Updates part of column transpose (BTRANR) when sparse.
CoinAbcTypeFactorization::modifyLink
void modifyLink(CoinSimplexInt index, CoinSimplexInt count)
Modifies links in chain of equal counts.
Definition CoinAbcBaseFactorization.hpp:726
CoinAbcTypeFactorization::updateColumnCpu
virtual void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (FTRAN).
CoinAbcTypeFactorization::~CoinAbcTypeFactorization
virtual ~CoinAbcTypeFactorization()
Destructor.
CoinAbcTypeFactorization::updateColumnTransposeLByRow
void updateColumnTransposeLByRow(CoinIndexedVector *region) const
Updates part of column transpose (BTRANL) when densish by row.
CoinAbcTypeFactorization::afterPivot
void afterPivot(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
After pivoting.
CoinAbcTypeFactorization::leadingDimension_
CoinSimplexInt leadingDimension_
Leading dimension for dense.
Definition CoinAbcBaseFactorization.hpp:1057
CoinAbcTypeFactorization::pivotLOrderAddress_
CoinSimplexInt * pivotLOrderAddress_
Definition CoinAbcBaseFactorization.hpp:984
CoinAbcTypeFactorization::indexRowL_
CoinIntArrayWithLength indexRowL_
Row indices of L.
Definition CoinAbcBaseFactorization.hpp:1121
CoinAbcTypeFactorization::startRowU_
CoinBigIndexArrayWithLength startRowU_
Start of each Row as pointer.
Definition CoinAbcBaseFactorization.hpp:1070
CoinAbcTypeFactorization::numberInColumnPlus_
CoinIntArrayWithLength numberInColumnPlus_
Number in each Column including pivoted.
Definition CoinAbcBaseFactorization.hpp:1076
CoinAbcTypeFactorization::nextRowAddress_
CoinSimplexInt * nextRowAddress_
Definition CoinAbcBaseFactorization.hpp:970
CoinAbcTypeFactorization::updateColumnTranspose
virtual CoinSimplexInt updateColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one column (BTRAN) from regionSparse2 regionSparse starts as zero and is zero at end Note - i...
CoinAbcTypeFactorization::setNumberElementsU
void setNumberElementsU(CoinBigIndex value)
Setss number in U area.
Definition CoinAbcBaseFactorization.hpp:261
CoinAbcTypeFactorization::messageLevel
void messageLevel(CoinSimplexInt value)
CoinAbcTypeFactorization::preProcess
void preProcess(CoinSimplexInt)
CoinAbcTypeFactorization::spaceForForrestTomlin
bool spaceForForrestTomlin() const
True if FT update and space.
Definition CoinAbcBaseFactorization.hpp:244
CoinAbcTypeFactorization::indexRowUAddress_
CoinSimplexInt * indexRowUAddress_
Definition CoinAbcBaseFactorization.hpp:942
CoinAbcTypeFactorization::sparseThreshold
void sparseThreshold(CoinSimplexInt value)
set sparse threshold
CoinAbcTypeFactorization::fromLongArray
void fromLongArray(int which) const
From a work array and dis-associate vector.
Definition CoinAbcBaseFactorization.hpp:379
CoinAbcTypeFactorization::updateColumnTransposeUSparse
void updateColumnTransposeUSparse(CoinIndexedVector *region) const
Updates part of column transpose (BTRANU) when sparse, assumes index is sorted i.e.
CoinAbcTypeFactorization::btranAverageAfterR_
double btranAverageAfterR_
Definition CoinAbcBaseFactorization.hpp:1189
CoinAbcTypeFactorization::preProcess4
void preProcess4()
CoinAbcTypeFactorization::pivot
int pivot(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn, CoinBigIndex pivotRowPosition, CoinBigIndex pivotColumnPosition, CoinFactorizationDouble *COIN_RESTRICT work, CoinSimplexUnsignedInt *COIN_RESTRICT workArea2, CoinSimplexInt increment2, int *COIN_RESTRICT markRow)
0 fine, -99 singular, 2 dense
CoinAbcTypeFactorization::updateColumnTransposeL
void updateColumnTransposeL(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column transpose (BTRANL).
CoinAbcTypeFactorization::numberBtranCounts_
CoinSimplexInt numberBtranCounts_
Definition CoinAbcBaseFactorization.hpp:1195
CoinAbcTypeFactorization::pivotOneOtherRow
bool pivotOneOtherRow(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
Pivots when just one other row so faster?
CoinAbcTypeFactorization::updateColumnTransposeLSparse
void updateColumnTransposeLSparse(CoinIndexedVector *region) const
Updates part of column transpose (BTRANL) when sparse (by Row).
CoinAbcTypeFactorization::maximumRows_
CoinSimplexInt maximumRows_
Maximum rows (ever) (here to use double alignment).
Definition CoinAbcBaseFactorization.hpp:1164
CoinAbcTypeFactorization::postProcess
virtual void postProcess(const CoinSimplexInt *sequence, CoinSimplexInt *pivotVariable)
Does post processing on valid factorization - putting variables on correct rows.
CoinAbcTypeFactorization::updateColumnU
void updateColumnU(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column (FTRANU).
CoinAbcTypeFactorization::indexColumnL
CoinSimplexInt * indexColumnL() const
Index of column in row for L.
Definition CoinAbcBaseFactorization.hpp:100
CoinAbcTypeFactorization::pivot
int pivot(CoinSimplexInt &pivotRow, CoinSimplexInt &pivotColumn, CoinBigIndex pivotRowPosition, CoinBigIndex pivotColumnPosition, int *COIN_RESTRICT markRow)
CoinAbcTypeFactorization::denseArea_
CoinFactorizationDoubleArrayWithLength denseArea_
Dense area.
Definition CoinAbcBaseFactorization.hpp:1126
CoinAbcTypeFactorization::permute
CoinSimplexInt * permute() const
Returns address of permute region.
Definition CoinAbcBaseFactorization.hpp:65
CoinAbcTypeFactorization::lengthR_
CoinBigIndex lengthR_
Length of R stuff.
Definition CoinAbcBaseFactorization.hpp:1024
CoinAbcTypeFactorization::CoinAbcTypeFactorization
CoinAbcTypeFactorization(const CoinAbcTypeFactorization &other)
Copy constructor.
CoinAbcTypeFactorization::indexRowLAddress_
CoinSimplexInt * indexRowLAddress_
Definition CoinAbcBaseFactorization.hpp:977
CoinAbcTypeFactorization::baseL_
CoinBigIndex baseL_
Base of L.
Definition CoinAbcBaseFactorization.hpp:1030
CoinAbcTypeFactorization::numberCompressions_
CoinBigIndex numberCompressions_
Number of compressions done.
Definition CoinAbcBaseFactorization.hpp:1145
CoinAbcTypeFactorization::unpack
void unpack(CoinIndexedVector *regionFrom, CoinIndexedVector *regionTo) const
CoinAbcTypeFactorization::indexColumnUAddress_
CoinSimplexInt * indexColumnUAddress_
Definition CoinAbcBaseFactorization.hpp:962
CoinAbcTypeFactorization::permute_
CoinIntArrayWithLength permute_
Permutation vector for pivot row order.
Definition CoinAbcBaseFactorization.hpp:1068
CoinAbcTypeFactorization::denseVector
double * denseVector(CoinIndexedVector &vector) const
Definition CoinAbcBaseFactorization.hpp:361
CoinAbcTypeFactorization::initialNumberRows_
CoinSimplexInt initialNumberRows_
Rows first time nonzero.
Definition CoinAbcBaseFactorization.hpp:1215
CoinAbcTypeFactorization::conditionNumber
CoinSimplexDouble conditionNumber() const
Condition number - product of pivots after factorization.
CoinAbcTypeFactorization::ftranCountAfterU_
double ftranCountAfterU_
Definition CoinAbcBaseFactorization.hpp:1153
CoinAbcTypeFactorization::updateColumnUDensish
void updateColumnUDensish(CoinIndexedVector *regionSparse) const
Updates part of column (FTRANU).
CoinAbcTypeFactorization::fromLongArray
void fromLongArray(CoinIndexedVector *vector) const
From a work array and dis-associate vector.
Definition CoinAbcBaseFactorization.hpp:377
CoinAbcTypeFactorization::indexColumnLAddress_
CoinSimplexInt * indexColumnLAddress_
Definition CoinAbcBaseFactorization.hpp:990
CoinAbcTypeFactorization::elementRowUAddress_
CoinFactorizationDouble * elementRowUAddress_
Definition CoinAbcBaseFactorization.hpp:958
CoinAbcTypeFactorization::replaceColumnPFI
CoinSimplexInt replaceColumnPFI(CoinIndexedVector *regionSparse, CoinSimplexInt pivotRow, CoinSimplexDouble alpha)
Replaces one Column to basis for PFI returns 0=OK, 1=Probably OK, 2=singular, 3=no room.
CoinAbcTypeFactorization::indexColumnL_
CoinIntArrayWithLength indexColumnL_
Index of column in row for L.
Definition CoinAbcBaseFactorization.hpp:1136
CoinAbcTypeFactorization::getRowSpaceIterate
bool getRowSpaceIterate(CoinSimplexInt iRow, CoinSimplexInt extraNeeded)
Gets space for one Row with given length while iterating, may have to do compression (returns True if...
CoinAbcTypeFactorization::resetStatistics
void resetStatistics()
Reset all sparsity etc statistics.
CoinAbcTypeFactorization::permuteAddress_
CoinSimplexInt * permuteAddress_
Definition CoinAbcBaseFactorization.hpp:939
CoinAbcTypeFactorization::checkReplacePart1
virtual double checkReplacePart1(CoinIndexedVector *regionSparse, CoinIndexedVector *partialUpdate, int pivotRow)
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial...
CoinAbcTypeFactorization::gotRCopy
bool gotRCopy() const
Definition CoinAbcBaseFactorization.hpp:1250
CoinAbcTypeFactorization::gotUCopy
bool gotUCopy() const
Definition CoinAbcBaseFactorization.hpp:1253
CoinAbcTypeFactorization::preProcess3
double preProcess3()
Return largest element.
CoinAbcTypeFactorization::updateColumnTransposePFI
void updateColumnTransposePFI(CoinIndexedVector *region) const
Updates part of column transpose PFI (BTRAN) (before rest).
CoinAbcTypeFactorization::updateColumnTransposeR
void updateColumnTransposeR(CoinIndexedVector *region, CoinAbcStatistics &statistics) const
Updates part of column transpose (BTRANR).
CoinAbcTypeFactorization::pivotLinkedBackwardsAddress_
CoinSimplexInt * pivotLinkedBackwardsAddress_
Definition CoinAbcBaseFactorization.hpp:982
CoinAbcTypeFactorization::markRowAddress_
CoinCheckZero * markRowAddress_
Definition CoinAbcBaseFactorization.hpp:974
CoinAbcTypeFactorization::goSparse
void goSparse()
makes a row copy of L for speed and to allow very sparse problems
Definition CoinAbcBaseFactorization.hpp:565
CoinAbcTypeFactorization::pivotColumnAddress_
CoinSimplexInt * pivotColumnAddress_
Definition CoinAbcBaseFactorization.hpp:938
CoinAbcTypeFactorization::nextColumn_
CoinIntArrayWithLength nextColumn_
Next Column in memory order.
Definition CoinAbcBaseFactorization.hpp:1081
CoinAbcTypeFactorization::factor
virtual CoinSimplexInt factor(AbcSimplex *model)
Does most of factorization.
CoinAbcTypeFactorization::firstCount_
CoinIntArrayWithLength firstCount_
First Row/Column with count of k, can tell which by offset - Rows then Columns.
Definition CoinAbcBaseFactorization.hpp:1079
CoinAbcTypeFactorization::elements
virtual CoinFactorizationDouble * elements() const
Returns array to put basis elements in.
Definition CoinAbcBaseFactorization.hpp:312
CoinAbcTypeFactorization::workArea2Address_
CoinSimplexUnsignedInt * workArea2Address_
Definition CoinAbcBaseFactorization.hpp:996
CoinAbcTypeFactorization::workArea_
CoinFactorizationDoubleArrayWithLength workArea_
First work area.
Definition CoinAbcBaseFactorization.hpp:1129
CoinAbcTypeFactorization::lastColumnAddress_
CoinSimplexInt * lastColumnAddress_
Definition CoinAbcBaseFactorization.hpp:969
CoinAbcTypeFactorization::maximumMaximumPivots_
CoinSimplexInt maximumMaximumPivots_
Maximum maximum pivots.
Definition CoinAbcBaseFactorization.hpp:1198
CoinAbcTypeFactorization::updateFullColumnTranspose
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one full column (BTRAN).
CoinAbcTypeFactorization::ftranFTAverageAfterU_
double ftranFTAverageAfterU_
Definition CoinAbcBaseFactorization.hpp:1172
CoinAbcTypeFactorization::ftranFullAverageAfterR_
double ftranFullAverageAfterR_
Definition CoinAbcBaseFactorization.hpp:1206
CoinAbcTypeFactorization::numberCompressions
CoinBigIndex numberCompressions() const
Number of compressions done.
Definition CoinAbcBaseFactorization.hpp:286
CoinAbcTypeFactorization::printRegion
void printRegion(const CoinIndexedVector &vector, const char *where) const
CoinAbcTypeFactorization::toLongArray
void toLongArray(CoinIndexedVector *vector, int which) const
To a work array and associate vector.
Definition CoinAbcBaseFactorization.hpp:375
CoinAbcTypeFactorization::saveColumnAddress_
CoinSimplexInt * saveColumnAddress_
Definition CoinAbcBaseFactorization.hpp:972
CoinAbcTypeFactorization::markRow_
CoinIntArrayWithLength markRow_
Marks rows to be updated.
Definition CoinAbcBaseFactorization.hpp:1091
CoinAbcTypeFactorization::clone
virtual CoinAbcAnyFactorization * clone() const
Clone.
CoinAbcTypeFactorization::clearArrays
void clearArrays()
Get rid of all memory.
Definition CoinAbcBaseFactorization.hpp:586
CoinAbcTypeFactorization::indexRowRAddress_
CoinSimplexInt * indexRowRAddress_
Row indices for R.
Definition CoinAbcBaseFactorization.hpp:989
CoinAbcTypeFactorization::updateColumnUDense
void updateColumnUDense(CoinIndexedVector *regionSparse) const
Updates part of column (FTRANU) when dense (i.e. do as inner products).
CoinAbcTypeFactorization::btranFullCountInput_
double btranFullCountInput_
To decide how to solve.
Definition CoinAbcBaseFactorization.hpp:1218
CoinAbcTypeFactorization::ftranFullCountInput_
double ftranFullCountInput_
To decide how to solve.
Definition CoinAbcBaseFactorization.hpp:1201
CoinAbcTypeFactorization::addLink
void addLink(CoinSimplexInt index, CoinSimplexInt count)
Adds a link in chain of equal counts.
Definition CoinAbcBaseFactorization.hpp:694
CoinAbcTypeFactorization::messageLevel
CoinSimplexInt messageLevel() const
Level of detail of messages.
Definition CoinAbcBaseFactorization.hpp:214
CoinAbcTypeFactorization::updateColumnTransposeLDensish
void updateColumnTransposeLDensish(CoinIndexedVector *region) const
Updates part of column transpose (BTRANL) when densish by column.
CoinAbcTypeFactorization::setDenseThreshold
void setDenseThreshold(CoinSimplexInt value)
Sets dense threshold.
Definition CoinAbcBaseFactorization.hpp:229
CoinAbcTypeFactorization::numberGoodL_
CoinSimplexInt numberGoodL_
Number factorized in L.
Definition CoinAbcBaseFactorization.hpp:1009
CoinAbcTypeFactorization::denseThreshold
CoinSimplexInt denseThreshold() const
Gets dense threshold.
Definition CoinAbcBaseFactorization.hpp:224
CoinAbcTypeFactorization::gotLCopy
bool gotLCopy() const
Definition CoinAbcBaseFactorization.hpp:1244
CoinAbcTypeFactorization::denseThreshold_
CoinSimplexInt denseThreshold_
Dense threshold (here to use double alignment).
Definition CoinAbcBaseFactorization.hpp:1181
CoinAbcTypeFactorization::checkConsistency
void checkConsistency()
Checks that row and column copies look OK.
CoinAbcTypeFactorization::pivotRegionAddress_
CoinFactorizationDouble * pivotRegionAddress_
Definition CoinAbcBaseFactorization.hpp:940
CoinAbcTypeFactorization::sparse_
CoinIntArrayWithLength sparse_
Sparse regions.
Definition CoinAbcBaseFactorization.hpp:1140
CoinAbcTypeFactorization::indexRowU_
CoinIntArrayWithLength indexRowU_
Row indices of U.
Definition CoinAbcBaseFactorization.hpp:1099
CoinAbcTypeFactorization::gotSparse
bool gotSparse() const
Definition CoinAbcBaseFactorization.hpp:1256
CoinAbcTypeFactorization::setNoGotSparse
void setNoGotSparse()
Definition CoinAbcBaseFactorization.hpp:1257
CoinAbcTypeFactorization::numberBtranFullCounts_
CoinSimplexInt numberBtranFullCounts_
Definition CoinAbcBaseFactorization.hpp:1229
CoinAbcTypeFactorization::updateColumnTransposeCpu
virtual void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (BTRAN).
CoinAbcTypeFactorization::numberInRow
virtual CoinSimplexInt * numberInRow() const
Number of entries in each row.
Definition CoinAbcBaseFactorization.hpp:302
CoinAbcTypeFactorization::firstCountAddress_
CoinSimplexInt * firstCountAddress_
Definition CoinAbcBaseFactorization.hpp:963
CoinAbcTypeFactorization::elementRAddress_
CoinFactorizationDouble * elementRAddress_
Elements of R.
Definition CoinAbcBaseFactorization.hpp:987
CoinAbcTypeFactorization::ftranAverageAfterU_
double ftranAverageAfterU_
Definition CoinAbcBaseFactorization.hpp:1156
CoinAbcTypeFactorization::startColumnRAddress_
CoinBigIndex * startColumnRAddress_
Definition CoinAbcBaseFactorization.hpp:985
CoinAbcTypeFactorization::replaceColumnPart3
virtual void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double alpha)
Replaces one Column to basis, partial update already in U.
CoinAbcTypeFactorization::numberElementsU
CoinBigIndex numberElementsU() const
Returns number in U area.
Definition CoinAbcBaseFactorization.hpp:256
CoinAbcTypeFactorization::updateColumnTransposeUByColumn
void updateColumnTransposeUByColumn(CoinIndexedVector *region, CoinSimplexInt smallestIndex) const
Updates part of column transpose (BTRANU) by column assumes index is sorted i.e.
CoinAbcTypeFactorization::btranCountAfterR_
double btranCountAfterR_
Definition CoinAbcBaseFactorization.hpp:1186
CoinAbcTypeFactorization::getColumnSpaceIterateR
bool getColumnSpaceIterateR(CoinSimplexInt iColumn, CoinFactorizationDouble value, CoinSimplexInt iRow)
getColumnSpaceIterateR.
CoinAbcTypeFactorization::CoinAbcTypeFactorization
CoinAbcTypeFactorization(const CoinFactorization &other)
Copy constructor.
CoinAbcTypeFactorization::lastRowAddress_
CoinSimplexInt * lastRowAddress_
Definition CoinAbcBaseFactorization.hpp:971
CoinAbcTypeFactorization::elementL_
CoinFactorizationDoubleArrayWithLength elementL_
Elements of L.
Definition CoinAbcBaseFactorization.hpp:1119
CoinAbcTypeFactorization::elementLAddress_
CoinFactorizationDouble * elementLAddress_
Definition CoinAbcBaseFactorization.hpp:976
CoinAbcTypeFactorization::updateColumn
virtual CoinSimplexInt updateColumn(CoinIndexedVector &regionSparse) const
This version has same effect as above with FTUpdate==false so number returned is always >=0.
CoinAbcTypeFactorization::gutsOfCopy
void gutsOfCopy(const CoinAbcTypeFactorization &other)
CoinAbcTypeFactorization::show_self
void show_self() const
Debug show object (shows one representation).
CoinAbcTypeFactorization::pivotColumnSingleton
void pivotColumnSingleton(CoinSimplexInt pivotRow, CoinSimplexInt pivotColumn)
Does one pivot on Column Singleton in factorization (can't return false).
CoinAbcTypeFactorization::starts
virtual CoinBigIndex * starts() const
Returns pivot row.
Definition CoinAbcBaseFactorization.hpp:297
CoinAbcStatistics
Definition CoinAbcCommonFactorization.hpp:32
scatterStruct
Definition CoinAbcHelperFunctions.hpp:549