6 #ifndef AbcPrimalColumnSteepest_H
7 #define AbcPrimalColumnSteepest_H
13 class CoinIndexedVector;
37 virtual int pivotColumn(CoinPartitionedVector * updates,
38 CoinPartitionedVector * spareRow2,
39 CoinPartitionedVector * spareColumn1);
41 void justDjs(CoinIndexedVector * updates,
42 CoinIndexedVector * spareColumn1);
49 CoinIndexedVector * spareRow2,
50 CoinIndexedVector * spareColumn1);
53 CoinIndexedVector * spareColumn1);
55 void justDevex(CoinIndexedVector * updates,
56 CoinIndexedVector * spareColumn1);
65 CoinPartitionedVector * spareRow2,
66 CoinPartitionedVector * spareColumn1,
74 CoinIndexedVector * rowArray1);
100 inline int mode()
const {
144 return ((reference_[i>>5] >> (i & 31)) & 1) != 0;
147 unsigned int & value = reference_[i>>5];
152 value &= ~(1 << bit);
159 return persistence_ ;
172 CoinIndexedVector * infeasible_;
174 CoinIndexedVector * alternateWeights_;
176 double * savedWeights_;
178 unsigned int * reference_;
205 int savedPivotSequence_;
207 int savedSequenceOut_;
211 int sizeFactorization_;
void checkAccuracy(int sequence, double relativeTolerance, CoinIndexedVector *rowArray1)
Checks accuracy - just for debug.
virtual void updateWeights(CoinIndexedVector *input)
Updates weights - part 1 - also checks accuracy.
void djsAndDevex(CoinIndexedVector *updates, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1)
Update djs, weights for Devex using djs.
Persistence
enums for persistence
AbcPrimalColumnSteepest(int mode=3)
Default Constructor 0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 ...
AbcPrimalColumnSteepest & operator=(const AbcPrimalColumnSteepest &rhs)
Assignment operator.
virtual ~AbcPrimalColumnSteepest()
Destructor.
void setReference(int i, bool trueFalse)
virtual bool looksOptimal() const
Returns true if would not find any column.
Primal Column Pivot Abstract Base Class.
void justDjs(CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
Just update djs.
virtual void maximumPivotsChanged()
Called when maximum pivots changes.
void djsAndDevex2(CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
Update djs, weights for Devex using pivot row.
int partialPricing(CoinIndexedVector *updates, int numberWanted, int numberLook)
Update djs doing partial pricing (dantzig)
void initializeWeights()
Initialize weights.
virtual AbcPrimalColumnPivot * clone(bool copyData=true) const
Clone.
virtual void saveWeights(AbcSimplex *model, int mode)
Save weights - this may initialize weights as well mode is - 1) before factorization 2) after factori...
bool reference(int i) const
reference would be faster using AbcSimplex's status_, but I prefer to keep modularity.
void setPersistence(Persistence life)
Set/ get persistence.
Primal Column Pivot Steepest Edge Algorithm Class.
virtual int pivotColumn(CoinPartitionedVector *updates, CoinPartitionedVector *spareRow2, CoinPartitionedVector *spareColumn1)
Returns pivot column, -1 if none.
void justDevex(CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
Update weights for Devex.
virtual void clearArrays()
Gets rid of all arrays.
int type()
Returns type (above 63 is extra information)
AbcSimplex * model()
Returns model.
virtual void unrollWeights()
Gets rid of last update.
Persistence persistence() const
int doSteepestWork(CoinPartitionedVector *updates, CoinPartitionedVector *spareRow2, CoinPartitionedVector *spareColumn1, int type)
Does steepest work type - 0 - just djs 1 - just steepest 2 - both using scaleFactor 3 - both using ex...