Cbc  2.9.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | List of all members
AbcDualRowSteepest Class Reference

Dual Row Pivot Steepest Edge Algorithm Class. More...

#include <AbcDualRowSteepest.hpp>

+ Inheritance diagram for AbcDualRowSteepest:
+ Collaboration diagram for AbcDualRowSteepest:

Public Types

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

Public Member Functions

Algorithmic methods
virtual int pivotRow ()
 Returns pivot row, -1 if none. More...
 
virtual double updateWeights (CoinIndexedVector &input, CoinIndexedVector &updatedColumn)
 Updates weights and returns pivot alpha. More...
 
virtual double updateWeights1 (CoinIndexedVector &input, CoinIndexedVector &updateColumn)
 Does most of work for weights and returns pivot alpha. More...
 
virtual void updateWeightsOnly (CoinIndexedVector &input)
 
virtual void updateWeights2 (CoinIndexedVector &input, CoinIndexedVector &updateColumn)
 Actually updates weights. More...
 
virtual void updatePrimalSolution (CoinIndexedVector &input, double theta)
 Updates primal solution (and maybe list of candidates) Uses input vector which it deletes. More...
 
virtual void updatePrimalSolutionAndWeights (CoinIndexedVector &weightsVector, CoinIndexedVector &updateColumn, double theta)
 
virtual void saveWeights (AbcSimplex *model, int mode)
 Saves any weights round factorization as pivot rows may change Save model May also recompute infeasibility stuff 1) before factorization 2) after good factorization (if weights empty may initialize) 3) after something happened but no factorization (e.g. More...
 
virtual void recomputeInfeasibilities ()
 Recompute infeasibilities. More...
 
virtual void clearArrays ()
 Gets rid of all arrays. More...
 
virtual bool looksOptimal () const
 Returns true if would not find any row. More...
 
Constructors and destructors
 AbcDualRowSteepest (int mode=3)
 Default Constructor 0 is uninitialized, 1 full, 2 is partial uninitialized, 3 starts as 2 but may switch to 1. More...
 
 AbcDualRowSteepest (const AbcDualRowSteepest &)
 Copy constructor. More...
 
AbcDualRowSteepestoperator= (const AbcDualRowSteepest &rhs)
 Assignment operator. More...
 
void fill (const AbcDualRowSteepest &rhs)
 Fill most values. More...
 
virtual ~AbcDualRowSteepest ()
 Destructor. More...
 
virtual AbcDualRowPivotclone (bool copyData=true) const
 Clone. More...
 
gets and sets
int mode () const
 Mode. More...
 
void setPersistence (Persistence life)
 Set/ get persistence. More...
 
Persistence persistence () const
 
CoinIndexedVectorinfeasible () const
 Infeasible vector. More...
 
CoinIndexedVectorweights () const
 Weights vector. More...
 
AbcSimplexmodel () const
 Model. More...
 
- Public Member Functions inherited from AbcDualRowPivot
virtual void checkAccuracy ()
 checks accuracy and may re-initialize (may be empty) More...
 
 AbcDualRowPivot ()
 Default Constructor. More...
 
 AbcDualRowPivot (const AbcDualRowPivot &)
 Copy constructor. More...
 
AbcDualRowPivotoperator= (const AbcDualRowPivot &rhs)
 Assignment operator. More...
 
virtual ~AbcDualRowPivot ()
 Destructor. More...
 
AbcSimplexmodel ()
 Returns model. More...
 
void setModel (AbcSimplex *newmodel)
 Sets model (normally to NULL) More...
 
int type ()
 Returns type (above 63 is extra information) More...
 

Private Attributes

Private member data

norm saved before going into update

double norm_
 
double factorizationRatio_
 Ratio of size of factorization to number of rows. More...
 
int state_
 Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number. More...
 
int mode_
 If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial, 3 switchable. More...
 
Persistence persistence_
 Life of weights. More...
 
CoinIndexedVectorweights_
 weight array More...
 
CoinIndexedVectorinfeasible_
 square of infeasibility array (just for infeasible rows) More...
 
CoinIndexedVectorsavedWeights_
 save weight array (so we can use checkpoint) More...
 

Additional Inherited Members

- Protected Attributes inherited from AbcDualRowPivot
AbcSimplexmodel_
 Pointer to model. More...
 
int type_
 Type of row pivot algorithm. More...
 

Detailed Description

Dual Row Pivot Steepest Edge Algorithm Class.

See Forrest-Goldfarb paper for algorithm

Definition at line 21 of file AbcDualRowSteepest.hpp.

Member Enumeration Documentation

enums for persistence

Enumerator
normal 
keep 

Definition at line 69 of file AbcDualRowSteepest.hpp.

Constructor & Destructor Documentation

AbcDualRowSteepest::AbcDualRowSteepest ( int  mode = 3)

Default Constructor 0 is uninitialized, 1 full, 2 is partial uninitialized, 3 starts as 2 but may switch to 1.

By partial is meant that the weights are updated as normal but only part of the infeasible basic variables are scanned. This can be faster on very easy problems.

AbcDualRowSteepest::AbcDualRowSteepest ( const AbcDualRowSteepest )

Copy constructor.

virtual AbcDualRowSteepest::~AbcDualRowSteepest ( )
virtual

Destructor.

Member Function Documentation

virtual int AbcDualRowSteepest::pivotRow ( )
virtual

Returns pivot row, -1 if none.

Implements AbcDualRowPivot.

virtual double AbcDualRowSteepest::updateWeights ( CoinIndexedVector input,
CoinIndexedVector updatedColumn 
)
virtual

Updates weights and returns pivot alpha.

Also does FT update

Implements AbcDualRowPivot.

virtual double AbcDualRowSteepest::updateWeights1 ( CoinIndexedVector input,
CoinIndexedVector updateColumn 
)
virtual

Does most of work for weights and returns pivot alpha.

Also does FT update

Implements AbcDualRowPivot.

virtual void AbcDualRowSteepest::updateWeightsOnly ( CoinIndexedVector input)
virtual

Implements AbcDualRowPivot.

virtual void AbcDualRowSteepest::updateWeights2 ( CoinIndexedVector input,
CoinIndexedVector updateColumn 
)
virtual

Actually updates weights.

Implements AbcDualRowPivot.

virtual void AbcDualRowSteepest::updatePrimalSolution ( CoinIndexedVector input,
double  theta 
)
virtual

Updates primal solution (and maybe list of candidates) Uses input vector which it deletes.

Implements AbcDualRowPivot.

virtual void AbcDualRowSteepest::updatePrimalSolutionAndWeights ( CoinIndexedVector weightsVector,
CoinIndexedVector updateColumn,
double  theta 
)
virtual

Reimplemented from AbcDualRowPivot.

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

Saves any weights round factorization as pivot rows may change Save model May also recompute infeasibility stuff 1) before factorization 2) after good factorization (if weights empty may initialize) 3) after something happened but no factorization (e.g.

check for infeasible) 4) as 2 but restore weights from previous snapshot 5) for strong branching - initialize (uninitialized) , infeasibilities

Reimplemented from AbcDualRowPivot.

virtual void AbcDualRowSteepest::recomputeInfeasibilities ( )
virtual

Recompute infeasibilities.

Reimplemented from AbcDualRowPivot.

virtual void AbcDualRowSteepest::clearArrays ( )
virtual

Gets rid of all arrays.

Reimplemented from AbcDualRowPivot.

virtual bool AbcDualRowSteepest::looksOptimal ( ) const
virtual

Returns true if would not find any row.

Reimplemented from AbcDualRowPivot.

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

Assignment operator.

void AbcDualRowSteepest::fill ( const AbcDualRowSteepest rhs)

Fill most values.

virtual AbcDualRowPivot* AbcDualRowSteepest::clone ( bool  copyData = true) const
virtual

Clone.

Implements AbcDualRowPivot.

int AbcDualRowSteepest::mode ( ) const
inline

Mode.

Definition at line 104 of file AbcDualRowSteepest.hpp.

void AbcDualRowSteepest::setPersistence ( Persistence  life)
inline

Set/ get persistence.

Definition at line 108 of file AbcDualRowSteepest.hpp.

Persistence AbcDualRowSteepest::persistence ( ) const
inline

Definition at line 111 of file AbcDualRowSteepest.hpp.

CoinIndexedVector* AbcDualRowSteepest::infeasible ( ) const
inline

Infeasible vector.

Definition at line 115 of file AbcDualRowSteepest.hpp.

CoinIndexedVector* AbcDualRowSteepest::weights ( ) const
inline

Weights vector.

Definition at line 118 of file AbcDualRowSteepest.hpp.

AbcSimplex* AbcDualRowSteepest::model ( ) const
inline

Model.

Definition at line 121 of file AbcDualRowSteepest.hpp.

Member Data Documentation

double AbcDualRowSteepest::norm_
private

Definition at line 130 of file AbcDualRowSteepest.hpp.

double AbcDualRowSteepest::factorizationRatio_
private

Ratio of size of factorization to number of rows.

Definition at line 132 of file AbcDualRowSteepest.hpp.

int AbcDualRowSteepest::state_
private

Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.

Definition at line 138 of file AbcDualRowSteepest.hpp.

int AbcDualRowSteepest::mode_
private

If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial, 3 switchable.

Definition at line 141 of file AbcDualRowSteepest.hpp.

Persistence AbcDualRowSteepest::persistence_
private

Life of weights.

Definition at line 143 of file AbcDualRowSteepest.hpp.

CoinIndexedVector* AbcDualRowSteepest::weights_
private

weight array

Definition at line 145 of file AbcDualRowSteepest.hpp.

CoinIndexedVector* AbcDualRowSteepest::infeasible_
private

square of infeasibility array (just for infeasible rows)

Definition at line 147 of file AbcDualRowSteepest.hpp.

CoinIndexedVector* AbcDualRowSteepest::savedWeights_
private

save weight array (so we can use checkpoint)

Definition at line 149 of file AbcDualRowSteepest.hpp.


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