Dual Row Pivot Steepest Edge Algorithm Class. More...
#include <ClpDualRowSteepest.hpp>
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 *spare, CoinIndexedVector *spare2, CoinIndexedVector *updatedColumn) |
Updates weights and returns pivot alpha. More... | |
virtual void | updatePrimalSolution (CoinIndexedVector *input, double theta, double &changeInObjective) |
Updates primal solution (and maybe list of candidates) Uses input vector which it deletes Computes change in objective function. More... | |
virtual void | saveWeights (ClpSimplex *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... | |
void | passInSavedWeights (const CoinIndexedVector *saved) |
Pass in saved weights. More... | |
CoinIndexedVector * | savedWeights () |
Get saved weights. 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 row. More... | |
virtual void | maximumPivotsChanged () |
Called when maximum pivots changes. More... | |
Constructors and destructors | |
ClpDualRowSteepest (int mode=3) | |
Default Constructor 0 is uninitialized, 1 full, 2 is partial uninitialized, 3 starts as 2 but may switch to 1. More... | |
ClpDualRowSteepest (const ClpDualRowSteepest &) | |
Copy constructor. More... | |
ClpDualRowSteepest & | operator= (const ClpDualRowSteepest &rhs) |
Assignment operator. More... | |
void | fill (const ClpDualRowSteepest &rhs) |
Fill most values. More... | |
virtual | ~ClpDualRowSteepest () |
Destructor. More... | |
virtual ClpDualRowPivot * | clone (bool copyData=true) const |
Clone. More... | |
gets and sets | |
int | mode () const |
Mode. More... | |
void | setMode (int mode) |
Set mode. More... | |
void | setPersistence (Persistence life) |
Set/ get persistence. More... | |
Persistence | persistence () const |
Mode. More... | |
![]() | |
virtual void | checkAccuracy () |
checks accuracy and may re-initialize (may be empty) More... | |
ClpDualRowPivot () | |
Default Constructor. More... | |
ClpDualRowPivot (const ClpDualRowPivot &) | |
Copy constructor. More... | |
ClpDualRowPivot & | operator= (const ClpDualRowPivot &rhs) |
Assignment operator. More... | |
virtual | ~ClpDualRowPivot () |
Destructor. More... | |
ClpSimplex * | model () |
Returns model. More... | |
void | setModel (ClpSimplex *newmodel) |
Sets model (normally to NULL) More... | |
int | type () |
Returns type (above 63 is extra information) More... | |
Private Attributes | |
Private member data | |
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... | |
double * | weights_ |
weight array More... | |
CoinIndexedVector * | infeasible_ |
square of infeasibility array (just for infeasible rows) More... | |
CoinIndexedVector * | alternateWeights_ |
alternate weight array (so we can unroll) More... | |
CoinIndexedVector * | savedWeights_ |
save weight array (so we can use checkpoint) More... | |
int * | dubiousWeights_ |
Dubious weights. More... | |
Additional Inherited Members | |
![]() | |
ClpSimplex * | model_ |
Pointer to model. More... | |
int | type_ |
Type of row pivot algorithm. More... | |
Dual Row Pivot Steepest Edge Algorithm Class.
See Forrest-Goldfarb paper for algorithm
Definition at line 21 of file ClpDualRowSteepest.hpp.
ClpDualRowSteepest::ClpDualRowSteepest | ( | 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.
ClpDualRowSteepest::ClpDualRowSteepest | ( | const ClpDualRowSteepest & | ) |
Copy constructor.
|
virtual |
Destructor.
|
virtual |
Returns pivot row, -1 if none.
Implements ClpDualRowPivot.
|
virtual |
|
virtual |
Updates primal solution (and maybe list of candidates) Uses input vector which it deletes Computes change in objective function.
Implements ClpDualRowPivot.
|
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 ClpDualRowPivot.
void ClpDualRowSteepest::passInSavedWeights | ( | const CoinIndexedVector * | saved | ) |
Pass in saved weights.
|
inline |
Get saved weights.
Definition at line 60 of file ClpDualRowSteepest.hpp.
|
virtual |
Gets rid of last update.
Reimplemented from ClpDualRowPivot.
|
virtual |
Gets rid of all arrays.
Reimplemented from ClpDualRowPivot.
|
virtual |
Returns true if would not find any row.
Reimplemented from ClpDualRowPivot.
|
virtual |
Called when maximum pivots changes.
Reimplemented from ClpDualRowPivot.
ClpDualRowSteepest& ClpDualRowSteepest::operator= | ( | const ClpDualRowSteepest & | rhs | ) |
Assignment operator.
void ClpDualRowSteepest::fill | ( | const ClpDualRowSteepest & | rhs | ) |
Fill most values.
|
virtual |
Clone.
Implements ClpDualRowPivot.
|
inline |
Mode.
Definition at line 109 of file ClpDualRowSteepest.hpp.
|
inline |
Set mode.
Definition at line 113 of file ClpDualRowSteepest.hpp.
|
inline |
Set/ get persistence.
Definition at line 117 of file ClpDualRowSteepest.hpp.
|
inline |
Mode.
Definition at line 120 of file ClpDualRowSteepest.hpp.
|
private |
Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.
Definition at line 134 of file ClpDualRowSteepest.hpp.
|
private |
If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial, 3 switchable.
Definition at line 137 of file ClpDualRowSteepest.hpp.
|
private |
Life of weights.
Definition at line 139 of file ClpDualRowSteepest.hpp.
|
private |
weight array
Definition at line 141 of file ClpDualRowSteepest.hpp.
|
private |
square of infeasibility array (just for infeasible rows)
Definition at line 143 of file ClpDualRowSteepest.hpp.
|
private |
alternate weight array (so we can unroll)
Definition at line 145 of file ClpDualRowSteepest.hpp.
|
private |
save weight array (so we can use checkpoint)
Definition at line 147 of file ClpDualRowSteepest.hpp.
|
private |
Dubious weights.
Definition at line 149 of file ClpDualRowSteepest.hpp.