Cgl 0.60.2

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AbcSimplexFactorization.hpp
Go to the documentation of this file.
1 /* $Id: AbcSimplexFactorization.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
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 #include "CoinPragma.hpp"
10
11 #include "CoinAbcCommon.hpp"
12 #include "CoinAbcFactorization.hpp"
13 #include "AbcMatrix.hpp"
14 //#include "CoinAbcAnyFactorization.hpp"
15 #include "AbcSimplex.hpp"
16 #ifndef ABC_USE_COIN_FACTORIZATION
17 class ClpFactorization;
18 class CoinFactorization;
19 #else
20 #include "ClpFactorization.hpp"
21 #include "CoinFactorization.hpp"
22 #endif
23
26 class AbcSimplexFactorization {
27
28 public:
40 int factorize(AbcSimplex *model, int solveType, bool valuesPass);
41 #ifdef EARLY_FACTORIZE
42 inline int factorize(AbcSimplex *model, CoinIndexedVector &stuff)
44 {
45 return coinAbcFactorization_->factorize(model, stuff);
46 }
47 #endif
48
49
53 AbcSimplexFactorization(int numberRows = 0);
55 ~AbcSimplexFactorization();
57
61 AbcSimplexFactorization(const AbcSimplexFactorization &, int denseIfSmaller = 0);
62 AbcSimplexFactorization &operator=(const AbcSimplexFactorization &);
64 void setFactorization(AbcSimplexFactorization &rhs);
66
67 /* **** below here is so can use networkish basis */
70
75 inline
76 #ifdef ABC_LONG_FACTORIZATION
77 long
78 #endif
79 double
80 checkReplacePart1(CoinIndexedVector *regionSparse,
81 int pivotRow)
82 {
83 return coinAbcFactorization_->checkReplacePart1(regionSparse, pivotRow);
84 }
89 inline
90 #ifdef ABC_LONG_FACTORIZATION
91 long
92 #endif
93 double
94 checkReplacePart1(CoinIndexedVector *regionSparse,
95 CoinIndexedVector *partialUpdate,
96 int pivotRow)
97 {
98 return coinAbcFactorization_->checkReplacePart1(regionSparse, partialUpdate, pivotRow);
99 }
100 #ifdef MOVE_REPLACE_PART1A
101
105 inline void checkReplacePart1a(CoinIndexedVector *regionSparse,
106 int pivotRow)
107 {
108 coinAbcFactorization_->checkReplacePart1a(regionSparse, pivotRow);
109 }
110 inline double checkReplacePart1b(CoinIndexedVector *regionSparse,
111 int pivotRow)
112 {
113 return coinAbcFactorization_->checkReplacePart1b(regionSparse, pivotRow);
114 }
115 #endif
116
118 inline int checkReplacePart2(int pivotRow,
119 double btranAlpha,
120 double ftranAlpha,
121 #ifdef ABC_LONG_FACTORIZATION
122 long
123 #endif
124 double ftAlpha)
125 {
126 return coinAbcFactorization_->checkReplacePart2(pivotRow, btranAlpha, ftranAlpha, ftAlpha);
127 }
128 #ifdef ABC_LONG_FACTORIZATION
129 inline void clearHiddenArrays()
131 {
132 coinAbcFactorization_->clearHiddenArrays();
133 }
134 #endif
135
137 void replaceColumnPart3(const AbcSimplex *model,
138 CoinIndexedVector *regionSparse,
139 CoinIndexedVector *tableauColumn,
140 int pivotRow,
141 #ifdef ABC_LONG_FACTORIZATION
142 long
143 #endif
144 double alpha);
147 void replaceColumnPart3(const AbcSimplex *model,
148 CoinIndexedVector *regionSparse,
149 CoinIndexedVector *tableauColumn,
150 CoinIndexedVector *partialUpdate,
151 int pivotRow,
152 #ifdef ABC_LONG_FACTORIZATION
153 long
154 #endif
155 double alpha);
156 #ifdef EARLY_FACTORIZE
157 inline int replaceColumns(const AbcSimplex *model,
159 CoinIndexedVector &stuff,
160 int firstPivot, int lastPivot, bool cleanUp)
161 {
162 return coinAbcFactorization_->replaceColumns(model, stuff, firstPivot, lastPivot, cleanUp);
163 }
164 #endif
165
166
170 #if 0
171
175 int updateColumnFT ( CoinIndexedVector * regionSparse,
176 CoinIndexedVector * regionSparse2);
179 int updateColumn ( CoinIndexedVector * regionSparse,
180 CoinIndexedVector * regionSparse2) const;
186 int updateTwoColumnsFT ( CoinIndexedVector * regionSparse1,
187 CoinIndexedVector * regionSparse2,
188 CoinIndexedVector * regionSparse3) ;
191 int updateColumnTranspose ( CoinIndexedVector * regionSparse,
192 CoinIndexedVector * regionSparse2) const;
193 #endif
194
197 inline int updateColumnFT(CoinIndexedVector &regionSparseFT)
198 {
199 return coinAbcFactorization_->updateColumnFT(regionSparseFT);
200 }
201 inline int updateColumnFTPart1(CoinIndexedVector &regionSparseFT)
202 {
203 return coinAbcFactorization_->updateColumnFTPart1(regionSparseFT);
204 }
205 inline void updateColumnFTPart2(CoinIndexedVector &regionSparseFT)
206 {
207 coinAbcFactorization_->updateColumnFTPart2(regionSparseFT);
208 }
212 inline void updateColumnFT(CoinIndexedVector &regionSparseFT,
213 CoinIndexedVector &partialUpdate,
214 int which)
215 {
216 coinAbcFactorization_->updateColumnFT(regionSparseFT, partialUpdate, which);
217 }
219 inline int updateColumn(CoinIndexedVector &regionSparse) const
220 {
221 return coinAbcFactorization_->updateColumn(regionSparse);
222 }
227 inline int updateTwoColumnsFT(CoinIndexedVector &regionSparseFT,
228 CoinIndexedVector &regionSparseOther)
229 {
230 return coinAbcFactorization_->updateTwoColumnsFT(regionSparseFT, regionSparseOther);
231 }
233 inline int updateColumnTranspose(CoinIndexedVector &regionSparse) const
234 {
235 return coinAbcFactorization_->updateColumnTranspose(regionSparse);
236 }
238 inline void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const
239 #ifndef ABC_USE_COIN_FACTORIZATION
240 {
241 coinAbcFactorization_->updateColumnCpu(regionSparse, whichCpu);
242 }
243 #else
244 {
245 coinAbcFactorization_->updateColumn(regionSparse);
246 }
247 #endif
248
249 inline void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const
250 #ifndef ABC_USE_COIN_FACTORIZATION
251 {
252 coinAbcFactorization_->updateColumnTransposeCpu(regionSparse, whichCpu);
253 }
254 #else
255 {
256 coinAbcFactorization_->updateColumnTranspose(regionSparse);
257 }
258 #endif
259
260 inline void updateFullColumn(CoinIndexedVector &regionSparse) const
261 {
262 coinAbcFactorization_->updateFullColumn(regionSparse);
263 }
265 inline void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const
266 {
267 coinAbcFactorization_->updateFullColumnTranspose(regionSparse);
268 }
270 void updateWeights(CoinIndexedVector &regionSparse) const
271 #ifndef ABC_USE_COIN_FACTORIZATION
272 {
273 coinAbcFactorization_->updateWeights(regionSparse);
274 }
275 #else
276 {
277 coinAbcFactorization_->updateColumn(regionSparse);
278 }
279 #endif
280
281
283 inline int numberElements() const
285 {
286 return coinAbcFactorization_->numberElements();
287 }
289 inline int maximumPivots() const
290 {
291 return coinAbcFactorization_->maximumPivots();
292 }
294 inline void maximumPivots(int value)
295 {
296 coinAbcFactorization_->maximumPivots(value);
297 }
299 inline bool usingFT() const
300 {
301 return !coinAbcFactorization_->wantsTableauColumn();
302 }
304 inline int pivots() const
305 {
306 return coinAbcFactorization_->pivots();
307 }
309 inline void setModel(AbcSimplex *model)
310 {
311 model_ = model;
312 }
314 inline void setPivots(int value) const
315 {
316 coinAbcFactorization_->setPivots(value);
317 }
319 inline double areaFactor() const
320 {
321 return coinAbcFactorization_->areaFactor();
322 }
324 inline void areaFactor(double value)
325 {
326 coinAbcFactorization_->areaFactor(value);
327 }
329 inline double zeroTolerance() const
330 {
331 return coinAbcFactorization_->zeroTolerance();
332 }
334 inline void zeroTolerance(double value)
335 {
336 coinAbcFactorization_->zeroTolerance(value);
337 }
339 void saferTolerances(double zeroTolerance, double pivotTolerance);
341 inline int status() const
342 {
343 return coinAbcFactorization_->status();
344 }
346 inline void setStatus(int value)
347 {
348 coinAbcFactorization_->setStatus(value);
349 }
350 #if ABC_PARALLEL == 2
351 inline void setParallelMode(int value)
353 {
354 coinAbcFactorization_->setParallelMode(value);
355 };
356 #endif
357 inline int numberDense() const
359 {
360 return coinAbcFactorization_->numberDense();
361 }
362 bool timeToRefactorize() const;
363 #if CLP_FACTORIZATION_NEW_TIMING > 1
364 void statsRefactor(char when) const;
365 #endif
366 inline void clearArrays()
368 {
369 coinAbcFactorization_->clearArrays();
370 }
372 inline int numberRows() const
373 {
374 return coinAbcFactorization_->numberRows();
375 }
377 inline int numberSlacks() const
378 {
379 return numberSlacks_;
380 }
382 inline double pivotTolerance() const
383 {
384 return coinAbcFactorization_->pivotTolerance();
385 }
387 inline void pivotTolerance(double value)
388 {
389 coinAbcFactorization_->pivotTolerance(value);
390 }
392 inline double minimumPivotTolerance() const
393 {
394 return coinAbcFactorization_->minimumPivotTolerance();
395 }
397 inline void minimumPivotTolerance(double value)
398 {
399 coinAbcFactorization_->minimumPivotTolerance(value);
400 }
402 inline double *pivotRegion() const
403 {
404 return coinAbcFactorization_->pivotRegion();
405 }
407 //inline void relaxAccuracyCheck(double /*value*/) {
408 //abort();
409 //}
411 inline void almostDestructor()
412 {
413 coinAbcFactorization_->clearArrays();
414 }
416 void setDenseThreshold(int number);
417 int getDenseThreshold() const;
419 void forceOtherFactorization(int which);
421 void goDenseOrSmall(int numberRows);
423 inline int goDenseThreshold() const
424 {
425 return goDenseThreshold_;
426 }
428 inline void setGoDenseThreshold(int value)
429 {
430 goDenseThreshold_ = value;
431 }
433 inline int goSmallThreshold() const
434 {
435 return goSmallThreshold_;
436 }
438 inline void setGoSmallThreshold(int value)
439 {
440 goSmallThreshold_ = value;
441 }
443 inline int goLongThreshold() const
444 {
445 return goLongThreshold_;
446 }
448 inline void setGoLongThreshold(int value)
449 {
450 goLongThreshold_ = value;
451 }
453 inline int typeOfFactorization() const
454 {
455 return forceB_;
456 }
458 void synchronize(const ClpFactorization *otherFactorization, const AbcSimplex *model);
460
464 void goSparse();
465 #ifndef NDEBUG
466 #ifndef ABC_USE_COIN_FACTORIZATION
467 inline void checkMarkArrays() const
468 {
469 coinAbcFactorization_->checkMarkArrays();
470 }
471 #else
472 inline void checkMarkArrays() const
473 {
474 }
475 #endif
476 #endif
477 inline bool needToReorder() const
479 {
480 abort();
481 return true;
482 }
484 #ifndef ABC_USE_COIN_FACTORIZATION
485 CoinAbcAnyFactorization *factorization() const
486 {
487 return coinAbcFactorization_;
488 }
489 #else
490 CoinFactorization *factorization() const
491 {
492 return coinAbcFactorization_;
493 }
494 #endif
495
496
498 private:
501 AbcSimplex *model_;
504 #ifndef ABC_USE_COIN_FACTORIZATION
505 CoinAbcAnyFactorization *coinAbcFactorization_;
506 #else
507 CoinFactorization *coinAbcFactorization_;
508 #endif
509 #ifdef CLP_FACTORIZATION_NEW_TIMING
510 mutable double shortestAverage_;
512 mutable double totalInR_;
513 mutable double totalInIncreasingU_;
514 mutable int endLengthU_;
515 mutable int lastNumberPivots_;
516 mutable int effectiveStartNumberU_;
517 #endif
518 int forceB_;
521 int goDenseThreshold_;
523 int goSmallThreshold_;
525 int goLongThreshold_;
527 int numberSlacks_;
529 };
530
531 #endif
532
533 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
534 */
AbcSimplexFactorization::timeToRefactorize
bool timeToRefactorize() const
CoinAbcAnyFactorization::zeroTolerance
double zeroTolerance() const
Zero tolerance.
Definition: CoinAbcDenseFactorization.hpp:144
AbcSimplexFactorization::numberDense
int numberDense() const
Returns number of dense rows.
Definition: AbcSimplexFactorization.hpp:358
AbcSimplexFactorization::setGoLongThreshold
void setGoLongThreshold(int value)
Set switch to long/ordered if number rows &gt;= this.
Definition: AbcSimplexFactorization.hpp:448
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:212
AbcSimplexFactorization::areaFactor
void areaFactor(double value)
Set whether larger areas needed.
Definition: AbcSimplexFactorization.hpp:324
AbcSimplexFactorization
This just implements AbcFactorization when an AbcMatrix object is passed.
Definition: AbcSimplexFactorization.hpp:26
AbcSimplexFactorization::setPivots
void setPivots(int value) const
Sets number of pivots since factorization.
Definition: AbcSimplexFactorization.hpp:314
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
AbcSimplexFactorization::updateColumn
int updateColumn(CoinIndexedVector &regionSparse) const
Updates one column (FTRAN)
Definition: AbcSimplexFactorization.hpp:219
CoinAbcCommon.hpp
AbcSimplexFactorization::synchronize
void synchronize(const ClpFactorization *otherFactorization, const AbcSimplex *model)
Synchronize stuff.
AbcSimplexFactorization::pivotRegion
double * pivotRegion() const
pivot region
Definition: AbcSimplexFactorization.hpp:402
AbcSimplex
Definition: AbcSimplex.hpp:62
AbcSimplexFactorization::goLongThreshold_
int goLongThreshold_
Switch to long/ordered if number rows &gt;= this.
Definition: AbcSimplexFactorization.hpp:525
AbcSimplexFactorization::numberSlacks_
int numberSlacks_
Number of slacks at last factorization.
Definition: AbcSimplexFactorization.hpp:527
CoinAbcAnyFactorization
Abstract base class which also has some scalars so can be used from Dense or Simp.
Definition: CoinAbcDenseFactorization.hpp:23
AbcSimplexFactorization::~AbcSimplexFactorization
~AbcSimplexFactorization()
Destructor.
AbcSimplexFactorization::updateColumnTransposeCpu
void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (BTRAN)
Definition: AbcSimplexFactorization.hpp:249
CoinAbcAnyFactorization::updateFullColumnTranspose
virtual void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const =0
Updates one column (BTRAN) from unpacked regionSparse.
CoinAbcAnyFactorization::updateColumnFTPart1
virtual int updateColumnFTPart1(CoinIndexedVector &regionSparse)=0
AbcSimplexFactorization::saferTolerances
void saferTolerances(double zeroTolerance, double pivotTolerance)
Set tolerances to safer of existing and given.
CoinAbcAnyFactorization::updateColumnTranspose
virtual int updateColumnTranspose(CoinIndexedVector &regionSparse) const =0
Updates one column (BTRAN) from unpacked regionSparse.
CoinAbcAnyFactorization::areaFactor
double areaFactor() const
Area factor.
Definition: CoinAbcDenseFactorization.hpp:135
AbcSimplexFactorization::factorize
int factorize(AbcSimplex *model, int solveType, bool valuesPass)
When part of LP - given by basic variables.
CoinAbcAnyFactorization::updateFullColumn
virtual void updateFullColumn(CoinIndexedVector &regionSparse) const =0
This version does FTRAN on array when indices not set up.
AbcSimplexFactorization::operator=
AbcSimplexFactorization & operator=(const AbcSimplexFactorization &)
AbcSimplexFactorization::checkMarkArrays
void checkMarkArrays() const
Definition: AbcSimplexFactorization.hpp:467
AbcSimplexFactorization::goSmallThreshold
int goSmallThreshold() const
Get switch to small if number rows &lt;= this.
Definition: AbcSimplexFactorization.hpp:433
ClpFactorization
This just implements CoinFactorization when an ClpMatrixBase object is passed.
Definition: ClpFactorization.hpp:34
CoinAbcAnyFactorization::updateTwoColumnsFT
virtual int updateTwoColumnsFT(CoinIndexedVector &regionFT, CoinIndexedVector &regionOther)=0
does FTRAN on two unpacked columns
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:227
CoinAbcAnyFactorization::numberRows
int numberRows() const
Number of Rows after factorization.
Definition: CoinAbcDenseFactorization.hpp:87
AbcSimplexFactorization::updateColumnFTPart1
int updateColumnFTPart1(CoinIndexedVector &regionSparseFT)
Definition: AbcSimplexFactorization.hpp:201
CoinAbcAnyFactorization::pivotRegion
virtual CoinFactorizationDouble * pivotRegion() const
Definition: CoinAbcDenseFactorization.hpp:130
AbcSimplex.hpp
AbcSimplexFactorization::AbcSimplexFactorization
AbcSimplexFactorization(int numberRows=0)
Default constructor.
CoinFactorization.hpp
AbcSimplexFactorization::setStatus
void setStatus(int value)
Sets status.
Definition: AbcSimplexFactorization.hpp:346
CoinAbcAnyFactorization::status
int status() const
Returns status.
Definition: CoinAbcDenseFactorization.hpp:45
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:94
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:197
CoinAbcAnyFactorization::updateColumnCpu
virtual void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (FTRAN)
AbcSimplexFactorization::pivotTolerance
double pivotTolerance() const
Pivot tolerance.
Definition: AbcSimplexFactorization.hpp:382
AbcSimplexFactorization::zeroTolerance
void zeroTolerance(double value)
Set zero tolerance.
Definition: AbcSimplexFactorization.hpp:334
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::pivotTolerance
void pivotTolerance(double value)
Set pivot tolerance.
Definition: AbcSimplexFactorization.hpp:387
CoinAbcAnyFactorization::pivotTolerance
double pivotTolerance() const
Pivot tolerance.
Definition: CoinAbcDenseFactorization.hpp:119
ClpFactorization.hpp
AbcSimplexFactorization::goLongThreshold
int goLongThreshold() const
Get switch to long/ordered if number rows &gt;= this.
Definition: AbcSimplexFactorization.hpp:443
AbcSimplexFactorization::updateFullColumn
void updateFullColumn(CoinIndexedVector &regionSparse) const
Updates one full column (FTRAN)
Definition: AbcSimplexFactorization.hpp:260
CoinIndexedVector
Indexed Vector.
Definition: CoinIndexedVector.hpp:104
CoinPragma.hpp
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, 3=no room, 5 max pivots.
Definition: AbcSimplexFactorization.hpp:118
AbcSimplexFactorization::numberSlacks
int numberSlacks() const
Number of slacks at last factorization.
Definition: AbcSimplexFactorization.hpp:377
CoinAbcAnyFactorization::numberDense
CoinSimplexInt numberDense() const
Number of dense rows after factorization.
Definition: CoinAbcDenseFactorization.hpp:92
AbcSimplexFactorization::updateWeights
void updateWeights(CoinIndexedVector &regionSparse) const
Updates one column for dual steepest edge weights (FTRAN)
Definition: AbcSimplexFactorization.hpp:270
AbcSimplexFactorization::pivots
int pivots() const
Returns number of pivots since factorization.
Definition: AbcSimplexFactorization.hpp:304
AbcSimplexFactorization::clearArrays
void clearArrays()
Get rid of all memory.
Definition: AbcSimplexFactorization.hpp:367
AbcSimplexFactorization::zeroTolerance
double zeroTolerance() const
Zero tolerance.
Definition: AbcSimplexFactorization.hpp:329
AbcSimplexFactorization::setModel
void setModel(AbcSimplex *model)
Sets model.
Definition: AbcSimplexFactorization.hpp:309
AbcSimplexFactorization::forceB_
int forceB_
If nonzero force use of 1,dense 2,small 3,long.
Definition: AbcSimplexFactorization.hpp:519
AbcMatrix.hpp
AbcSimplexFactorization::updateFullColumnTranspose
void updateFullColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one full column (BTRAN)
Definition: AbcSimplexFactorization.hpp:265
AbcSimplexFactorization::goDenseThreshold
int goDenseThreshold() const
Get switch to dense if number rows &lt;= this.
Definition: AbcSimplexFactorization.hpp:423
AbcSimplexFactorization::setFactorization
void setFactorization(AbcSimplexFactorization &rhs)
Sets factorization.
AbcSimplexFactorization::maximumPivots
void maximumPivots(int value)
Set maximum number of pivots between factorizations.
Definition: AbcSimplexFactorization.hpp:294
AbcSimplexFactorization::goSparse
void goSparse()
makes a row copy of L for speed and to allow very sparse problems
CoinAbcAnyFactorization::setStatus
void setStatus(int value)
Sets status.
Definition: CoinAbcDenseFactorization.hpp:50
CoinAbcAnyFactorization::updateColumnTransposeCpu
virtual void updateColumnTransposeCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (BTRAN)
AbcSimplexFactorization::forceOtherFactorization
void forceOtherFactorization(int which)
If nonzero force use of 1,dense 2,small 3,long.
AbcSimplexFactorization::updateColumnCpu
void updateColumnCpu(CoinIndexedVector &regionSparse, int whichCpu) const
Updates one column (FTRAN)
Definition: AbcSimplexFactorization.hpp:238
AbcSimplexFactorization::factorization
CoinAbcAnyFactorization * factorization() const
Pointer to factorization.
Definition: AbcSimplexFactorization.hpp:485
CoinAbcAnyFactorization::updateColumn
virtual int updateColumn(CoinIndexedVector &regionSparse) const =0
This version has same effect as above with FTUpdate==false so number returned is always &gt;=0...
CoinAbcAnyFactorization::checkReplacePart1a
virtual void checkReplacePart1a(CoinIndexedVector *, int)
Definition: CoinAbcDenseFactorization.hpp:299
CoinAbcAnyFactorization::numberElements
virtual int numberElements() const =0
Total number of elements in factorization.
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::typeOfFactorization
int typeOfFactorization() const
Returns type.
Definition: AbcSimplexFactorization.hpp:453
CoinAbcAnyFactorization::setPivots
void setPivots(int value)
Sets number of pivots since factorization.
Definition: CoinAbcDenseFactorization.hpp:67
CoinAbcAnyFactorization::minimumPivotTolerance
double minimumPivotTolerance() const
Minimum pivot tolerance.
Definition: CoinAbcDenseFactorization.hpp:125
CoinAbcAnyFactorization::wantsTableauColumn
virtual bool wantsTableauColumn() const
Returns true if wants tableauColumn in replaceColumn.
AbcSimplexFactorization::areaFactor
double areaFactor() const
Whether larger areas needed.
Definition: AbcSimplexFactorization.hpp:319
AbcSimplexFactorization::minimumPivotTolerance
double minimumPivotTolerance() const
Minimum pivot tolerance.
Definition: AbcSimplexFactorization.hpp:392
AbcSimplexFactorization::getDenseThreshold
int getDenseThreshold() const
AbcSimplexFactorization::numberRows
int numberRows() const
Number of Rows after factorization.
Definition: AbcSimplexFactorization.hpp:372
AbcSimplexFactorization::goSmallThreshold_
int goSmallThreshold_
Switch to small if number rows &lt;= this.
Definition: AbcSimplexFactorization.hpp:523
AbcSimplexFactorization::setGoSmallThreshold
void setGoSmallThreshold(int value)
Set switch to small if number rows &lt;= this.
Definition: AbcSimplexFactorization.hpp:438
CoinFactorization
This deals with Factorization and Updates.
Definition: CoinFactorization.hpp:50
CoinAbcAnyFactorization::checkReplacePart1b
virtual double checkReplacePart1b(CoinIndexedVector *, int)
Definition: CoinAbcDenseFactorization.hpp:303
CoinAbcAnyFactorization::updateWeights
virtual void updateWeights(CoinIndexedVector &regionSparse) const =0
Updates one column for dual steepest edge weights (FTRAN)
AbcSimplexFactorization::almostDestructor
void almostDestructor()
Allows change of pivot accuracy check 1.0 == none &gt;1.0 relaxed.
Definition: AbcSimplexFactorization.hpp:411
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, 3=no room, 5 max pivots.
AbcSimplexFactorization::usingFT
bool usingFT() const
Returns true if doing FT.
Definition: AbcSimplexFactorization.hpp:299
AbcSimplexFactorization::goDenseThreshold_
int goDenseThreshold_
Switch to dense if number rows &lt;= this.
Definition: AbcSimplexFactorization.hpp:521
CoinAbcAnyFactorization::pivots
int pivots() const
Returns number of pivots since factorization.
Definition: CoinAbcDenseFactorization.hpp:55
AbcSimplexFactorization::updateColumnTranspose
int updateColumnTranspose(CoinIndexedVector &regionSparse) const
Updates one column (BTRAN)
Definition: AbcSimplexFactorization.hpp:233
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::setGoDenseThreshold
void setGoDenseThreshold(int value)
Set switch to dense if number rows &lt;= this.
Definition: AbcSimplexFactorization.hpp:428
AbcSimplexFactorization::setDenseThreshold
void setDenseThreshold(int number)
So we can temporarily switch off dense.
AbcSimplexFactorization::numberElements
int numberElements() const
Total number of elements in factorization.
Definition: AbcSimplexFactorization.hpp:284
AbcSimplexFactorization::status
int status() const
Returns status.
Definition: AbcSimplexFactorization.hpp:341
AbcSimplexFactorization::maximumPivots
int maximumPivots() const
Maximum number of pivots between factorizations.
Definition: AbcSimplexFactorization.hpp:289
AbcSimplexFactorization::minimumPivotTolerance
void minimumPivotTolerance(double value)
Set minimum pivot tolerance.
Definition: AbcSimplexFactorization.hpp:397
AbcSimplexFactorization::goDenseOrSmall
void goDenseOrSmall(int numberRows)
Go over to dense code.
CoinAbcFactorization.hpp
CoinAbcAnyFactorization::checkMarkArrays
virtual void checkMarkArrays() const
Definition: CoinAbcDenseFactorization.hpp:168
CoinAbcAnyFactorization::clearArrays
virtual void clearArrays()
Get rid of all memory.
Definition: CoinAbcDenseFactorization.hpp:196
AbcSimplexFactorization::coinAbcFactorization_
CoinAbcAnyFactorization * coinAbcFactorization_
Pointer to factorization.
Definition: AbcSimplexFactorization.hpp:505
CoinAbcAnyFactorization::maximumPivots
int maximumPivots() const
Maximum number of pivots between factorizations.
Definition: CoinAbcDenseFactorization.hpp:111
AbcSimplexFactorization::updateColumnFTPart2
void updateColumnFTPart2(CoinIndexedVector &regionSparseFT)
Definition: AbcSimplexFactorization.hpp:205
AbcSimplexFactorization::needToReorder
bool needToReorder() const
Says whether to redo pivot order.
Definition: AbcSimplexFactorization.hpp:478
CoinAbcAnyFactorization::updateColumnFTPart2
virtual void updateColumnFTPart2(CoinIndexedVector &regionSparse)=0
AbcSimplexFactorization::model_
AbcSimplex * model_
Pointer to model.
Definition: AbcSimplexFactorization.hpp:502