#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 double *element, double cost, double lower, double 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 | |
double * | element () const |
elements | |
double * | cost () const |
costs | |
int * | id () const |
ids of active columns (just index here) | |
double * | columnLower () const |
Optional lower bounds on columns. | |
double * | columnUpper () const |
Optional upper bounds on columns. | |
double * | lowerSet () const |
Lower bounds on sets. | |
double * | 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. | |
double * | lowerSet_ |
Lower bounds on sets. | |
double * | 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 | |
double * | element_ |
elements | |
double * | cost_ |
costs | |
int * | id_ |
ids of active columns (just index here) | |
unsigned char * | dynamicStatus_ |
for status and which bound | |
double * | columnLower_ |
Optional lower bounds on columns. | |
double * | 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 double * | element, | |||
double | cost, | |||
double | lower, | |||
double | 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 104 of file ClpDynamicMatrix.hpp.
double ClpDynamicMatrix::columnLower | ( | int | sequence | ) | const [inline] |
Gets lower bound (to simplify coding).
Definition at line 106 of file ClpDynamicMatrix.hpp.
References columnLower_.
double ClpDynamicMatrix::columnUpper | ( | int | sequence | ) | const [inline] |
Gets upper bound (to simplify coding).
Definition at line 109 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 162 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 168 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
void ClpDynamicMatrix::unsetFlagged | ( | int | i | ) | [inline] |
Status of row slacks.
Reimplemented in ClpDynamicExampleMatrix.
Definition at line 171 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
void ClpDynamicMatrix::setDynamicStatus | ( | int | sequence, | |
DynamicStatus | status | |||
) | [inline] |
Status of row slacks.
Definition at line 174 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
DynamicStatus ClpDynamicMatrix::getDynamicStatus | ( | int | sequence | ) | const [inline] |
Status of row slacks.
Definition at line 180 of file ClpDynamicMatrix.hpp.
References dynamicStatus_.
double ClpDynamicMatrix::objectiveOffset | ( | ) | const [inline] |
Saved value of objective offset.
Definition at line 183 of file ClpDynamicMatrix.hpp.
References objectiveOffset_.
CoinBigIndex* ClpDynamicMatrix::startColumn | ( | ) | const [inline] |
Starts of each column.
Definition at line 186 of file ClpDynamicMatrix.hpp.
References startColumn_.
int* ClpDynamicMatrix::row | ( | ) | const [inline] |
double* ClpDynamicMatrix::element | ( | ) | const [inline] |
double* ClpDynamicMatrix::cost | ( | ) | const [inline] |
int* ClpDynamicMatrix::id | ( | ) | const [inline] |
ids of active columns (just index here)
Definition at line 198 of file ClpDynamicMatrix.hpp.
References id_.
double* ClpDynamicMatrix::columnLower | ( | ) | const [inline] |
Optional lower bounds on columns.
Definition at line 201 of file ClpDynamicMatrix.hpp.
References columnLower_.
double* ClpDynamicMatrix::columnUpper | ( | ) | const [inline] |
Optional upper bounds on columns.
Definition at line 204 of file ClpDynamicMatrix.hpp.
References columnUpper_.
double* ClpDynamicMatrix::lowerSet | ( | ) | const [inline] |
double* 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 222 of file ClpDynamicMatrix.hpp.
References lastDynamic_.
int ClpDynamicMatrix::numberStaticRows | ( | ) | const [inline] |
number of rows in original model
Definition at line 225 of file ClpDynamicMatrix.hpp.
References numberStaticRows_.
int ClpDynamicMatrix::numberElements | ( | ) | const [inline] |
size of working matrix (max)
Definition at line 228 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 235 of file ClpDynamicMatrix.hpp.
References status_.
unsigned char* ClpDynamicMatrix::dynamicStatus | ( | ) | const [inline] |
Status region for gub variables.
Definition at line 238 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 254 of file ClpDynamicMatrix.hpp.
double ClpDynamicMatrix::sumOfRelaxedPrimalInfeasibilities_ [protected] |
Sum of Primal infeasibilities using tolerance based on error in primals.
Definition at line 256 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 264 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 270 of file ClpDynamicMatrix.hpp.
Referenced by numberSets().
int ClpDynamicMatrix::numberActiveSets_ [protected] |
double ClpDynamicMatrix::objectiveOffset_ [protected] |
Saved value of objective offset.
Definition at line 274 of file ClpDynamicMatrix.hpp.
Referenced by objectiveOffset().
double* ClpDynamicMatrix::lowerSet_ [protected] |
Lower bounds on sets.
Definition at line 276 of file ClpDynamicMatrix.hpp.
Referenced by lowerSet().
double* ClpDynamicMatrix::upperSet_ [protected] |
Upper bounds on sets.
Definition at line 278 of file ClpDynamicMatrix.hpp.
Referenced by upperSet().
unsigned char* ClpDynamicMatrix::status_ [protected] |
Status of slack on set.
Definition at line 280 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 290 of file ClpDynamicMatrix.hpp.
Referenced by lastDynamic().
int ClpDynamicMatrix::numberStaticRows_ [protected] |
number of rows in original model
Definition at line 292 of file ClpDynamicMatrix.hpp.
Referenced by numberStaticRows().
int ClpDynamicMatrix::numberElements_ [protected] |
size of working matrix (max)
Definition at line 294 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 304 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 310 of file ClpDynamicMatrix.hpp.
int ClpDynamicMatrix::maximumElements_ [protected] |
current maximum number of elemnts (then compress)
Definition at line 312 of file ClpDynamicMatrix.hpp.
int* ClpDynamicMatrix::startSet_ [protected] |
int* ClpDynamicMatrix::next_ [protected] |
CoinBigIndex* ClpDynamicMatrix::startColumn_ [protected] |
Starts of each column.
Definition at line 318 of file ClpDynamicMatrix.hpp.
Referenced by startColumn().
int* ClpDynamicMatrix::row_ [protected] |
double* ClpDynamicMatrix::element_ [protected] |
double* ClpDynamicMatrix::cost_ [protected] |
int* ClpDynamicMatrix::id_ [protected] |
ids of active columns (just index here)
Definition at line 326 of file ClpDynamicMatrix.hpp.
Referenced by id().
unsigned char* ClpDynamicMatrix::dynamicStatus_ [protected] |
for status and which bound
Definition at line 328 of file ClpDynamicMatrix.hpp.
Referenced by dynamicStatus(), flagged(), getDynamicStatus(), setDynamicStatus(), setFlagged(), and unsetFlagged().
double* ClpDynamicMatrix::columnLower_ [protected] |
Optional lower bounds on columns.
Definition at line 330 of file ClpDynamicMatrix.hpp.
Referenced by columnLower().
double* ClpDynamicMatrix::columnUpper_ [protected] |
Optional upper bounds on columns.
Definition at line 332 of file ClpDynamicMatrix.hpp.
Referenced by columnUpper().