Loading...
Searching...
No Matches
CoinAbcDenseFactorization.hpp
Go to the documentation of this file.
/* $Id$ */
// Copyright (C) 2008, 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
*/
#ifndef CoinAbcDenseFactorization_H
#define CoinAbcDenseFactorization_H
#include <iostream>
#include <string>
#include <cassert>
#include "CoinTypes.hpp"
#include "CoinAbcCommon.hpp"
#include "CoinIndexedVector.hpp"
class CoinPackedMatrix;
class CoinAbcAnyFactorization {
public:
CoinAbcAnyFactorization();
CoinAbcAnyFactorization(const CoinAbcAnyFactorization &other);
virtual ~CoinAbcAnyFactorization();
CoinAbcAnyFactorization &operator=(const CoinAbcAnyFactorization &other);
virtual CoinAbcAnyFactorization *clone() const = 0;
inline int status() const
{
return status_;
}
inline void setStatus(int value)
{
status_ = value;
}
inline int pivots() const
{
return numberPivots_;
}
#if ABC_PARALLEL == 2
inline void setParallelMode(int value)
{
parallelMode_ = value;
};
#endif
inline void setPivots(int value)
{
numberPivots_ = value;
}
inline int numberSlacks() const
{
return numberSlacks_;
}
inline void setNumberSlacks(int value)
{
numberSlacks_ = value;
}
inline void setNumberRows(int value)
{
numberRows_ = value;
}
inline int numberRows() const
{
return numberRows_;
}
inline CoinSimplexInt numberDense() const
{
return numberDense_;
}
inline int numberGoodColumns() const
{
return numberGoodU_;
}
inline void relaxAccuracyCheck(double value)
{
relaxCheck_ = value;
}
inline double getAccuracyCheck() const
{
return relaxCheck_;
}
inline int maximumPivots() const
{
return maximumPivots_;
}
virtual void maximumPivots(int value);
inline double pivotTolerance() const
{
return pivotTolerance_;
}
void pivotTolerance(double value);
inline double minimumPivotTolerance() const
{
return minimumPivotTolerance_;
}
void minimumPivotTolerance(double value);
virtual CoinFactorizationDouble *pivotRegion() const
{
return NULL;
}
inline double areaFactor() const
{
return areaFactor_;
}
inline void areaFactor(CoinSimplexDouble value)
{
areaFactor_ = value;
}
inline double zeroTolerance() const
{
return zeroTolerance_;
}
void zeroTolerance(double value);
virtual CoinFactorizationDouble *elements() const;
virtual int *pivotRow() const;
virtual CoinFactorizationDouble *workArea() const;
virtual int *intWorkArea() const;
virtual int *numberInRow() const;
virtual int *numberInColumn() const;
virtual CoinBigIndex *starts() const;
virtual int *permuteBack() const;
virtual void goSparse() {}
#ifndef NDEBUG
virtual inline void checkMarkArrays() const
{
}
#endif
inline int solveMode() const
{
return solveMode_;
}
inline void setSolveMode(int value)
{
solveMode_ = value;
}
virtual bool wantsTableauColumn() const;
virtual void setUsefulInformation(const int *info, int whereFrom);
virtual void clearArrays() {}
virtual int *indices() const = 0;
virtual int *permute() const = 0;
virtual int *pivotColumn() const;
virtual int numberElements() const = 0;
virtual void getAreas(int numberRows,
int numberColumns,
CoinBigIndex maximumL,
CoinBigIndex maximumU)
= 0;
virtual void preProcess() = 0;
virtual int factor(AbcSimplex *model) = 0;
#ifdef EARLY_FACTORIZE
virtual int factorize(AbcSimplex * /*model*/, CoinIndexedVector & /*stuff*/)
{
return -2;
}
#endif
virtual void postProcess(const int *sequence, int *pivotVariable) = 0;
virtual void makeNonSingular(int *sequence) = 0;
#if 0
virtual int checkReplace ( CoinIndexedVector * /*regionSparse*/,
int /*pivotRow*/,
double & /*pivotCheck*/,
double /*acceptablePivot = 1.0e-8*/)
{return 0;}
virtual int replaceColumn ( CoinIndexedVector * regionSparse,
int pivotRow,
double pivotCheck ,
bool skipBtranU=false,
double acceptablePivot=1.0e-8)=0;
#endif
#ifdef EARLY_FACTORIZE
virtual int replaceColumns(const AbcSimplex * /*model*/,
CoinIndexedVector & /*stuff*/,
int /*firstPivot*/, int /*lastPivot*/, bool /*cleanUp*/)
{
return -1;
}
#endif
#ifdef ABC_LONG_FACTORIZATION
virtual void clearHiddenArrays() {}
#endif
virtual
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double
checkReplacePart1(CoinIndexedVector * /*regionSparse*/,
int /*pivotRow*/)
{
return 0.0;
}
virtual
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double
checkReplacePart1(CoinIndexedVector * /*regionSparse*/,
CoinIndexedVector * /*partialUpdate*/,
int /*pivotRow*/)
{
return 0.0;
}
virtual void checkReplacePart1a(CoinIndexedVector * /* regionSparse */,
int /*pivotRow*/)
{
}
virtual double checkReplacePart1b(CoinIndexedVector * /*regionSparse*/,
int /*pivotRow*/)
{
return 0.0;
}
virtual int checkReplacePart2(int pivotRow,
double btranAlpha,
double ftranAlpha,
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double ftAlpha,
double acceptablePivot = 1.0e-8)
= 0;
virtual void replaceColumnPart3(const AbcSimplex *model,
CoinIndexedVector *regionSparse,
CoinIndexedVector *tableauColumn,
int pivotRow,
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double alpha)
= 0;
virtual void replaceColumnPart3(const AbcSimplex *model,
CoinIndexedVector *regionSparse,
CoinIndexedVector *tableauColumn,
CoinIndexedVector *partialUpdate,
int pivotRow,
#ifdef ABC_LONG_FACTORIZATION
long
#endif
double alpha)
= 0;
virtual int updateColumnFT(CoinIndexedVector &regionSparse) = 0;
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse) = 0;
virtual void updateColumnFTPart2(CoinIndexedVector &regionSparse) = 0;
virtual void updateColumnFT(CoinIndexedVector &regionSparseFT,
CoinIndexedVector &partialUpdate,
int which)
= 0;
virtual int updateColumn(CoinIndexedVector &regionSparse) const = 0;
virtual int updateTwoColumnsFT(CoinIndexedVector &regionFT,
CoinIndexedVector &regionOther)
= 0;
virtual int updateColumnTranspose(CoinIndexedVector &regionSparse) const = 0;
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const = 0;
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const = 0;
virtual void updateWeights(CoinIndexedVector &regionSparse) const = 0;
virtual void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const;
virtual void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const;
protected:
double pivotTolerance_;
double minimumPivotTolerance_;
double areaFactor_;
double zeroTolerance_;
//#ifndef slackValue_
#define slackValue2_ 1.0
//#endif
double relaxCheck_;
CoinBigIndex factorElements_;
int numberRows_;
int numberDense_;
int numberGoodU_;
int maximumPivots_;
int numberPivots_;
int numberSlacks_;
int status_;
int maximumRows_;
#if ABC_PARALLEL == 2
int parallelMode_;
#endif
int *pivotRow_;
CoinFactorizationDouble *elements_;
CoinFactorizationDouble *workArea_;
int solveMode_;
};
class CoinAbcDenseFactorization : public CoinAbcAnyFactorization {
friend void CoinAbcDenseFactorizationUnitTest(const std::string &mpsDir);
public:
CoinAbcDenseFactorization();
CoinAbcDenseFactorization(const CoinAbcDenseFactorization &other);
virtual ~CoinAbcDenseFactorization();
CoinAbcDenseFactorization &operator=(const CoinAbcDenseFactorization &other);
virtual CoinAbcAnyFactorization *clone() const;
virtual void getAreas(int numberRows,
int numberColumns,
CoinBigIndex maximumL,
CoinBigIndex maximumU);
virtual void preProcess();
virtual int factor(AbcSimplex *model);
virtual void postProcess(const int *sequence, int *pivotVariable);
virtual void makeNonSingular(int *sequence);
virtual inline int numberElements() const
{
return numberRows_ * (numberRows_ + numberPivots_);
}
double maximumCoefficient() const;
virtual int replaceColumn(CoinIndexedVector *regionSparse,
int pivotRow,
double pivotCheck,
bool skipBtranU = false,
double acceptablePivot = 1.0e-8);
virtual int checkReplacePart2(int pivotRow,
double 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)
{
replaceColumnPart3(model, regionSparse, tableauColumn, pivotRow, alpha);
}
virtual int updateColumnFT(CoinIndexedVector &regionSparse)
{
return updateColumn(regionSparse);
}
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse)
{
return updateColumn(regionSparse);
}
virtual void updateColumnFTPart2(CoinIndexedVector & /*regionSparse*/)
{
}
virtual void updateColumnFT(CoinIndexedVector &regionSparseFT, CoinIndexedVector & /*partialUpdate*/, int /*which*/)
{
updateColumnFT(regionSparseFT);
}
virtual int updateColumn(CoinIndexedVector &regionSparse) const;
virtual int updateTwoColumnsFT(CoinIndexedVector &regionFT,
CoinIndexedVector &regionOther);
virtual int updateColumnTranspose(CoinIndexedVector &regionSparse) const;
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const
{
updateColumn(regionSparse);
}
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const
{
updateColumnTranspose(regionSparse);
}
virtual void updateWeights(CoinIndexedVector &regionSparse) const;
inline void clearArrays()
{
gutsOfDestructor();
}
virtual inline int *indices() const
{
return reinterpret_cast< int * >(elements_ + numberRows_ * numberRows_);
}
virtual inline int *permute() const
{
return NULL; /*pivotRow_*/
;
}
void gutsOfDestructor();
void gutsOfInitialize();
void gutsOfCopy(const CoinAbcDenseFactorization &other);
protected:
int checkPivot(double saveFromU, double oldPivot) const;
protected:
CoinBigIndex maximumSpace_;
CoinSimplexInt maximumRowsAdjusted_;
};
#endif
/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
*/
AbcSimplex
#define AbcSimplex
Definition AbcWarmStart.hpp:16
CoinAbcCommon.hpp
CoinSimplexDouble
double CoinSimplexDouble
Definition CoinAbcCommon.hpp:21
CoinSimplexInt
int CoinSimplexInt
Definition CoinAbcCommon.hpp:22
CoinAbcAnyFactorization::clone
virtual CoinAbcAnyFactorization * clone() const =0
Clone.
CoinAbcAnyFactorization::setStatus
void setStatus(int value)
Sets status.
Definition CoinAbcDenseFactorization.hpp:50
CoinAbcAnyFactorization::intWorkArea
virtual int * intWorkArea() const
Returns int work area.
CoinAbcAnyFactorization::getAccuracyCheck
double getAccuracyCheck() const
Definition CoinAbcDenseFactorization.hpp:106
CoinAbcAnyFactorization::numberElements
virtual int numberElements() const =0
Total number of elements in factorization.
CoinAbcAnyFactorization::updateTwoColumnsFT
virtual int updateTwoColumnsFT(CoinIndexedVector &regionFT, CoinIndexedVector &regionOther)=0
does FTRAN on two unpacked columns
CoinAbcAnyFactorization::~CoinAbcAnyFactorization
virtual ~CoinAbcAnyFactorization()
Destructor.
CoinAbcAnyFactorization::maximumPivots_
int maximumPivots_
Maximum number of pivots before factorization.
Definition CoinAbcDenseFactorization.hpp:407
CoinAbcAnyFactorization::updateFullColumnTranspose
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const =0
Updates one column (BTRAN) from unpacked regionSparse.
CoinAbcAnyFactorization::setUsefulInformation
virtual void setUsefulInformation(const int *info, int whereFrom)
Useful information for factorization 0 - iteration number whereFrom is 0 for factorize and 1 for repl...
CoinAbcAnyFactorization::solveMode
int solveMode() const
Get solve mode e.g.
Definition CoinAbcDenseFactorization.hpp:176
CoinAbcAnyFactorization::preProcess
virtual void preProcess()=0
PreProcesses column ordered copy of basis.
CoinAbcAnyFactorization::numberGoodColumns
int numberGoodColumns() const
Number of good columns in factorization.
Definition CoinAbcDenseFactorization.hpp:97
CoinAbcAnyFactorization::factorElements_
CoinBigIndex factorElements_
Number of elements after factorization.
Definition CoinAbcDenseFactorization.hpp:399
CoinAbcAnyFactorization::zeroTolerance
double zeroTolerance() const
Zero tolerance.
Definition CoinAbcDenseFactorization.hpp:144
CoinAbcAnyFactorization::pivotTolerance
double pivotTolerance() const
Pivot tolerance.
Definition CoinAbcDenseFactorization.hpp:119
CoinAbcAnyFactorization::pivotTolerance
void pivotTolerance(double value)
CoinAbcAnyFactorization::pivots
int pivots() const
Returns number of pivots since factorization.
Definition CoinAbcDenseFactorization.hpp:55
CoinAbcAnyFactorization::zeroTolerance_
double zeroTolerance_
Zero tolerance.
Definition CoinAbcDenseFactorization.hpp:392
CoinAbcAnyFactorization::setNumberSlacks
void setNumberSlacks(int value)
Sets number of slacks.
Definition CoinAbcDenseFactorization.hpp:77
CoinAbcAnyFactorization::zeroTolerance
void zeroTolerance(double value)
CoinAbcAnyFactorization::checkReplacePart1b
virtual double checkReplacePart1b(CoinIndexedVector *, int)
Definition CoinAbcDenseFactorization.hpp:303
CoinAbcAnyFactorization::workArea
virtual CoinFactorizationDouble * workArea() const
Returns work area.
CoinAbcAnyFactorization::maximumPivots
int maximumPivots() const
Maximum number of pivots between factorizations.
Definition CoinAbcDenseFactorization.hpp:111
CoinAbcAnyFactorization::permute
virtual int * permute() const =0
Returns permute in.
CoinAbcAnyFactorization::checkReplacePart2
virtual int checkReplacePart2(int pivotRow, double btranAlpha, double ftranAlpha, double ftAlpha, double acceptablePivot=1.0e-8)=0
Checks if can replace one Column to basis, returns 0=OK, 1=Probably OK, 2=singular,...
CoinAbcAnyFactorization::updateWeights
virtual void updateWeights(CoinIndexedVector &regionSparse) const =0
Updates one column for dual steepest edge weights (FTRAN).
CoinAbcAnyFactorization::setNumberRows
void setNumberRows(int value)
Set number of Rows after factorization.
Definition CoinAbcDenseFactorization.hpp:82
CoinAbcAnyFactorization::pivotRegion
virtual CoinFactorizationDouble * pivotRegion() const
Definition CoinAbcDenseFactorization.hpp:130
CoinAbcAnyFactorization::elements
virtual CoinFactorizationDouble * elements() const
Returns array to put basis elements in.
CoinAbcAnyFactorization::clearArrays
virtual void clearArrays()
Get rid of all memory.
Definition CoinAbcDenseFactorization.hpp:196
CoinAbcAnyFactorization::pivotRow_
int * pivotRow_
Pivot row.
Definition CoinAbcDenseFactorization.hpp:420
CoinAbcAnyFactorization::setPivots
void setPivots(int value)
Sets number of pivots since factorization.
Definition CoinAbcDenseFactorization.hpp:67
CoinAbcAnyFactorization::numberInRow
virtual int * numberInRow() const
Number of entries in each row.
CoinAbcAnyFactorization::status_
int status_
Status of factorization.
Definition CoinAbcDenseFactorization.hpp:413
CoinAbcAnyFactorization::elements_
CoinFactorizationDouble * elements_
Elements of factorization and updates length is maxR*maxR+maxSpace will always be long enough so can ...
Definition CoinAbcDenseFactorization.hpp:425
CoinAbcAnyFactorization::setSolveMode
void setSolveMode(int value)
Set solve mode e.g.
Definition CoinAbcDenseFactorization.hpp:184
CoinAbcAnyFactorization::replaceColumnPart3
virtual void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double alpha)=0
Replaces one Column to basis, partial update already in U.
CoinAbcAnyFactorization::minimumPivotTolerance
void minimumPivotTolerance(double value)
CoinAbcAnyFactorization::areaFactor_
double areaFactor_
Area factor.
Definition CoinAbcDenseFactorization.hpp:390
CoinAbcAnyFactorization::updateColumnFTPart2
virtual void updateColumnFTPart2(CoinIndexedVector &regionSparse)=0
CoinAbcAnyFactorization::checkReplacePart1
virtual double checkReplacePart1(CoinIndexedVector *, CoinIndexedVector *, int)
Definition CoinAbcDenseFactorization.hpp:293
CoinAbcAnyFactorization::updateColumnFTPart1
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse)=0
CoinAbcAnyFactorization::relaxAccuracyCheck
void relaxAccuracyCheck(double value)
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
Definition CoinAbcDenseFactorization.hpp:102
CoinAbcAnyFactorization::factor
virtual int factor(AbcSimplex *model)=0
Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use number...
CoinAbcAnyFactorization::updateColumn
virtual int updateColumn(CoinIndexedVector &regionSparse) const =0
This version has same effect as above with FTUpdate==false so number returned is always >=0.
CoinAbcAnyFactorization::makeNonSingular
virtual void makeNonSingular(int *sequence)=0
Makes a non-singular basis by replacing variables.
CoinAbcAnyFactorization::CoinAbcAnyFactorization
CoinAbcAnyFactorization(const CoinAbcAnyFactorization &other)
Copy constructor.
CoinAbcAnyFactorization::wantsTableauColumn
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
CoinAbcAnyFactorization::CoinAbcAnyFactorization
CoinAbcAnyFactorization()
Default constructor.
CoinAbcAnyFactorization::numberSlacks
int numberSlacks() const
Returns number of slacks.
Definition CoinAbcDenseFactorization.hpp:72
CoinAbcAnyFactorization::minimumPivotTolerance_
double minimumPivotTolerance_
Minimum pivot tolerance.
Definition CoinAbcDenseFactorization.hpp:388
CoinAbcAnyFactorization::numberDense_
int numberDense_
Number of dense rows in factorization.
Definition CoinAbcDenseFactorization.hpp:403
CoinAbcAnyFactorization::updateColumnFT
virtual void updateColumnFT(CoinIndexedVector &regionSparseFT, CoinIndexedVector &partialUpdate, int which)=0
CoinAbcAnyFactorization::postProcess
virtual void postProcess(const int *sequence, int *pivotVariable)=0
Does post processing on valid factorization - putting variables on correct rows.
CoinAbcAnyFactorization::updateColumnFT
virtual int updateColumnFT(CoinIndexedVector &regionSparse)=0
Updates one column (FTRAN) from unpacked regionSparse Tries to do FT update number returned is negati...
CoinAbcAnyFactorization::pivotColumn
virtual int * pivotColumn() const
Returns pivotColumn or permute.
CoinAbcAnyFactorization::maximumPivots
virtual void maximumPivots(int value)
Set maximum pivots.
CoinAbcAnyFactorization::checkReplacePart1a
virtual void checkReplacePart1a(CoinIndexedVector *, int)
Definition CoinAbcDenseFactorization.hpp:299
CoinAbcAnyFactorization::maximumRows_
int maximumRows_
Maximum rows ever (i.e. use to copy arrays etc).
Definition CoinAbcDenseFactorization.hpp:415
CoinAbcAnyFactorization::operator=
CoinAbcAnyFactorization & operator=(const CoinAbcAnyFactorization &other)
= copy
CoinAbcAnyFactorization::areaFactor
double areaFactor() const
Area factor.
Definition CoinAbcDenseFactorization.hpp:135
CoinAbcAnyFactorization::updateColumnTranspose
virtual int updateColumnTranspose(CoinIndexedVector &regionSparse) const =0
Updates one column (BTRAN) from unpacked regionSparse.
CoinAbcAnyFactorization::numberRows
int numberRows() const
Number of Rows after factorization.
Definition CoinAbcDenseFactorization.hpp:87
CoinAbcAnyFactorization::numberPivots_
int numberPivots_
Number pivots since last factorization.
Definition CoinAbcDenseFactorization.hpp:409
CoinAbcAnyFactorization::status
int status() const
Returns status.
Definition CoinAbcDenseFactorization.hpp:45
CoinAbcAnyFactorization::numberSlacks_
int numberSlacks_
Number slacks.
Definition CoinAbcDenseFactorization.hpp:411
CoinAbcAnyFactorization::indices
virtual int * indices() const =0
Returns array to put basis indices in.
CoinAbcAnyFactorization::starts
virtual CoinBigIndex * starts() const
Returns array to put basis starts in.
CoinAbcAnyFactorization::updateFullColumn
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const =0
This version does FTRAN on array when indices not set up.
CoinAbcAnyFactorization::updateColumnTransposeCpu
virtual void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (BTRAN).
CoinAbcAnyFactorization::checkReplacePart1
virtual double checkReplacePart1(CoinIndexedVector *, int)
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial...
Definition CoinAbcDenseFactorization.hpp:283
CoinAbcAnyFactorization::numberDense
CoinSimplexInt numberDense() const
Number of dense rows after factorization.
Definition CoinAbcDenseFactorization.hpp:92
CoinAbcAnyFactorization::minimumPivotTolerance
double minimumPivotTolerance() const
Minimum pivot tolerance.
Definition CoinAbcDenseFactorization.hpp:125
CoinAbcAnyFactorization::solveMode_
int solveMode_
Solve mode e.g.
Definition CoinAbcDenseFactorization.hpp:432
CoinAbcAnyFactorization::numberGoodU_
int numberGoodU_
Number factorized in U (not row singletons).
Definition CoinAbcDenseFactorization.hpp:405
CoinAbcAnyFactorization::goSparse
virtual void goSparse()
Sees whether to go sparse.
Definition CoinAbcDenseFactorization.hpp:166
CoinAbcAnyFactorization::permuteBack
virtual int * permuteBack() const
Returns permute back.
CoinAbcAnyFactorization::relaxCheck_
double relaxCheck_
Relax check on accuracy in replaceColumn.
Definition CoinAbcDenseFactorization.hpp:397
CoinAbcAnyFactorization::updateColumnCpu
virtual void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (FTRAN).
CoinAbcAnyFactorization::numberInColumn
virtual int * numberInColumn() const
Number of entries in each column.
CoinAbcAnyFactorization::checkMarkArrays
virtual void checkMarkArrays() const
Definition CoinAbcDenseFactorization.hpp:168
CoinAbcAnyFactorization::pivotRow
virtual int * pivotRow() const
Returns pivot row.
CoinAbcAnyFactorization::numberRows_
int numberRows_
Number of Rows in factorization.
Definition CoinAbcDenseFactorization.hpp:401
CoinAbcAnyFactorization::pivotTolerance_
double pivotTolerance_
Pivot tolerance.
Definition CoinAbcDenseFactorization.hpp:386
CoinAbcAnyFactorization::areaFactor
void areaFactor(CoinSimplexDouble value)
Definition CoinAbcDenseFactorization.hpp:139
CoinAbcAnyFactorization::replaceColumnPart3
virtual void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, CoinIndexedVector *partialUpdate, int pivotRow, double alpha)=0
Replaces one Column to basis, partial update in vector.
CoinAbcAnyFactorization::workArea_
CoinFactorizationDouble * workArea_
Work area of numberRows_.
Definition CoinAbcDenseFactorization.hpp:427
CoinAbcAnyFactorization::getAreas
virtual void getAreas(int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)=0
Gets space for a factorization.
CoinAbcDenseFactorization::operator=
CoinAbcDenseFactorization & operator=(const CoinAbcDenseFactorization &other)
= copy
CoinAbcDenseFactorization::gutsOfCopy
void gutsOfCopy(const CoinAbcDenseFactorization &other)
The real work of copy.
CoinAbcDenseFactorization::updateFullColumnTranspose
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one column (BTRAN) from unpacked regionSparse.
Definition CoinAbcDenseFactorization.hpp:580
CoinAbcDenseFactorization::checkPivot
int checkPivot(double saveFromU, double oldPivot) const
Returns accuracy status of replaceColumn returns 0=OK, 1=Probably OK, 2=singular.
CoinAbcDenseFactorization::updateTwoColumnsFT
virtual int updateTwoColumnsFT(CoinIndexedVector &regionFT, CoinIndexedVector &regionOther)
does FTRAN on two unpacked columns
CoinAbcDenseFactorization::updateWeights
virtual void updateWeights(CoinIndexedVector &regionSparse) const
Updates one column for dual steepest edge weights (FTRAN).
CoinAbcDenseFactorization::clone
virtual CoinAbcAnyFactorization * clone() const
Clone.
CoinAbcDenseFactorization::maximumSpace_
CoinBigIndex maximumSpace_
Maximum length of iterating area.
Definition CoinAbcDenseFactorization.hpp:625
CoinAbcDenseFactorization::postProcess
virtual void postProcess(const int *sequence, int *pivotVariable)
Does post processing on valid factorization - putting variables on correct rows.
CoinAbcDenseFactorization::permute
virtual int * permute() const
Returns permute in.
Definition CoinAbcDenseFactorization.hpp:603
CoinAbcDenseFactorization::replaceColumn
virtual int replaceColumn(CoinIndexedVector *regionSparse, int pivotRow, double pivotCheck, bool skipBtranU=false, double acceptablePivot=1.0e-8)
Replaces one Column to basis, returns 0=OK, 1=Probably OK, 2=singular, 3=no room If skipBtranU is fal...
CoinAbcDenseFactorization::clearArrays
void clearArrays()
Get rid of all memory.
Definition CoinAbcDenseFactorization.hpp:593
CoinAbcDenseFactorization::updateFullColumn
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const
This version does FTRAN on array when indices not set up.
Definition CoinAbcDenseFactorization.hpp:574
CoinAbcDenseFactorization::updateColumnFT
virtual void updateColumnFT(CoinIndexedVector &regionSparseFT, CoinIndexedVector &, int)
Definition CoinAbcDenseFactorization.hpp:560
CoinAbcDenseFactorization::indices
virtual int * indices() const
Returns array to put basis indices in.
Definition CoinAbcDenseFactorization.hpp:598
CoinAbcDenseFactorization::gutsOfInitialize
void gutsOfInitialize()
The real work of constructor.
CoinAbcDenseFactorization::makeNonSingular
virtual void makeNonSingular(int *sequence)
Makes a non-singular basis by replacing variables.
CoinAbcDenseFactorization::CoinAbcDenseFactorization
CoinAbcDenseFactorization()
Default constructor.
CoinAbcDenseFactorization::maximumCoefficient
double maximumCoefficient() const
Returns maximum absolute value in factorization.
CoinAbcDenseFactorization::checkReplacePart2
virtual int checkReplacePart2(int pivotRow, double 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,...
CoinAbcDenseFactorization::CoinAbcDenseFactorizationUnitTest
friend void CoinAbcDenseFactorizationUnitTest(const std::string &mpsDir)
CoinAbcDenseFactorization::getAreas
virtual void getAreas(int numberRows, int numberColumns, CoinBigIndex maximumL, CoinBigIndex maximumU)
Gets space for a factorization.
CoinAbcDenseFactorization::updateColumnFT
virtual int updateColumnFT(CoinIndexedVector &regionSparse)
Updates one column (FTRAN) from unpacked regionSparse Tries to do FT update number returned is negati...
Definition CoinAbcDenseFactorization.hpp:549
CoinAbcDenseFactorization::factor
virtual int factor(AbcSimplex *model)
Does most of factorization returning status 0 - OK -99 - needs more memory -1 - singular - use number...
CoinAbcDenseFactorization::preProcess
virtual void preProcess()
PreProcesses column ordered copy of basis.
CoinAbcDenseFactorization::updateColumn
virtual int updateColumn(CoinIndexedVector &regionSparse) const
This version has same effect as above with FTUpdate==false so number returned is always >=0.
CoinAbcDenseFactorization::CoinAbcDenseFactorization
CoinAbcDenseFactorization(const CoinAbcDenseFactorization &other)
Copy constructor.
CoinAbcDenseFactorization::updateColumnFTPart1
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse)
Definition CoinAbcDenseFactorization.hpp:553
CoinAbcDenseFactorization::~CoinAbcDenseFactorization
virtual ~CoinAbcDenseFactorization()
Destructor.
CoinAbcDenseFactorization::numberElements
virtual int numberElements() const
Total number of elements in factorization.
Definition CoinAbcDenseFactorization.hpp:486
CoinAbcDenseFactorization::updateColumnTranspose
virtual int updateColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one column (BTRAN) from unpacked regionSparse.
CoinAbcDenseFactorization::replaceColumnPart3
virtual void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, CoinIndexedVector *, int pivotRow, double alpha)
Replaces one Column to basis, partial update in vector.
Definition CoinAbcDenseFactorization.hpp:528
CoinAbcDenseFactorization::updateColumnFTPart2
virtual void updateColumnFTPart2(CoinIndexedVector &)
Definition CoinAbcDenseFactorization.hpp:557
CoinAbcDenseFactorization::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.
CoinAbcDenseFactorization::maximumRowsAdjusted_
CoinSimplexInt maximumRowsAdjusted_
Use for array size to get multiple of 8.
Definition CoinAbcDenseFactorization.hpp:627
CoinAbcDenseFactorization::gutsOfDestructor
void gutsOfDestructor()
The real work of desstructor.