#include <ClpDynamicMatrix.hpp>
Inheritance diagram for ClpDynamicMatrix:
Public Types | |
soloKey = 0x00 | |
inSmall = 0x01 | |
atUpperBound = 0x02 | |
atLowerBound = 0x03 | |
enum | DynamicStatus { soloKey = 0x00, inSmall = 0x01, atUpperBound = 0x02, atLowerBound = 0x03 } |
enums for status of various sorts More... | |
Public Member Functions | |
Main functions provided | |
virtual void | partialPricing (ClpSimplex *model, double start, double end, int &bestSequence, int &numberWanted) |
Partial pricing. | |
virtual int | updatePivot (ClpSimplex *model, double oldInValue, double oldOutValue) |
update information for a pivot (and effective rhs) | |
virtual double * | rhsOffset (ClpSimplex *model, bool forceRefresh=false, bool check=false) |
Returns effective RHS offset if it is being used. | |
virtual void | times (double scalar, const double *x, double *y) const |
Return y + A * scalar *x in y . | |
void | modifyOffset (int sequence, double amount) |
Modifies rhs offset. | |
double | keyValue (int iSet) const |
Gets key value when none in small. | |
virtual void | dualExpanded (ClpSimplex *model, CoinIndexedVector *array, double *other, int mode) |
mode=0 - Set up before "updateTranspose" and "transposeTimes" for duals using extended updates array (and may use other if dual values pass) mode=1 - Update dual solution after "transposeTimes" using extended rows. | |
virtual int | generalExpanded (ClpSimplex *model, int mode, int &number) |
mode=0 - Create list of non-key basics in pivotVariable_ using number as numberBasic in and out mode=1 - Set all key variables as basic mode=2 - return number extra rows needed, number gives maximum number basic mode=3 - before replaceColumn mode=4 - return 1 if can do primal, 2 if dual, 3 if both mode=5 - save any status stuff (when in good state) mode=6 - restore status stuff mode=7 - flag given variable (normally sequenceIn) mode=8 - unflag all variables mode=9 - synchronize costs mode=10 - return 1 if there may be changing bounds on variable (column generation) mode=11 - make sure set is clean (used when a variable rejected - but not flagged) mode=12 - after factorize but before permute stuff mode=13 - at end of simplex to delete stuff | |
virtual int | refresh (ClpSimplex *model) |
Purely for column generation and similar ideas. | |
virtual void | createVariable (ClpSimplex *model, int &bestSequence) |
Creates a variable. | |
virtual double | reducedCost (ClpSimplex *model, int sequence) const |
Returns reduced cost of a variable. | |
void | gubCrash () |
Does gub crash. | |
void | initialProblem () |
Populates initial matrix from dynamic status. | |
int | addColumn (int numberEntries, const int *row, const float *element, float cost, float lower, float upper, int iSet, DynamicStatus status) |
Adds in a column to gub structure (called from descendant) and returns sequence. | |
virtual void | packDown (const int *in, int numberToPack) |
If addColumn forces compression then this allows descendant to know what to do. | |
double | columnLower (int sequence) const |
Gets lower bound (to simplify coding). | |
double | columnUpper (int sequence) const |
Gets upper bound (to simplify coding). | |
Constructors, destructor | |
ClpDynamicMatrix () | |
Default constructor. | |
ClpDynamicMatrix (ClpSimplex *model, int numberSets, int numberColumns, const int *starts, const double *lower, const double *upper, const int *startColumn, const int *row, const double *element, const double *cost, const double *columnLower=NULL, const double *columnUpper=NULL, const unsigned char *status=NULL, const unsigned char *dynamicStatus=NULL) | |
This is the real constructor. | |
virtual | ~ClpDynamicMatrix () |
Destructor. | |
Copy method | |
ClpDynamicMatrix (const ClpDynamicMatrix &) | |
The copy constructor. | |
ClpDynamicMatrix (const CoinPackedMatrix &) | |
The copy constructor from an CoinPackedMatrix. | |
ClpDynamicMatrix & | operator= (const ClpDynamicMatrix &) |
The copy constructor. | |
virtual ClpMatrixBase * | clone () const |
Clone. | |
gets and sets | |
ClpSimplex::Status | getStatus (int sequence) const |
Status of row slacks. | |
void | setStatus (int sequence, ClpSimplex::Status status) |
Status of row slacks. | |
int | numberSets () const |
Number of sets (dynamic rows). | |
bool | flagged (int i) const |
Whether flagged. | |
void | setFlagged (int i) |
Status of row slacks. | |
void | unsetFlagged (int i) |
Status of row slacks. | |
void | setDynamicStatus (int sequence, DynamicStatus status) |
Status of row slacks. | |
DynamicStatus | getDynamicStatus (int sequence) const |
Status of row slacks. | |
double | objectiveOffset () const |
Saved value of objective offset. | |
CoinBigIndex * | startColumn () const |
Starts of each column. | |
int * | row () const |
rows | |
float * | element () const |
elements | |
float * | cost () const |
costs | |
int * | id () const |
ids of active columns (just index here) | |
float * | columnLower () const |
Optional lower bounds on columns. | |
float * | columnUpper () const |
Optional upper bounds on columns. | |
float * | lowerSet () const |
Lower bounds on sets. | |
float * | upperSet () const |
Upper bounds on sets. | |
int | numberGubColumns () const |
size | |
int | firstAvailable () const |
first free | |
int | firstDynamic () const |
first dynamic | |
int | lastDynamic () const |
number of columns in dynamic model | |
int | numberStaticRows () const |
number of rows in original model | |
int | numberElements () const |
size of working matrix (max) | |
int * | keyVariable () const |
Status of row slacks. | |
void | switchOffCheck () |
Switches off dj checking each factorization (for BIG models). | |
unsigned char * | gubRowStatus () const |
Status region for gub slacks. | |
unsigned char * | dynamicStatus () const |
Status region for gub variables. | |
int | whichSet (int sequence) const |
Returns which set a variable is in. | |
Protected Attributes | |
Data members | |
The data members are protected to allow access for derived classes. | |
double | sumDualInfeasibilities_ |
Sum of dual infeasibilities. | |
double | sumPrimalInfeasibilities_ |
Sum of primal infeasibilities. | |
double | sumOfRelaxedDualInfeasibilities_ |
Sum of Dual infeasibilities using tolerance based on error in duals. | |
double | sumOfRelaxedPrimalInfeasibilities_ |
Sum of Primal infeasibilities using tolerance based on error in primals. | |
double | savedBestGubDual_ |
Saved best dual on gub row in pricing. | |
int | savedBestSet_ |
Saved best set in pricing. | |
int * | backToPivotRow_ |
Backward pointer to pivot row !!! | |
int * | keyVariable_ |
Key variable of set (only accurate if none in small problem). | |
int * | toIndex_ |
Backward pointer to extra row. | |
int * | fromIndex_ |
Sum of dual infeasibilities. | |
int | numberSets_ |
Number of sets (dynamic rows). | |
int | numberActiveSets_ |
Number of active sets. | |
double | objectiveOffset_ |
Saved value of objective offset. | |
float * | lowerSet_ |
Lower bounds on sets. | |
float * | upperSet_ |
Upper bounds on sets. | |
unsigned char * | status_ |
Status of slack on set. | |
ClpSimplex * | model_ |
Pointer back to model. | |
int | firstAvailable_ |
first free | |
int | firstAvailableBefore_ |
first free when iteration started | |
int | firstDynamic_ |
first dynamic | |
int | lastDynamic_ |
number of columns in dynamic model | |
int | numberStaticRows_ |
number of rows in original model | |
int | numberElements_ |
size of working matrix (max) | |
int | numberDualInfeasibilities_ |
Number of dual infeasibilities. | |
int | numberPrimalInfeasibilities_ |
Number of primal infeasibilities. | |
int | noCheck_ |
If pricing will declare victory (i.e. | |
double | infeasibilityWeight_ |
Infeasibility weight when last full pass done. | |
int | numberGubColumns_ |
size | |
int | maximumGubColumns_ |
current maximum number of columns (then compress) | |
int | maximumElements_ |
current maximum number of elemnts (then compress) | |
int * | startSet_ |
Start of each set. | |
int * | next_ |
next in chain | |
CoinBigIndex * | startColumn_ |
Starts of each column. | |
int * | row_ |
rows | |
float * | element_ |
elements | |
float * | cost_ |
costs | |
int * | id_ |
ids of active columns (just index here) | |
unsigned char * | dynamicStatus_ |
for status and which bound | |
float * | columnLower_ |
Optional lower bounds on columns. | |
float * | columnUpper_ |
Optional upper bounds on columns. |
This version inherits from ClpPackedMatrix and knows that the real matrix is gub. A later version could use shortest path to generate columns.
Definition at line 17 of file ClpDynamicMatrix.hpp.
ClpDynamicMatrix::ClpDynamicMatrix | ( | ) |
Default constructor.
ClpDynamicMatrix::ClpDynamicMatrix | ( | ClpSimplex * | model, | |
int | numberSets, | |||
int | numberColumns, | |||
const int * | starts, | |||
const double * | lower, | |||
const double * | upper, | |||
const int * | startColumn, | |||
const int * | row, | |||
const double * | element, | |||
const double * | cost, | |||
const double * | columnLower = NULL , |
|||
const double * | columnUpper = NULL , |
|||
const unsigned char * | status = NULL , |
|||
const unsigned char * | dynamicStatus = NULL | |||
) |
This is the real constructor.
It assumes factorization frequency will not be changed. This resizes model !!!! The contents of original matrix in model will be taken over and original matrix will be sanitized so can be deleted (to avoid a very small memory leak)
virtual ClpDynamicMatrix::~ClpDynamicMatrix | ( | ) | [virtual] |
Destructor.
ClpDynamicMatrix::ClpDynamicMatrix | ( | const ClpDynamicMatrix & | ) |
The copy constructor.
ClpDynamicMatrix::ClpDynamicMatrix | ( | const CoinPackedMatrix & | ) |
The copy constructor from an CoinPackedMatrix.
virtual void ClpDynamicMatrix::partialPricing | ( | ClpSimplex * | model, | |
double | start, | |||
double | end, | |||
int & | bestSequence, | |||
int & | numberWanted | |||
) | [virtual] |
virtual int ClpDynamicMatrix::updatePivot | ( | ClpSimplex * | model, | |
double | oldInValue, | |||
double | oldOutValue | |||
) | [virtual] |
virtual double* ClpDynamicMatrix::rhsOffset | ( | ClpSimplex * | model, | |
bool | forceRefresh = false , |
|||
bool | check = false | |||
) | [virtual] |
Returns effective RHS offset if it is being used.
This is used for long problems or big dynamic or anywhere where going through full columns is expensive. This may re-compute
Reimplemented from ClpMatrixBase.
virtual void ClpDynamicMatrix::times | ( | double | scalar, | |
const double * | x, | |||
double * | y | |||
) | const [virtual] |
Return y + A * scalar *x
in y
.
x
must be of size numColumns()
y
must be of size numRows()
Reimplemented from ClpPackedMatrix.
void ClpDynamicMatrix::modifyOffset | ( | int | sequence, | |
double | amount | |||
) |
Modifies rhs offset.
double ClpDynamicMatrix::keyValue | ( | int | iSet | ) | const |
Gets key value when none in small.
virtual void ClpDynamicMatrix::dualExpanded | ( | ClpSimplex * | model, | |
CoinIndexedVector * | array, | |||
double * | other, | |||
int | mode | |||
) | [virtual] |
mode=0 - Set up before "updateTranspose" and "transposeTimes" for duals using extended updates array (and may use other if dual values pass) mode=1 - Update dual solution after "transposeTimes" using extended rows.
mode=2 - Compute all djs and compute key dual infeasibilities mode=3 - Report on key dual infeasibilities mode=4 - Modify before updateTranspose in partial pricing
Reimplemented from ClpMatrixBase.
virtual int ClpDynamicMatrix::generalExpanded | ( | ClpSimplex * | model, | |
int | mode, | |||
int & | number | |||
) | [virtual] |
mode=0 - Create list of non-key basics in pivotVariable_ using number as numberBasic in and out mode=1 - Set all key variables as basic mode=2 - return number extra rows needed, number gives maximum number basic mode=3 - before replaceColumn mode=4 - return 1 if can do primal, 2 if dual, 3 if both mode=5 - save any status stuff (when in good state) mode=6 - restore status stuff mode=7 - flag given variable (normally sequenceIn) mode=8 - unflag all variables mode=9 - synchronize costs mode=10 - return 1 if there may be changing bounds on variable (column generation) mode=11 - make sure set is clean (used when a variable rejected - but not flagged) mode=12 - after factorize but before permute stuff mode=13 - at end of simplex to delete stuff
Reimplemented from ClpMatrixBase.
virtual int ClpDynamicMatrix::refresh | ( | ClpSimplex * | model | ) | [virtual] |
Purely for column generation and similar ideas.
Allows matrix and any bounds or costs to be updated (sensibly). Returns non-zero if any changes.
Reimplemented from ClpPackedMatrix.
virtual void ClpDynamicMatrix::createVariable | ( | ClpSimplex * | model, | |
int & | bestSequence | |||
) | [virtual] |
Creates a variable.
This is called after partial pricing and will modify matrix. Will update bestSequence.
Reimplemented from ClpMatrixBase.
Reimplemented in ClpDynamicExampleMatrix.
virtual double ClpDynamicMatrix::reducedCost | ( | ClpSimplex * | model, | |
int | sequence | |||
) | const [virtual] |
void ClpDynamicMatrix::gubCrash | ( | ) |
Does gub crash.
void ClpDynamicMatrix::initialProblem | ( | ) |
Populates initial matrix from dynamic status.
int ClpDynamicMatrix::addColumn | ( | int | numberEntries, | |
const int * | row, | |||
const float * | element, | |||
float | cost, | |||
float | lower, | |||
float | upper, | |||
int | iSet, | |||
DynamicStatus | status | |||
) |
Adds in a column to gub structure (called from descendant) and returns sequence.
virtual void ClpDynamicMatrix::packDown | ( | const int * | in, | |
int | numberToPack | |||
) | [inline, virtual] |
If addColumn forces compression then this allows descendant to know what to do.
If >=0 then entry stayed in, if -1 then entry went out to lower bound.of zero. Entries at upper bound (really nonzero) never go out (at present).
Reimplemented in ClpDynamicExampleMatrix.
Definition at line 102 of file ClpDynamicMatrix.hpp.
double ClpDynamicMatrix::columnLower | ( | int | sequence | ) | const [inline] |
Gets lower bound (to simplify coding).
Definition at line 104 of file ClpDynamicMatrix.hpp.
References columnLower_.
double ClpDynamicMatrix::columnUpper | ( | int | sequence | ) | const [inline] |
Gets upper bound (to simplify coding).
Definition at line 107 of file ClpDynamicMatrix.hpp.
References COIN_DBL_MAX, and columnUpper_.
ClpDynamicMatrix& ClpDynamicMatrix::operator= | ( | const ClpDynamicMatrix & | ) |
The copy constructor.
virtual ClpMatrixBase* ClpDynamicMatrix::clone | ( | ) | const [virtual] |
ClpSimplex::Status ClpDynamicMatrix::getStatus | ( | int | sequence | ) | const [inline] |
void ClpDynamicMatrix::setStatus | ( | int | sequence, | |
ClpSimplex::Status | status | |||
) | [inline] |
int ClpDynamicMatrix::numberSets | ( | ) | const [inline] |
Number of sets (dynamic rows).
Definition at line 160 of file ClpDynamicMatrix.hpp.
References numberSets_.
bool ClpDynamicMatrix::flagged | ( | int | i | ) | const [inline] |
void ClpDynamicMatrix::setFlagged | ( | int | i | ) | [inline] |
Status of row slacks.
Definition at line 166 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
void ClpDynamicMatrix::unsetFlagged | ( | int | i | ) | [inline] |
Status of row slacks.
Reimplemented in ClpDynamicExampleMatrix.
Definition at line 169 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
void ClpDynamicMatrix::setDynamicStatus | ( | int | sequence, | |
DynamicStatus | status | |||
) | [inline] |
Status of row slacks.
Definition at line 172 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
DynamicStatus ClpDynamicMatrix::getDynamicStatus | ( | int | sequence | ) | const [inline] |
Status of row slacks.
Definition at line 178 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
double ClpDynamicMatrix::objectiveOffset | ( | ) | const [inline] |
Saved value of objective offset.
Definition at line 181 of file ClpDynamicMatrix.hpp.
References objectiveOffset_.
CoinBigIndex* ClpDynamicMatrix::startColumn | ( | ) | const [inline] |
Starts of each column.
Definition at line 184 of file ClpDynamicMatrix.hpp.
References startColumn_.
int* ClpDynamicMatrix::row | ( | ) | const [inline] |
float* ClpDynamicMatrix::element | ( | ) | const [inline] |
float* ClpDynamicMatrix::cost | ( | ) | const [inline] |
int* ClpDynamicMatrix::id | ( | ) | const [inline] |
ids of active columns (just index here)
Definition at line 196 of file ClpDynamicMatrix.hpp.
References id_.
float* ClpDynamicMatrix::columnLower | ( | ) | const [inline] |
Optional lower bounds on columns.
Definition at line 199 of file ClpDynamicMatrix.hpp.
References columnLower_.
float* ClpDynamicMatrix::columnUpper | ( | ) | const [inline] |
Optional upper bounds on columns.
Definition at line 202 of file ClpDynamicMatrix.hpp.
References columnUpper_.
float* ClpDynamicMatrix::lowerSet | ( | ) | const [inline] |
float* ClpDynamicMatrix::upperSet | ( | ) | const [inline] |
int ClpDynamicMatrix::numberGubColumns | ( | ) | const [inline] |
int ClpDynamicMatrix::firstAvailable | ( | ) | const [inline] |
int ClpDynamicMatrix::firstDynamic | ( | ) | const [inline] |
int ClpDynamicMatrix::lastDynamic | ( | ) | const [inline] |
number of columns in dynamic model
Definition at line 220 of file ClpDynamicMatrix.hpp.
References lastDynamic_.
int ClpDynamicMatrix::numberStaticRows | ( | ) | const [inline] |
number of rows in original model
Definition at line 223 of file ClpDynamicMatrix.hpp.
References numberStaticRows_.
int ClpDynamicMatrix::numberElements | ( | ) | const [inline] |
size of working matrix (max)
Definition at line 226 of file ClpDynamicMatrix.hpp.
References numberElements_.
int* ClpDynamicMatrix::keyVariable | ( | ) | const [inline] |
void ClpDynamicMatrix::switchOffCheck | ( | ) |
Switches off dj checking each factorization (for BIG models).
unsigned char* ClpDynamicMatrix::gubRowStatus | ( | ) | const [inline] |
Status region for gub slacks.
Definition at line 233 of file ClpDynamicMatrix.hpp.
References status_.
unsigned char* ClpDynamicMatrix::dynamicStatus | ( | ) | const [inline] |
Status region for gub variables.
Definition at line 236 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
int ClpDynamicMatrix::whichSet | ( | int | sequence | ) | const |
Returns which set a variable is in.
double ClpDynamicMatrix::sumDualInfeasibilities_ [protected] |
double ClpDynamicMatrix::sumPrimalInfeasibilities_ [protected] |
double ClpDynamicMatrix::sumOfRelaxedDualInfeasibilities_ [protected] |
Sum of Dual infeasibilities using tolerance based on error in duals.
Definition at line 252 of file ClpDynamicMatrix.hpp.
double ClpDynamicMatrix::sumOfRelaxedPrimalInfeasibilities_ [protected] |
Sum of Primal infeasibilities using tolerance based on error in primals.
Definition at line 254 of file ClpDynamicMatrix.hpp.
double ClpDynamicMatrix::savedBestGubDual_ [protected] |
int ClpDynamicMatrix::savedBestSet_ [protected] |
int* ClpDynamicMatrix::backToPivotRow_ [protected] |
int* ClpDynamicMatrix::keyVariable_ [mutable, protected] |
Key variable of set (only accurate if none in small problem).
Definition at line 262 of file ClpDynamicMatrix.hpp.
Referenced by keyVariable().
int* ClpDynamicMatrix::toIndex_ [protected] |
int* ClpDynamicMatrix::fromIndex_ [protected] |
int ClpDynamicMatrix::numberSets_ [protected] |
Number of sets (dynamic rows).
Definition at line 268 of file ClpDynamicMatrix.hpp.
Referenced by numberSets().
int ClpDynamicMatrix::numberActiveSets_ [protected] |
double ClpDynamicMatrix::objectiveOffset_ [protected] |
Saved value of objective offset.
Definition at line 272 of file ClpDynamicMatrix.hpp.
Referenced by objectiveOffset().
float* ClpDynamicMatrix::lowerSet_ [protected] |
Lower bounds on sets.
Definition at line 274 of file ClpDynamicMatrix.hpp.
Referenced by lowerSet().
float* ClpDynamicMatrix::upperSet_ [protected] |
Upper bounds on sets.
Definition at line 276 of file ClpDynamicMatrix.hpp.
Referenced by upperSet().
unsigned char* ClpDynamicMatrix::status_ [protected] |
Status of slack on set.
Definition at line 278 of file ClpDynamicMatrix.hpp.
Referenced by getStatus(), gubRowStatus(), and setStatus().
ClpSimplex* ClpDynamicMatrix::model_ [protected] |
int ClpDynamicMatrix::firstAvailable_ [protected] |
int ClpDynamicMatrix::firstAvailableBefore_ [protected] |
int ClpDynamicMatrix::firstDynamic_ [protected] |
int ClpDynamicMatrix::lastDynamic_ [protected] |
number of columns in dynamic model
Definition at line 288 of file ClpDynamicMatrix.hpp.
Referenced by lastDynamic().
int ClpDynamicMatrix::numberStaticRows_ [protected] |
number of rows in original model
Definition at line 290 of file ClpDynamicMatrix.hpp.
Referenced by numberStaticRows().
int ClpDynamicMatrix::numberElements_ [protected] |
size of working matrix (max)
Definition at line 292 of file ClpDynamicMatrix.hpp.
Referenced by numberElements().
int ClpDynamicMatrix::numberDualInfeasibilities_ [protected] |
int ClpDynamicMatrix::numberPrimalInfeasibilities_ [protected] |
int ClpDynamicMatrix::noCheck_ [protected] |
If pricing will declare victory (i.e.
no check every factorization). -1 - always check 0 - don't check 1 - in don't check mode but looks optimal
Definition at line 302 of file ClpDynamicMatrix.hpp.
double ClpDynamicMatrix::infeasibilityWeight_ [protected] |
int ClpDynamicMatrix::numberGubColumns_ [protected] |
int ClpDynamicMatrix::maximumGubColumns_ [protected] |
current maximum number of columns (then compress)
Definition at line 308 of file ClpDynamicMatrix.hpp.
int ClpDynamicMatrix::maximumElements_ [protected] |
current maximum number of elemnts (then compress)
Definition at line 310 of file ClpDynamicMatrix.hpp.
int* ClpDynamicMatrix::startSet_ [protected] |
int* ClpDynamicMatrix::next_ [protected] |
CoinBigIndex* ClpDynamicMatrix::startColumn_ [protected] |
Starts of each column.
Definition at line 316 of file ClpDynamicMatrix.hpp.
Referenced by startColumn().
int* ClpDynamicMatrix::row_ [protected] |
float* ClpDynamicMatrix::element_ [protected] |
float* ClpDynamicMatrix::cost_ [protected] |
int* ClpDynamicMatrix::id_ [protected] |
ids of active columns (just index here)
Definition at line 324 of file ClpDynamicMatrix.hpp.
Referenced by id().
unsigned char* ClpDynamicMatrix::dynamicStatus_ [protected] |
for status and which bound
Definition at line 326 of file ClpDynamicMatrix.hpp.
Referenced by dynamicStatus(), flagged(), getDynamicStatus(), setDynamicStatus(), setFlagged(), and unsetFlagged().
float* ClpDynamicMatrix::columnLower_ [protected] |
Optional lower bounds on columns.
Definition at line 328 of file ClpDynamicMatrix.hpp.
Referenced by columnLower().
float* ClpDynamicMatrix::columnUpper_ [protected] |
Optional upper bounds on columns.
Definition at line 330 of file ClpDynamicMatrix.hpp.
Referenced by columnUpper().