6 #ifndef AbcPrimalColumnSteepest_H
7 #define AbcPrimalColumnSteepest_H
100 inline int mode()
const {
144 return ((
reference_[i>>5] >> (i & 31)) & 1) != 0;
152 value &= ~(1 << bit);
Persistence
enums for persistence
int state_
Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.
AbcPrimalColumnSteepest(int mode=3)
Default Constructor 0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 ...
int savedSequenceOut_
weight array
Persistence persistence_
Life of weights.
void justDjs(CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
Just update djs.
AbcPrimalColumnSteepest & operator=(const AbcPrimalColumnSteepest &rhs)
Assignment operator.
virtual bool looksOptimal() const
Returns true if would not find any column.
virtual void unrollWeights()
Gets rid of last update.
Persistence persistence() const
reference would be faster using AbcSimplex's status_, but I prefer to keep modularity.
void initializeWeights()
Initialize weights.
int mode_
0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 and 2 depending on f...
virtual void maximumPivotsChanged()
Called when maximum pivots changes.
int partialPricing(CoinIndexedVector *updates, int numberWanted, int numberLook)
Update djs doing partial pricing (dantzig)
void setPersistence(Persistence life)
Set/ get persistence.
virtual AbcPrimalColumnPivot * clone(bool copyData=true) const
Clone.
CoinIndexedVector * infeasible_
square of infeasibility array (just for infeasible columns)
int pivotSequence_
weight array
virtual void updateWeights(CoinIndexedVector *input)
Updates weights - part 1 - also checks accuracy.
virtual void saveWeights(AbcSimplex *model, int mode)
Save weights - this may initialize weights as well mode is - 1) before factorization 2) after factori...
Primal Column Pivot Abstract Base Class.
virtual void clearArrays()
Gets rid of all arrays.
AbcSimplex * model()
Returns model.
void djsAndDevex(CoinIndexedVector *updates, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1)
Update djs, weights for Devex using djs.
void djsAndDevex2(CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
Update djs, weights for Devex using pivot row.
int numberSwitched_
Number of times switched from partial dantzig to 0/2.
virtual ~AbcPrimalColumnSteepest()
Destructor.
CoinIndexedVector * alternateWeights_
alternate weight array (so we can unroll)
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...
int sizeFactorization_
weight array
double devex_
weight array
bool reference(int i) const
reference would be faster using AbcSimplex's status_, but I prefer to keep modularity.
double * weights_
weight array
int lastRectified_
weight array
Primal Column Pivot Steepest Edge Algorithm Class.
double * savedWeights_
save weight array (so we can use checkpoint)
void setReference(int i, bool trueFalse)
reference would be faster using AbcSimplex's status_, but I prefer to keep modularity.
void justDevex(CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
Update weights for Devex.
int savedPivotSequence_
weight array
int type()
Returns type (above 63 is extra information)
unsigned int * reference_
weight array
void checkAccuracy(int sequence, double relativeTolerance, CoinIndexedVector *rowArray1)
Checks accuracy - just for debug.
virtual int pivotColumn(CoinPartitionedVector *updates, CoinPartitionedVector *spareRow2, CoinPartitionedVector *spareColumn1)
Returns pivot column, -1 if none.