Clp  1.16.11
AbcSimplexFactorization.hpp
Go to the documentation of this file.
1 /* $Id: AbcSimplexFactorization.hpp 2078 2015-01-05 12:39:49Z forrest $ */
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others, Copyright (C) 2012, FasterCoin. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 
6 #ifndef AbcSimplexFactorization_H
7 #define AbcSimplexFactorization_H
8 
9 
10 #include "CoinPragma.hpp"
11 
12 #include "CoinAbcCommon.hpp"
13 #include "CoinAbcFactorization.hpp"
14 #include "AbcMatrix.hpp"
15 //#include "CoinAbcAnyFactorization.hpp"
16 #include "AbcSimplex.hpp"
17 #ifndef ABC_USE_COIN_FACTORIZATION
18 class ClpFactorization;
19 class CoinFactorization;
20 #else
21 #include "ClpFactorization.hpp"
22 #include "CoinFactorization.hpp"
23 #endif
24 
28 {
29 
30 public:
42  int factorize (AbcSimplex * model, int solveType, bool valuesPass);
43 #ifdef EARLY_FACTORIZE
44  inline int factorize (AbcSimplex * model, CoinIndexedVector & stuff)
46  { return coinAbcFactorization_->factorize(model,stuff);}
47 #endif
48 
49 
50 
58 
62  AbcSimplexFactorization(const AbcSimplexFactorization&, int denseIfSmaller = 0);
67 
68  /* **** below here is so can use networkish basis */
71 
76  inline
77 #ifdef ABC_LONG_FACTORIZATION
78  long
79 #endif
80  double checkReplacePart1 ( CoinIndexedVector * regionSparse,
81  int pivotRow)
82  {return coinAbcFactorization_->checkReplacePart1(regionSparse,pivotRow);}
87  inline
88 #ifdef ABC_LONG_FACTORIZATION
89  long
90 #endif
91  double checkReplacePart1 ( CoinIndexedVector * regionSparse,
92  CoinIndexedVector * partialUpdate,
93  int pivotRow)
94  {return coinAbcFactorization_->checkReplacePart1(regionSparse,partialUpdate,pivotRow);}
95 #ifdef MOVE_REPLACE_PART1A
96 
100  inline void checkReplacePart1a ( CoinIndexedVector * regionSparse,
101  int pivotRow)
102  {coinAbcFactorization_->checkReplacePart1a(regionSparse,pivotRow);}
103  inline double checkReplacePart1b (CoinIndexedVector * regionSparse,
104  int pivotRow)
105  {return coinAbcFactorization_->checkReplacePart1b(regionSparse,pivotRow);}
106 #endif
107 
109  inline int checkReplacePart2 ( int pivotRow,
110  double btranAlpha,
111  double ftranAlpha,
112 #ifdef ABC_LONG_FACTORIZATION
113  long
114 #endif
115  double ftAlpha)
116  {return coinAbcFactorization_->checkReplacePart2(pivotRow,btranAlpha,ftranAlpha,ftAlpha);}
117 #ifdef ABC_LONG_FACTORIZATION
118  inline void clearHiddenArrays()
120  { coinAbcFactorization_->clearHiddenArrays();}
121 #endif
122 
124  void replaceColumnPart3 ( const AbcSimplex * model,
125  CoinIndexedVector * regionSparse,
126  CoinIndexedVector * tableauColumn,
127  int pivotRow,
128 #ifdef ABC_LONG_FACTORIZATION
129  long
130 #endif
131  double alpha );
134  void replaceColumnPart3 ( const AbcSimplex * model,
135  CoinIndexedVector * regionSparse,
136  CoinIndexedVector * tableauColumn,
137  CoinIndexedVector * partialUpdate,
138  int pivotRow,
139 #ifdef ABC_LONG_FACTORIZATION
140  long
141 #endif
142  double alpha );
143 #ifdef EARLY_FACTORIZE
144  inline int replaceColumns ( const AbcSimplex * model,
146  CoinIndexedVector & stuff,
147  int firstPivot,int lastPivot,bool cleanUp)
148  { return coinAbcFactorization_->replaceColumns(model,stuff,firstPivot,lastPivot,cleanUp);}
149 #endif
150 
151 
155 #if 0
156 
160  int updateColumnFT ( CoinIndexedVector * regionSparse,
161  CoinIndexedVector * regionSparse2);
164  int updateColumn ( CoinIndexedVector * regionSparse,
165  CoinIndexedVector * regionSparse2) const;
171  int updateTwoColumnsFT ( CoinIndexedVector * regionSparse1,
172  CoinIndexedVector * regionSparse2,
173  CoinIndexedVector * regionSparse3) ;
176  int updateColumnTranspose ( CoinIndexedVector * regionSparse,
177  CoinIndexedVector * regionSparse2) const;
178 #endif
179 
182  inline int updateColumnFT ( CoinIndexedVector & regionSparseFT)
183  { return coinAbcFactorization_->updateColumnFT(regionSparseFT);}
184  inline int updateColumnFTPart1 ( CoinIndexedVector & regionSparseFT)
185  { return coinAbcFactorization_->updateColumnFTPart1(regionSparseFT);}
186  inline void updateColumnFTPart2 ( CoinIndexedVector & regionSparseFT)
187  { coinAbcFactorization_->updateColumnFTPart2(regionSparseFT);}
191  inline void updateColumnFT ( CoinIndexedVector & regionSparseFT,
192  CoinIndexedVector & partialUpdate,
193  int which)
194  { coinAbcFactorization_->updateColumnFT(regionSparseFT,partialUpdate,which);}
196  inline int updateColumn ( CoinIndexedVector & regionSparse) const
197  { return coinAbcFactorization_->updateColumn(regionSparse);}
202  inline int updateTwoColumnsFT ( CoinIndexedVector & regionSparseFT,
203  CoinIndexedVector & regionSparseOther)
204  { return coinAbcFactorization_->updateTwoColumnsFT(regionSparseFT,regionSparseOther);}
206  inline int updateColumnTranspose ( CoinIndexedVector & regionSparse) const
207  { return coinAbcFactorization_->updateColumnTranspose(regionSparse);}
209  inline void updateColumnCpu ( CoinIndexedVector & regionSparse,int whichCpu) const
210 #ifndef ABC_USE_COIN_FACTORIZATION
211  { coinAbcFactorization_->updateColumnCpu(regionSparse,whichCpu);}
212 #else
213  { coinAbcFactorization_->updateColumn(regionSparse);}
214 #endif
215 
216  inline void updateColumnTransposeCpu ( CoinIndexedVector & regionSparse,int whichCpu) const
217 #ifndef ABC_USE_COIN_FACTORIZATION
218  { coinAbcFactorization_->updateColumnTransposeCpu(regionSparse,whichCpu);}
219 #else
220  { coinAbcFactorization_->updateColumnTranspose(regionSparse);}
221 #endif
222 
223  inline void updateFullColumn ( CoinIndexedVector & regionSparse) const
224  { coinAbcFactorization_->updateFullColumn(regionSparse);}
226  inline void updateFullColumnTranspose ( CoinIndexedVector & regionSparse) const
227  { coinAbcFactorization_->updateFullColumnTranspose(regionSparse);}
229  void updateWeights ( CoinIndexedVector & regionSparse) const
230 #ifndef ABC_USE_COIN_FACTORIZATION
231  { coinAbcFactorization_->updateWeights(regionSparse);}
232 #else
233  { coinAbcFactorization_->updateColumn(regionSparse);}
234 #endif
235 
236 
238  inline int numberElements ( ) const {
240  return coinAbcFactorization_->numberElements() ;
241  }
243  inline int maximumPivots ( ) const {
244  return coinAbcFactorization_->maximumPivots() ;
245  }
247  inline void maximumPivots ( int value) {
248  coinAbcFactorization_->maximumPivots(value);
249  }
251  inline bool usingFT() const
252  { return !coinAbcFactorization_->wantsTableauColumn();}
254  inline int pivots ( ) const {
255  return coinAbcFactorization_->pivots() ;
256  }
258  inline void setModel(AbcSimplex * model)
259  {model_ = model;}
261  inline void setPivots ( int value ) const {
262  coinAbcFactorization_->setPivots(value) ;
263  }
265  inline double areaFactor ( ) const {
266  return coinAbcFactorization_->areaFactor() ;
267  }
269  inline void areaFactor ( double value) {
270  coinAbcFactorization_->areaFactor(value);
271  }
273  inline double zeroTolerance ( ) const {
274  return coinAbcFactorization_->zeroTolerance() ;
275  }
277  inline void zeroTolerance ( double value) {
278  coinAbcFactorization_->zeroTolerance(value);
279  }
283  inline int status ( ) const {
284  return coinAbcFactorization_->status() ;
285  }
287  inline void setStatus ( int value) {
288  coinAbcFactorization_->setStatus(value) ;
289  }
290 #if ABC_PARALLEL==2
291  inline void setParallelMode(int value)
293  {coinAbcFactorization_->setParallelMode(value);};
294 #endif
295  inline int numberDense() const {
297  return coinAbcFactorization_->numberDense() ;
298  }
299  bool timeToRefactorize() const;
300 #if CLP_FACTORIZATION_NEW_TIMING>1
301  void statsRefactor(char when) const;
302 #endif
303  inline void clearArrays() {
305  coinAbcFactorization_->clearArrays();
306  }
308  inline int numberRows ( ) const {
309  return coinAbcFactorization_->numberRows() ;
310  }
312  inline int numberSlacks() const
313  { return numberSlacks_;}
315  inline double pivotTolerance ( ) const {
316  return coinAbcFactorization_->pivotTolerance();
317  }
319  inline void pivotTolerance ( double value) {
320  coinAbcFactorization_->pivotTolerance(value);
321  }
323  inline double minimumPivotTolerance ( ) const {
324  return coinAbcFactorization_->minimumPivotTolerance();
325  }
327  inline void minimumPivotTolerance ( double value) {
328  coinAbcFactorization_->minimumPivotTolerance(value);
329  }
331  inline double * pivotRegion() const
332  { return coinAbcFactorization_->pivotRegion();}
334  //inline void relaxAccuracyCheck(double /*value*/) {
335  //abort();
336  //}
338  inline void almostDestructor() {
339  coinAbcFactorization_->clearArrays();
340  }
342  void setDenseThreshold(int number);
343  int getDenseThreshold() const;
345  void forceOtherFactorization(int which);
349  inline int goDenseThreshold() const {
350  return goDenseThreshold_;
351  }
353  inline void setGoDenseThreshold(int value) {
354  goDenseThreshold_ = value;
355  }
357  inline int goSmallThreshold() const {
358  return goSmallThreshold_;
359  }
361  inline void setGoSmallThreshold(int value) {
362  goSmallThreshold_ = value;
363  }
365  inline int goLongThreshold() const {
366  return goLongThreshold_;
367  }
369  inline void setGoLongThreshold(int value) {
370  goLongThreshold_ = value;
371  }
373  inline int typeOfFactorization() const
374  { return forceB_;}
376  void synchronize(const ClpFactorization * otherFactorization,const AbcSimplex * model);
378 
382  void goSparse();
383 #ifndef NDEBUG
384 #ifndef ABC_USE_COIN_FACTORIZATION
385  inline void checkMarkArrays() const
386  { coinAbcFactorization_->checkMarkArrays();}
387 #else
388  inline void checkMarkArrays() const
389  { }
390 #endif
391 #endif
392  inline bool needToReorder() const {abort();return true;}
395 #ifndef ABC_USE_COIN_FACTORIZATION
397  { return coinAbcFactorization_;}
398 #else
399  CoinFactorization * factorization() const
400  { return coinAbcFactorization_;}
401 #endif
402 
403 
405 private:
406 
409  AbcSimplex * model_;
412 #ifndef ABC_USE_COIN_FACTORIZATION
413  CoinAbcAnyFactorization * coinAbcFactorization_;
414 #else
415  CoinFactorization * coinAbcFactorization_;
416 #endif
417 #ifdef CLP_FACTORIZATION_NEW_TIMING
418  mutable double shortestAverage_;
420  mutable double totalInR_;
421  mutable double totalInIncreasingU_;
422  mutable int endLengthU_;
423  mutable int lastNumberPivots_;
424  mutable int effectiveStartNumberU_;
425 #endif
426  int forceB_;
429  int goDenseThreshold_;
431  int goSmallThreshold_;
433  int goLongThreshold_;
435  int numberSlacks_;
437 };
438 
439 #endif
ClpFactorization
This just implements CoinFactorization when an ClpMatrixBase object is passed.
Definition: ClpFactorization.hpp:39
AbcSimplexFactorization::areaFactor
void areaFactor(double value)
Set whether larger areas needed.
Definition: AbcSimplexFactorization.hpp:269
AbcSimplexFactorization::updateColumnTranspose
int updateColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one column (BTRAN)
Definition: AbcSimplexFactorization.hpp:206
AbcSimplexFactorization::replaceColumnPart3
void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, CoinIndexedVector *partialUpdate, int pivotRow, double alpha)
Replaces one Column to basis, partial update in vector.
AbcSimplexFactorization::~AbcSimplexFactorization
~AbcSimplexFactorization()
Destructor.
AbcSimplexFactorization::timeToRefactorize
bool timeToRefactorize() const
CoinAbcAnyFactorization::updateColumnTranspose
virtual int updateColumnTranspose(CoinIndexedVector &regionSparse) const =0
Updates one column (BTRAN) from unpacked regionSparse.
AbcSimplexFactorization::pivots
int pivots() const
Returns number of pivots since factorization.
Definition: AbcSimplexFactorization.hpp:254
CoinAbcAnyFactorization
Abstract base class which also has some scalars so can be used from Dense or Simp.
Definition: CoinAbcDenseFactorization.hpp:24
AbcSimplexFactorization::numberSlacks
int numberSlacks() const
Number of slacks at last factorization.
Definition: AbcSimplexFactorization.hpp:312
CoinAbcAnyFactorization::numberDense
CoinSimplexInt numberDense() const
Number of dense rows after factorization.
Definition: CoinAbcDenseFactorization.hpp:80
CoinAbcAnyFactorization::numberRows
int numberRows() const
Number of Rows after factorization.
Definition: CoinAbcDenseFactorization.hpp:76
AbcSimplexFactorization::factorize
int factorize(AbcSimplex *model, int solveType, bool valuesPass)
When part of LP - given by basic variables.
AbcSimplexFactorization::updateColumnFTPart2
void updateColumnFTPart2(CoinIndexedVector &regionSparseFT)
Definition: AbcSimplexFactorization.hpp:186
CoinAbcAnyFactorization::updateFullColumn
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const =0
This version does FTRAN on array when indices not set up.
CoinAbcAnyFactorization::checkMarkArrays
virtual void checkMarkArrays() const
Definition: CoinAbcDenseFactorization.hpp:142
CoinAbcAnyFactorization::areaFactor
double areaFactor() const
Area factor.
Definition: CoinAbcDenseFactorization.hpp:112
AbcSimplexFactorization::numberElements
int numberElements() const
Total number of elements in factorization.
Definition: AbcSimplexFactorization.hpp:239
CoinAbcAnyFactorization::updateColumnFT
virtual int updateColumnFT(CoinIndexedVector &regionSparse)=0
Updates one column (FTRAN) from unpacked regionSparse Tries to do FT update number returned is negati...
AbcSimplexFactorization::needToReorder
bool needToReorder() const
Says whether to redo pivot order.
Definition: AbcSimplexFactorization.hpp:393
CoinAbcAnyFactorization::pivotRegion
virtual CoinFactorizationDouble * pivotRegion() const
Definition: CoinAbcDenseFactorization.hpp:109
AbcSimplexFactorization::saferTolerances
void saferTolerances(double zeroTolerance, double pivotTolerance)
Set tolerances to safer of existing and given.
AbcSimplexFactorization::setStatus
void setStatus(int value)
Sets status.
Definition: AbcSimplexFactorization.hpp:287
AbcSimplexFactorization::usingFT
bool usingFT() const
Returns true if doing FT.
Definition: AbcSimplexFactorization.hpp:251
AbcSimplexFactorization::numberRows
int numberRows() const
Number of Rows after factorization.
Definition: AbcSimplexFactorization.hpp:308
CoinAbcAnyFactorization::clearArrays
virtual void clearArrays()
Get rid of all memory.
Definition: CoinAbcDenseFactorization.hpp:164
AbcSimplexFactorization::operator=
AbcSimplexFactorization & operator=(const AbcSimplexFactorization &)
AbcSimplexFactorization::typeOfFactorization
int typeOfFactorization() const
Returns type.
Definition: AbcSimplexFactorization.hpp:373
AbcSimplexFactorization::areaFactor
double areaFactor() const
Whether larger areas needed.
Definition: AbcSimplexFactorization.hpp:265
AbcSimplexFactorization::updateColumnFT
int updateColumnFT(CoinIndexedVector &regionSparseFT)
Updates one column (FTRAN) Tries to do FT update number returned is negative if no room.
Definition: AbcSimplexFactorization.hpp:182
AbcSimplexFactorization::updateColumnFT
void updateColumnFT(CoinIndexedVector &regionSparseFT, CoinIndexedVector &partialUpdate, int which)
Updates one column (FTRAN) Tries to do FT update puts partial update in vector.
Definition: AbcSimplexFactorization.hpp:191
AbcSimplexFactorization::setGoLongThreshold
void setGoLongThreshold(int value)
Set switch to long/ordered if number rows >= this.
Definition: AbcSimplexFactorization.hpp:369
AbcSimplexFactorization::zeroTolerance
void zeroTolerance(double value)
Set zero tolerance.
Definition: AbcSimplexFactorization.hpp:277
AbcSimplexFactorization::synchronize
void synchronize(const ClpFactorization *otherFactorization, const AbcSimplex *model)
Synchronize stuff.
CoinAbcAnyFactorization::status
int status() const
Returns status.
Definition: CoinAbcDenseFactorization.hpp:47
ClpFactorization.hpp
AbcSimplexFactorization::getDenseThreshold
int getDenseThreshold() const
AbcSimplexFactorization::updateColumnFTPart1
int updateColumnFTPart1(CoinIndexedVector &regionSparseFT)
Definition: AbcSimplexFactorization.hpp:184
AbcSimplexFactorization::checkReplacePart1
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...
Definition: AbcSimplexFactorization.hpp:91
AbcSimplexFactorization::updateFullColumn
void updateFullColumn(CoinIndexedVector &regionSparse) const
Updates one full column (FTRAN)
Definition: AbcSimplexFactorization.hpp:223
AbcSimplexFactorization::pivotTolerance
double pivotTolerance() const
Pivot tolerance.
Definition: AbcSimplexFactorization.hpp:315
AbcSimplexFactorization::updateTwoColumnsFT
int updateTwoColumnsFT(CoinIndexedVector &regionSparseFT, CoinIndexedVector &regionSparseOther)
Updates one column (FTRAN) from regionFT Tries to do FT update number returned is negative if no room...
Definition: AbcSimplexFactorization.hpp:202
AbcSimplexFactorization::pivotTolerance
void pivotTolerance(double value)
Set pivot tolerance.
Definition: AbcSimplexFactorization.hpp:319
AbcSimplexFactorization::goLongThreshold
int goLongThreshold() const
Get switch to long/ordered if number rows >= this.
Definition: AbcSimplexFactorization.hpp:365
CoinAbcAnyFactorization::updateFullColumnTranspose
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const =0
Updates one column (BTRAN) from unpacked regionSparse.
AbcSimplexFactorization
This just implements AbcFactorization when an AbcMatrix object is passed.
Definition: AbcSimplexFactorization.hpp:28
AbcSimplexFactorization::checkReplacePart2
int checkReplacePart2(int pivotRow, double btranAlpha, double ftranAlpha, double ftAlpha)
Checks if can replace one Column to basis, returns 0=OK, 1=Probably OK, 2=singular,...
Definition: AbcSimplexFactorization.hpp:109
AbcSimplexFactorization::goSparse
void goSparse()
makes a row copy of L for speed and to allow very sparse problems
CoinAbcAnyFactorization::updateTwoColumnsFT
virtual int updateTwoColumnsFT(CoinIndexedVector &regionFT, CoinIndexedVector &regionOther)=0
does FTRAN on two unpacked columns
CoinAbcAnyFactorization::updateColumnFTPart1
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse)=0
AbcSimplexFactorization::AbcSimplexFactorization
AbcSimplexFactorization(int numberRows=0)
Default constructor.
AbcMatrix.hpp
AbcSimplexFactorization::clearArrays
void clearArrays()
Get rid of all memory.
Definition: AbcSimplexFactorization.hpp:304
CoinAbcFactorization.hpp
CoinAbcAnyFactorization::zeroTolerance
double zeroTolerance() const
Zero tolerance.
Definition: CoinAbcDenseFactorization.hpp:119
AbcSimplexFactorization::forceOtherFactorization
void forceOtherFactorization(int which)
If nonzero force use of 1,dense 2,small 3,long.
AbcSimplexFactorization::replaceColumnPart3
void replaceColumnPart3(const AbcSimplex *model, CoinIndexedVector *regionSparse, CoinIndexedVector *tableauColumn, int pivotRow, double alpha)
Replaces one Column to basis, partial update already in U.
AbcSimplexFactorization::setModel
void setModel(AbcSimplex *model)
Sets model.
Definition: AbcSimplexFactorization.hpp:258
CoinAbcAnyFactorization::updateWeights
virtual void updateWeights(CoinIndexedVector &regionSparse) const =0
Updates one column for dual steepest edge weights (FTRAN)
AbcSimplex
Definition: AbcSimplex.hpp:62
CoinAbcAnyFactorization::pivots
int pivots() const
Returns number of pivots since factorization.
Definition: CoinAbcDenseFactorization.hpp:54
CoinAbcAnyFactorization::minimumPivotTolerance
double minimumPivotTolerance() const
Minimum pivot tolerance.
Definition: CoinAbcDenseFactorization.hpp:105
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::wantsTableauColumn
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
AbcSimplexFactorization::setGoSmallThreshold
void setGoSmallThreshold(int value)
Set switch to small if number rows <= this.
Definition: AbcSimplexFactorization.hpp:361
AbcSimplexFactorization::updateFullColumnTranspose
void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one full column (BTRAN)
Definition: AbcSimplexFactorization.hpp:226
CoinAbcAnyFactorization::pivotTolerance
double pivotTolerance() const
Pivot tolerance.
Definition: CoinAbcDenseFactorization.hpp:100
AbcSimplexFactorization::checkMarkArrays
void checkMarkArrays() const
Definition: AbcSimplexFactorization.hpp:385
AbcSimplexFactorization::maximumPivots
void maximumPivots(int value)
Set maximum number of pivots between factorizations.
Definition: AbcSimplexFactorization.hpp:247
AbcSimplexFactorization::setFactorization
void setFactorization(AbcSimplexFactorization &rhs)
Sets factorization.
AbcSimplexFactorization::setPivots
void setPivots(int value) const
Sets number of pivots since factorization.
Definition: AbcSimplexFactorization.hpp:261
AbcSimplexFactorization::factorization
CoinAbcAnyFactorization * factorization() const
Pointer to factorization.
Definition: AbcSimplexFactorization.hpp:396
AbcSimplexFactorization::maximumPivots
int maximumPivots() const
Maximum number of pivots between factorizations.
Definition: AbcSimplexFactorization.hpp:243
AbcSimplexFactorization::minimumPivotTolerance
double minimumPivotTolerance() const
Minimum pivot tolerance.
Definition: AbcSimplexFactorization.hpp:323
AbcSimplexFactorization::status
int status() const
Returns status.
Definition: AbcSimplexFactorization.hpp:283
AbcSimplexFactorization::zeroTolerance
double zeroTolerance() const
Zero tolerance.
Definition: AbcSimplexFactorization.hpp:273
AbcSimplexFactorization::setGoDenseThreshold
void setGoDenseThreshold(int value)
Set switch to dense if number rows <= this.
Definition: AbcSimplexFactorization.hpp:353
AbcSimplex.hpp
CoinAbcAnyFactorization::updateColumnFTPart2
virtual void updateColumnFTPart2(CoinIndexedVector &regionSparse)=0
AbcSimplexFactorization::updateColumnCpu
void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (FTRAN)
Definition: AbcSimplexFactorization.hpp:209
CoinAbcAnyFactorization::updateColumnTransposeCpu
virtual void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (BTRAN)
AbcSimplexFactorization::updateColumnTransposeCpu
void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (BTRAN)
Definition: AbcSimplexFactorization.hpp:216
CoinAbcAnyFactorization::maximumPivots
int maximumPivots() const
Maximum number of pivots between factorizations.
Definition: CoinAbcDenseFactorization.hpp:93
AbcSimplexFactorization::updateWeights
void updateWeights(CoinIndexedVector &regionSparse) const
Updates one column for dual steepest edge weights (FTRAN)
Definition: AbcSimplexFactorization.hpp:229
AbcSimplexFactorization::checkReplacePart1
double checkReplacePart1(CoinIndexedVector *regionSparse, int pivotRow)
Checks if can replace one Column to basis, returns update alpha Fills in region for use later partial...
Definition: AbcSimplexFactorization.hpp:80
AbcSimplexFactorization::numberDense
int numberDense() const
Returns number of dense rows.
Definition: AbcSimplexFactorization.hpp:296
CoinAbcAnyFactorization::setStatus
void setStatus(int value)
Sets status.
Definition: CoinAbcDenseFactorization.hpp:51
AbcSimplexFactorization::setDenseThreshold
void setDenseThreshold(int number)
So we can temporarily switch off dense.
AbcSimplexFactorization::updateColumn
int updateColumn(CoinIndexedVector &regionSparse) const
Updates one column (FTRAN)
Definition: AbcSimplexFactorization.hpp:196
AbcSimplexFactorization::goSmallThreshold
int goSmallThreshold() const
Get switch to small if number rows <= this.
Definition: AbcSimplexFactorization.hpp:357
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.
CoinAbcCommon.hpp
AbcSimplexFactorization::almostDestructor
void almostDestructor()
Allows change of pivot accuracy check 1.0 == none >1.0 relaxed.
Definition: AbcSimplexFactorization.hpp:338
CoinAbcAnyFactorization::updateColumnCpu
virtual void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (FTRAN)
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:245
CoinAbcAnyFactorization::checkReplacePart1a
virtual void checkReplacePart1a(CoinIndexedVector *, int)
Definition: CoinAbcDenseFactorization.hpp:256
AbcSimplexFactorization::AbcSimplexFactorization
AbcSimplexFactorization(const AbcSimplexFactorization &, int denseIfSmaller=0)
The copy constructor.
AbcSimplexFactorization::minimumPivotTolerance
void minimumPivotTolerance(double value)
Set minimum pivot tolerance.
Definition: AbcSimplexFactorization.hpp:327
CoinAbcAnyFactorization::numberElements
virtual int numberElements() const =0
Total number of elements in factorization.
AbcSimplexFactorization::goDenseOrSmall
void goDenseOrSmall(int numberRows)
Go over to dense code.
AbcSimplexFactorization::pivotRegion
double * pivotRegion() const
pivot region
Definition: AbcSimplexFactorization.hpp:331
CoinAbcAnyFactorization::setPivots
void setPivots(int value)
Sets number of pivots since factorization.
Definition: CoinAbcDenseFactorization.hpp:63
CoinAbcAnyFactorization::checkReplacePart1b
virtual double checkReplacePart1b(CoinIndexedVector *, int)
Definition: CoinAbcDenseFactorization.hpp:259
AbcSimplexFactorization::goDenseThreshold
int goDenseThreshold() const
Get switch to dense if number rows <= this.
Definition: AbcSimplexFactorization.hpp:349