30 int &numberColumnBasic);
33 const int *whichColumn,
34 int &numberColumnBasic,
36 int *rowCount,
int *columnCount,
52 int column,
double multiplier)
const;
55 int column,
double multiplier)
const;
58 int &bestSequence,
int &numberWanted);
113 double *other,
int mode);
177 int numberRows,
const int *whichRows,
178 int numberColumns,
const int *whichColumns);
180 int numberRows,
const int *whichRows,
181 int numberColumns,
const int *whichColumns);
191 const unsigned char *status = NULL);
199 int numberRows,
const int *whichRows,
200 int numberColumns,
const int *whichColumns)
const;
209 return static_cast< ClpSimplex::Status >(
status_[sequence] & 7);
213 unsigned char &st_byte =
status_[sequence];
214 st_byte = static_cast< unsigned char >(st_byte & ~7);
215 st_byte = static_cast< unsigned char >(st_byte | status);
220 status_[sequence] = static_cast< unsigned char >(
status_[sequence] | 64);
224 status_[sequence] = static_cast< unsigned char >(
status_[sequence] & ~64);
228 return ((
status_[sequence] & 64) != 0);
233 unsigned char iStat =
status_[sequence];
234 iStat = static_cast< unsigned char >(iStat & ~24);
235 status_[sequence] = static_cast< unsigned char >(iStat | 16);
240 unsigned char iStat =
status_[sequence];
241 iStat = static_cast< unsigned char >(iStat & ~24);
242 status_[sequence] = static_cast< unsigned char >(iStat | 8);
247 unsigned char iStat =
status_[sequence];
248 iStat = static_cast< unsigned char >(iStat & ~24);
253 int iStat =
status_[sequence] & 31;
255 return static_cast< double >(iStat - 1);
int gubType_
type of gub - 0 not contiguous, 1 contiguous add 8 bit to say no ubs on individual variables
virtual int synchronize(ClpSimplex *model, int mode)
This is local to Gub to allow synchronization: mode=0 when status of basis is good mode=1 when variab...
virtual void subsetTransposeTimes(const ClpSimplex *model, const CoinIndexedVector *x, const CoinIndexedVector *y, CoinIndexedVector *z) const
Return x *A in z but just for indices in y.
virtual ClpMatrixBase * reverseOrderedCopy() const
Returns a new matrix in reverse order without gaps (GUB wants NULL)
unsigned char * saveStatus_
Saved status of slacks.
virtual void transposeTimes(const ClpSimplex *model, double scalar, const CoinIndexedVector *x, CoinIndexedVector *y, CoinIndexedVector *z) const
Return x * scalar * A + y in z.
Status
enums for status of various sorts.
int * next_
Next basic variable in set - starts at key and end with -(set+1).
double sumOfRelaxedPrimalInfeasibilities_
Sum of Primal infeasibilities using tolerance based on error in primals.
virtual ClpMatrixBase * subsetClone(int numberRows, const int *whichRows, int numberColumns, const int *whichColumns) const
Subset clone (without gaps).
Abstract base class for Clp Matrices.
double weight(int sequence) const
This implements Gub rows plus a ClpPackedMatrix.
ClpGubMatrix & operator=(const ClpGubMatrix &)
virtual void primalExpanded(ClpSimplex *model, int mode)
mode=0 - Set up before "update" and "times" for primal solution using extended rows mode=1 - Cleanup ...
unsigned char * status_
Status of slacks.
int * keyVariable() const
Key variable of set.
int numberPrimalInfeasibilities_
Number of primal infeasibilities.
virtual void partialPricing(ClpSimplex *model, double start, double end, int &bestSequence, int &numberWanted)
Partial pricing.
int * start() const
Starts.
int numberDualInfeasibilities_
Number of dual infeasibilities.
virtual void correctSequence(const ClpSimplex *model, int &sequenceIn, int &sequenceOut)
Correct sequence in and out to give true value.
ClpSimplex * model_
Pointer back to model.
virtual void fillBasis(ClpSimplex *model, const int *whichColumn, int &numberColumnBasic, int *row, int *start, int *rowCount, int *columnCount, CoinFactorizationDouble *element)
Fills in column part of basis.
ClpGubMatrix()
Default constructor.
double sumDualInfeasibilities_
Sum of dual infeasibilities.
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 ...
int gubSlackIn_
Gub slack in (set number or -1)
int firstGub_
First gub variables (same as start_[0] at present)
virtual void transposeTimes(double scalar, const double *x, double *y) const
Return y + x * scalar * A in y.
virtual int extendUpdated(ClpSimplex *model, CoinIndexedVector *update, int mode)
expands an updated column to allow for extra rows which the main solver does not know about and retur...
virtual int hiddenRows() const
Returns number of hidden rows e.g. gub.
double * upper() const
Upper bounds on sets.
double sumPrimalInfeasibilities_
Sum of primal infeasibilities.
virtual ClpMatrixBase * clone() const
Clone.
double CoinFactorizationDouble
void redoSet(ClpSimplex *model, int newKey, int oldKey, int iSet)
redoes next_ for a set.
This solves LPs using the simplex method.
virtual int countBasis(const int *whichColumn, int &numberColumnBasic)
Returns number of elements in column part of basis.
int * backward() const
Backward pointer to set number.
int possiblePivotKey_
Pivot row of possible next key.
virtual void unpackPacked(ClpSimplex *model, CoinIndexedVector *rowArray, int column) const
Unpacks a column into an CoinIndexedvector in packed foramt Note that model is NOT const.
int numberSets() const
Number of sets (gub rows)
bool flagged(int sequence) const
int saveNumber_
Number in vector without gub extension.
void setFlagged(int sequence)
To flag a variable.
int * backToPivotRow_
Backward pointer to pivot row !!!
int * keyVariable_
Key variable of set.
void setAbove(int sequence)
To say key is above ub.
double * lower_
Lower bounds on sets.
void setBelow(int sequence)
To say key is below lb.
virtual void useEffectiveRhs(ClpSimplex *model, bool cheapest=true)
Sets up an effective RHS and does gub crash if needed.
void clearFlagged(int sequence)
virtual double * rhsOffset(ClpSimplex *model, bool forceRefresh=false, bool check=false)
Returns effective RHS offset if it is being used.
double * lower() const
Lower bounds on sets.
void switchOffCheck()
Switches off dj checking each factorization (for BIG models)
void setFeasible(int sequence)
To say key is feasible.
int * savedKeyVariable_
Saved key variables.
double * changeCost_
Change in costs for keys.
ClpSimplex::Status getStatus(int sequence) const
Status.
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=...
void setStatus(int sequence, ClpSimplex::Status status)
virtual void add(const ClpSimplex *model, CoinIndexedVector *rowArray, int column, double multiplier) const
Adds multiple of a column into an CoinIndexedvector You can use quickAdd to add to vector.
int numberSets_
Number of sets (gub rows)
virtual void transposeTimesByRow(const ClpSimplex *model, double scalar, const CoinIndexedVector *x, CoinIndexedVector *y, CoinIndexedVector *z) const
Return x * scalar * A + y in z.
int noCheck_
If pricing will declare victory (i.e.
virtual ~ClpGubMatrix()
Destructor.
int lastGub_
last gub variable (same as end_[numberSets_-1] at present)
int * backward_
Backward pointer to set number.
CoinPackedMatrix * matrix() const
Returns CoinPackedMatrix (non const)
double infeasibilityWeight_
Infeasibility weight when last full pass done.
double * upper_
Upper bounds on sets.
virtual void unpack(const ClpSimplex *model, CoinIndexedVector *rowArray, int column) const
Unpacks a column into an CoinIndexedvector.
int * toIndex_
Backward pointer to index in CoinIndexedVector.
virtual int updatePivot(ClpSimplex *model, double oldInValue, double oldOutValue)
update information for a pivot (and effective rhs)
double sumOfRelaxedDualInfeasibilities_
Sum of Dual infeasibilities using tolerance based on error in duals.