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);
 
  189     const int *start, 
const int *end,
 
  191     const unsigned char *status = NULL);
 
  199     int numberRows, 
const int *whichRows,
 
  200     int numberColumns, 
const int *whichColumns) 
const;
 
  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 ClpMatrixBase * subsetClone(int numberRows, const int *whichRows, int numberColumns, const int *whichColumns) const 
Subset clone (without gaps). 
virtual int hiddenRows() const 
Returns number of hidden rows e.g. gub. 
int numberSets() const 
Number of sets (gub rows) 
unsigned char * saveStatus_
Saved status of slacks. 
Status
enums for status of various sorts. 
double * upper() const 
Upper bounds on sets. 
ClpSimplex::Status getStatus(int sequence) const 
Status. 
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. 
Abstract base class for Clp Matrices. 
This implements Gub rows plus a ClpPackedMatrix. 
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. 
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 numberPrimalInfeasibilities_
Number of primal infeasibilities. 
bool flagged(int sequence) const 
virtual void partialPricing(ClpSimplex *model, double start, double end, int &bestSequence, int &numberWanted)
Partial pricing. 
double weight(int sequence) const 
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. 
int * keyVariable() const 
Key variable of set. 
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 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...
double sumPrimalInfeasibilities_
Sum of primal infeasibilities. 
virtual void transposeTimesByRow(const ClpSimplex *model, double scalar, const CoinIndexedVector *x, CoinIndexedVector *y, CoinIndexedVector *z) const 
Return x * scalar * A + y in z. 
double CoinFactorizationDouble
virtual ClpMatrixBase * reverseOrderedCopy() const 
Returns a new matrix in reverse order without gaps (GUB wants NULL) 
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 possiblePivotKey_
Pivot row of possible next key. 
int saveNumber_
Number in vector without gub extension. 
void setFlagged(int sequence)
To flag a variable. 
double * lower() const 
Lower bounds on sets. 
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. 
Sparse Matrix Base Class. 
void clearFlagged(int sequence)
int * start() const 
Starts. 
virtual double * rhsOffset(ClpSimplex *model, bool forceRefresh=false, bool check=false)
Returns effective RHS offset if it is being used. 
virtual void transposeTimes(double scalar, const double *x, double *y) const 
Return y + x * scalar * A in y. 
void switchOffCheck()
Switches off dj checking each factorization (for BIG models) 
void setFeasible(int sequence)
To say key is feasible. 
virtual void transposeTimes(const ClpSimplex *model, double scalar, const CoinIndexedVector *x, CoinIndexedVector *y, CoinIndexedVector *z) const 
Return x * scalar * A + y in z. 
CoinPackedMatrix * matrix() const 
Returns CoinPackedMatrix (non const) 
int * savedKeyVariable_
Saved key variables. 
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...
double * changeCost_
Change in costs for keys. 
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)
int numberSets_
Number of sets (gub rows) 
int * backward() const 
Backward pointer to set number. 
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. 
virtual ClpMatrixBase * clone() const 
Clone. 
double infeasibilityWeight_
Infeasibility weight when last full pass done. 
double * upper_
Upper bounds on sets. 
int * toIndex_
Backward pointer to index in CoinIndexedVector. 
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...
virtual int updatePivot(ClpSimplex *model, double oldInValue, double oldOutValue)
update information for a pivot (and effective rhs) 
virtual void unpack(const ClpSimplex *model, CoinIndexedVector *rowArray, int column) const 
Unpacks a column into an CoinIndexedvector. 
double sumOfRelaxedDualInfeasibilities_
Sum of Dual infeasibilities using tolerance based on error in duals.