Clp  1.16.6
Public Types | List of all members
AbcPrimalColumnSteepest Class Reference

Primal Column Pivot Steepest Edge Algorithm Class. More...

#include <AbcPrimalColumnSteepest.hpp>

+ Inheritance diagram for AbcPrimalColumnSteepest:
+ Collaboration diagram for AbcPrimalColumnSteepest:

Public Types

enum  Persistence { normal = 0x00, keep = 0x01 }
 enums for persistence More...
 

Public Member Functions

Algorithmic methods
virtual int pivotColumn (CoinPartitionedVector *updates, CoinPartitionedVector *spareRow2, CoinPartitionedVector *spareColumn1)
 Returns pivot column, -1 if none. More...
 
void justDjs (CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
 Just update djs. More...
 
int partialPricing (CoinIndexedVector *updates, int numberWanted, int numberLook)
 Update djs doing partial pricing (dantzig) More...
 
void djsAndDevex (CoinIndexedVector *updates, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1)
 Update djs, weights for Devex using djs. More...
 
void djsAndDevex2 (CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
 Update djs, weights for Devex using pivot row. More...
 
void justDevex (CoinIndexedVector *updates, CoinIndexedVector *spareColumn1)
 Update weights for Devex. More...
 
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 extra array. More...
 
virtual void updateWeights (CoinIndexedVector *input)
 Updates weights - part 1 - also checks accuracy. More...
 
void checkAccuracy (int sequence, double relativeTolerance, CoinIndexedVector *rowArray1)
 Checks accuracy - just for debug. More...
 
void initializeWeights ()
 Initialize weights. More...
 
virtual void saveWeights (AbcSimplex *model, int mode)
 Save weights - this may initialize weights as well mode is - 1) before factorization 2) after factorization 3) just redo infeasibilities 4) restore weights 5) at end of values pass (so need initialization) More...
 
virtual void unrollWeights ()
 Gets rid of last update. More...
 
virtual void clearArrays ()
 Gets rid of all arrays. More...
 
virtual bool looksOptimal () const
 Returns true if would not find any column. More...
 
virtual void maximumPivotsChanged ()
 Called when maximum pivots changes. More...
 
gets and sets
int mode () const
 Mode. More...
 
Constructors and destructors
 AbcPrimalColumnSteepest (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. More...
 
 AbcPrimalColumnSteepest (const AbcPrimalColumnSteepest &rhs)
 Copy constructor. More...
 
AbcPrimalColumnSteepestoperator= (const AbcPrimalColumnSteepest &rhs)
 Assignment operator. More...
 
virtual ~AbcPrimalColumnSteepest ()
 Destructor. More...
 
virtual AbcPrimalColumnPivotclone (bool copyData=true) const
 Clone. More...
 
Private functions to deal with devex
bool reference (int i) const
 reference would be faster using AbcSimplex's status_, but I prefer to keep modularity. More...
 
void setReference (int i, bool trueFalse)
 
void setPersistence (Persistence life)
 Set/ get persistence. More...
 
Persistence persistence () const
 
- Public Member Functions inherited from AbcPrimalColumnPivot
virtual int pivotRow (double &way)
 Signals pivot row choice: -2 (default) - use normal pivot row choice -1 to numberRows-1 - use this (will be checked) way should be -1 to go to lower bound, +1 to upper bound. More...
 
virtual void setLooksOptimal (bool flag)
 Sets optimality flag (for advanced use) More...
 
 AbcPrimalColumnPivot ()
 Default Constructor. More...
 
 AbcPrimalColumnPivot (const AbcPrimalColumnPivot &)
 Copy constructor. More...
 
AbcPrimalColumnPivotoperator= (const AbcPrimalColumnPivot &rhs)
 Assignment operator. More...
 
virtual ~AbcPrimalColumnPivot ()
 Destructor. More...
 
AbcSimplexmodel ()
 Returns model. More...
 
void setModel (AbcSimplex *newmodel)
 Sets model. More...
 
int type ()
 Returns type (above 63 is extra information) More...
 
virtual int numberSprintColumns (int &numberIterations) const
 Returns number of extra columns for sprint algorithm - 0 means off. More...
 
virtual void switchOffSprint ()
 Switch off sprint idea. More...
 

Additional Inherited Members

- Protected Attributes inherited from AbcPrimalColumnPivot
AbcSimplexmodel_
 Pointer to model. More...
 
int type_
 Type of column pivot algorithm. More...
 
bool looksOptimal_
 Says if looks optimal (normally computed) More...
 

Detailed Description

Primal Column Pivot Steepest Edge Algorithm Class.

See Forrest-Goldfarb paper for algorithm

Definition at line 23 of file AbcPrimalColumnSteepest.hpp.

Member Enumeration Documentation

enums for persistence

Enumerator
normal 
keep 

Definition at line 108 of file AbcPrimalColumnSteepest.hpp.

Constructor & Destructor Documentation

AbcPrimalColumnSteepest::AbcPrimalColumnSteepest ( 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.

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.

AbcPrimalColumnSteepest::AbcPrimalColumnSteepest ( const AbcPrimalColumnSteepest rhs)

Copy constructor.

virtual AbcPrimalColumnSteepest::~AbcPrimalColumnSteepest ( )
virtual

Destructor.

Member Function Documentation

virtual int AbcPrimalColumnSteepest::pivotColumn ( CoinPartitionedVector *  updates,
CoinPartitionedVector *  spareRow2,
CoinPartitionedVector *  spareColumn1 
)
virtual

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 AbcPrimalColumnPivot.

void AbcPrimalColumnSteepest::justDjs ( CoinIndexedVector *  updates,
CoinIndexedVector *  spareColumn1 
)

Just update djs.

int AbcPrimalColumnSteepest::partialPricing ( CoinIndexedVector *  updates,
int  numberWanted,
int  numberLook 
)

Update djs doing partial pricing (dantzig)

void AbcPrimalColumnSteepest::djsAndDevex ( CoinIndexedVector *  updates,
CoinIndexedVector *  spareRow2,
CoinIndexedVector *  spareColumn1 
)

Update djs, weights for Devex using djs.

void AbcPrimalColumnSteepest::djsAndDevex2 ( CoinIndexedVector *  updates,
CoinIndexedVector *  spareColumn1 
)

Update djs, weights for Devex using pivot row.

void AbcPrimalColumnSteepest::justDevex ( CoinIndexedVector *  updates,
CoinIndexedVector *  spareColumn1 
)

Update weights for Devex.

int AbcPrimalColumnSteepest::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 extra array.

virtual void AbcPrimalColumnSteepest::updateWeights ( CoinIndexedVector *  input)
virtual

Updates weights - part 1 - also checks accuracy.

Reimplemented from AbcPrimalColumnPivot.

void AbcPrimalColumnSteepest::checkAccuracy ( int  sequence,
double  relativeTolerance,
CoinIndexedVector *  rowArray1 
)

Checks accuracy - just for debug.

void AbcPrimalColumnSteepest::initializeWeights ( )

Initialize weights.

virtual void AbcPrimalColumnSteepest::saveWeights ( AbcSimplex model,
int  mode 
)
virtual

Save weights - this may initialize weights as well mode is - 1) before factorization 2) after factorization 3) just redo infeasibilities 4) restore weights 5) at end of values pass (so need initialization)

Implements AbcPrimalColumnPivot.

virtual void AbcPrimalColumnSteepest::unrollWeights ( )
virtual

Gets rid of last update.

virtual void AbcPrimalColumnSteepest::clearArrays ( )
virtual

Gets rid of all arrays.

Reimplemented from AbcPrimalColumnPivot.

virtual bool AbcPrimalColumnSteepest::looksOptimal ( ) const
virtual

Returns true if would not find any column.

Reimplemented from AbcPrimalColumnPivot.

virtual void AbcPrimalColumnSteepest::maximumPivotsChanged ( )
virtual

Called when maximum pivots changes.

Reimplemented from AbcPrimalColumnPivot.

int AbcPrimalColumnSteepest::mode ( ) const
inline

Mode.

Definition at line 101 of file AbcPrimalColumnSteepest.hpp.

AbcPrimalColumnSteepest& AbcPrimalColumnSteepest::operator= ( const AbcPrimalColumnSteepest rhs)

Assignment operator.

virtual AbcPrimalColumnPivot* AbcPrimalColumnSteepest::clone ( bool  copyData = true) const
virtual

Clone.

Implements AbcPrimalColumnPivot.

bool AbcPrimalColumnSteepest::reference ( int  i) const
inline

reference would be faster using AbcSimplex's status_, but I prefer to keep modularity.

Definition at line 143 of file AbcPrimalColumnSteepest.hpp.

void AbcPrimalColumnSteepest::setReference ( int  i,
bool  trueFalse 
)
inline

Definition at line 146 of file AbcPrimalColumnSteepest.hpp.

void AbcPrimalColumnSteepest::setPersistence ( Persistence  life)
inline

Set/ get persistence.

Definition at line 155 of file AbcPrimalColumnSteepest.hpp.

Persistence AbcPrimalColumnSteepest::persistence ( ) const
inline

Definition at line 158 of file AbcPrimalColumnSteepest.hpp.


The documentation for this class was generated from the following file: