#include <ClpPrimalColumnSteepest.hpp>
Inheritance diagram for ClpPrimalColumnSteepest:
Public Types | |
enum | Persistence { normal = 0x00, keep = 0x01 } |
enums for persistence More... | |
Public Member Functions | |
Algorithmic methods | |
virtual int | pivotColumn (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Returns pivot column, -1 if none. | |
int | pivotColumnOldMethod (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
For quadratic or funny nonlinearities. | |
void | justDjs (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Just update djs. | |
int | partialPricing (CoinIndexedVector *updates, CoinIndexedVector *spareRow2, int numberWanted, int numberLook) |
Update djs doing partial pricing (dantzig). | |
void | djsAndDevex (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Update djs, weights for Devex using djs. | |
void | djsAndSteepest (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Update djs, weights for Steepest using djs. | |
void | djsAndDevex2 (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Update djs, weights for Devex using pivot row. | |
void | djsAndSteepest2 (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Update djs, weights for Steepest using pivot row. | |
void | justDevex (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Update weights for Devex. | |
void | justSteepest (CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2) |
Update weights for Steepest. | |
void | transposeTimes2 (const CoinIndexedVector *pi1, CoinIndexedVector *dj1, const CoinIndexedVector *pi2, CoinIndexedVector *dj2, CoinIndexedVector *spare, double scaleFactor) |
Updates two arrays for steepest. | |
virtual void | updateWeights (CoinIndexedVector *input) |
Updates weights - part 1 - also checks accuracy. | |
void | checkAccuracy (int sequence, double relativeTolerance, CoinIndexedVector *rowArray1, CoinIndexedVector *rowArray2) |
Checks accuracy - just for debug. | |
void | initializeWeights () |
Initialize weights. | |
virtual void | saveWeights (ClpSimplex *model, int mode) |
Save weights. | |
virtual void | unrollWeights () |
Gets rid of last update. | |
virtual void | clearArrays () |
Gets rid of all arrays. | |
virtual bool | looksOptimal () const |
Returns true if would not find any column. | |
virtual void | maximumPivotsChanged () |
Called when maximum pivots changes. | |
gets and sets | |
int | mode () const |
Mode. | |
virtual int | numberSprintColumns (int &numberIterations) const |
Returns number of extra columns for sprint algorithm - 0 means off. | |
virtual void | switchOffSprint () |
Switch off sprint idea. | |
Constructors and destructors | |
ClpPrimalColumnSteepest (int mode=3) | |
Default Constructor 0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 and 2 depending on factorization 4 starts as partial dantzig/devex but then may switch between 0 and 2. | |
ClpPrimalColumnSteepest (const ClpPrimalColumnSteepest &) | |
Copy constructor. | |
ClpPrimalColumnSteepest & | operator= (const ClpPrimalColumnSteepest &rhs) |
Assignment operator. | |
virtual | ~ClpPrimalColumnSteepest () |
Destructor. | |
virtual ClpPrimalColumnPivot * | clone (bool copyData=true) const |
Clone. | |
Private functions to deal with devex | |
bool | reference (int i) const |
reference would be faster using ClpSimplex's status_, but I prefer to keep modularity. | |
void | setReference (int i, bool trueFalse) |
reference would be faster using ClpSimplex's status_, but I prefer to keep modularity. | |
void | setPersistence (Persistence life) |
Set/ get persistence. | |
Persistence | persistence () const |
reference would be faster using ClpSimplex's status_, but I prefer to keep modularity. | |
Private Attributes | |
Private member data | |
double | devex_ |
double * | weights_ |
weight array | |
CoinIndexedVector * | infeasible_ |
square of infeasibility array (just for infeasible columns) | |
CoinIndexedVector * | alternateWeights_ |
alternate weight array (so we can unroll) | |
double * | savedWeights_ |
save weight array (so we can use checkpoint) | |
unsigned int * | reference_ |
int | state_ |
Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number. | |
int | mode_ |
0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 and 2 depending on factorization 4 starts as partial dantzig/devex but then may switch between 0 and 2. | |
Persistence | persistence_ |
Life of weights. | |
int | numberSwitched_ |
Number of times switched from partial dantzig to 0/2. | |
int | pivotSequence_ |
int | savedPivotSequence_ |
int | savedSequenceOut_ |
int | lastRectified_ |
int | sizeFactorization_ |
See Forrest-Goldfarb paper for algorithm
Definition at line 20 of file ClpPrimalColumnSteepest.hpp.
|
enums for persistence
Definition at line 136 of file ClpPrimalColumnSteepest.hpp. Referenced by persistence(). |
|
Default Constructor 0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 and 2 depending on factorization 4 starts as partial dantzig/devex but then may switch between 0 and 2. By partial exact devex is meant that the weights are updated as normal but only part of the nonbasic variables are scanned. This can be faster on very easy problems. |
|
Copy constructor.
|
|
Destructor.
|
|
Returns pivot column, -1 if none. The Packed CoinIndexedVector updates has cost updates - for normal LP that is just +-weight where a feasibility changed. It also has reduced cost from last iteration in pivot row Parts of operation split out into separate functions for profiling and speed Implements ClpPrimalColumnPivot. |
|
For quadratic or funny nonlinearities.
|
|
Just update djs.
|
|
Update djs doing partial pricing (dantzig).
|
|
Update djs, weights for Devex using djs.
|
|
Update djs, weights for Steepest using djs.
|
|
Update djs, weights for Devex using pivot row.
|
|
Update djs, weights for Steepest using pivot row.
|
|
Update weights for Devex.
|
|
Update weights for Steepest.
|
|
Updates two arrays for steepest.
|
|
Updates weights - part 1 - also checks accuracy.
Reimplemented from ClpPrimalColumnPivot. |
|
Checks accuracy - just for debug.
|
|
Initialize weights.
|
|
Save weights.
Implements ClpPrimalColumnPivot. |
|
Gets rid of last update.
|
|
Gets rid of all arrays.
Reimplemented from ClpPrimalColumnPivot. |
|
Returns true if would not find any column.
Reimplemented from ClpPrimalColumnPivot. |
|
Called when maximum pivots changes.
Reimplemented from ClpPrimalColumnPivot. |
|
Mode.
Definition at line 123 of file ClpPrimalColumnSteepest.hpp. |
|
Returns number of extra columns for sprint algorithm - 0 means off. Also number of iterations before recompute Reimplemented from ClpPrimalColumnPivot. |
|
Switch off sprint idea.
Reimplemented from ClpPrimalColumnPivot. |
|
Assignment operator.
|
|
Clone.
Implements ClpPrimalColumnPivot. |
|
reference would be faster using ClpSimplex's status_, but I prefer to keep modularity.
Definition at line 171 of file ClpPrimalColumnSteepest.hpp. References reference_. |
|
reference would be faster using ClpSimplex's status_, but I prefer to keep modularity.
Definition at line 174 of file ClpPrimalColumnSteepest.hpp. References reference_. |
|
Set/ get persistence.
Definition at line 183 of file ClpPrimalColumnSteepest.hpp. References persistence_. |
|
reference would be faster using ClpSimplex's status_, but I prefer to keep modularity.
Definition at line 185 of file ClpPrimalColumnSteepest.hpp. References Persistence. |
|
Definition at line 194 of file ClpPrimalColumnSteepest.hpp. |
|
weight array
Definition at line 196 of file ClpPrimalColumnSteepest.hpp. |
|
square of infeasibility array (just for infeasible columns)
Definition at line 198 of file ClpPrimalColumnSteepest.hpp. |
|
alternate weight array (so we can unroll)
Definition at line 200 of file ClpPrimalColumnSteepest.hpp. |
|
save weight array (so we can use checkpoint)
Definition at line 202 of file ClpPrimalColumnSteepest.hpp. |
|
Definition at line 204 of file ClpPrimalColumnSteepest.hpp. Referenced by reference(), and setReference(). |
|
Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.
Definition at line 210 of file ClpPrimalColumnSteepest.hpp. |
|
0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 and 2 depending on factorization 4 starts as partial dantzig/devex but then may switch between 0 and 2. 5 is always partial dantzig By partial exact devex is meant that the weights are updated as normal but only part of the nonbasic variables are scanned. This can be faster on very easy problems. New dubious option is >=10 which does mini-sprint Definition at line 223 of file ClpPrimalColumnSteepest.hpp. |
|
Life of weights.
Definition at line 225 of file ClpPrimalColumnSteepest.hpp. Referenced by setPersistence(). |
|
Number of times switched from partial dantzig to 0/2.
Definition at line 227 of file ClpPrimalColumnSteepest.hpp. |
|
Definition at line 229 of file ClpPrimalColumnSteepest.hpp. |
|
Definition at line 231 of file ClpPrimalColumnSteepest.hpp. |
|
Definition at line 233 of file ClpPrimalColumnSteepest.hpp. |
|
Definition at line 235 of file ClpPrimalColumnSteepest.hpp. |
|
Definition at line 237 of file ClpPrimalColumnSteepest.hpp. |