6#ifndef ClpDynamicMatrix_H
7#define ClpDynamicMatrix_H
9#include "CoinPragma.hpp"
33 int &bestSequence,
int &numberWanted);
49 virtual void times(
double scalar,
50 const double *x,
double *y)
const;
64 double *other,
int mode);
102 double cost,
double lower,
double upper,
int iSet,
139 int numberColumns,
const int *starts,
140 const double *lower,
const double *upper,
144 const unsigned char *status = NULL,
171 unsigned char &st_byte =
status_[sequence];
172 st_byte =
static_cast< unsigned char >(st_byte & ~7);
173 st_byte =
static_cast< unsigned char >(st_byte | status);
219 st_byte =
static_cast< unsigned char >(st_byte & ~7);
220 st_byte =
static_cast< unsigned char >(st_byte | status);
252 inline int *
id()
const
This implements a dynamic matrix when we have a limit on the number of "interesting rows".
double * columnUpper() const
Optional upper bounds on columns.
int whichSet(int sequence) const
Returns which set a variable is in.
int numberGubColumns_
size
int * id_
ids of active columns (just index here)
virtual void times(double scalar, const double *x, double *y) const
Return y + A * scalar *x in y.
virtual double reducedCost(ClpSimplex *model, int sequence) const
Returns reduced cost of a variable.
virtual int refresh(ClpSimplex *model)
Purely for column generation and similar ideas.
double keyValue(int iSet) const
Gets key value when none in small.
unsigned char * gubRowStatus() const
Status region for gub slacks.
CoinBigIndex maximumElements_
current maximum number of elemnts (then compress)
virtual double * rhsOffset(ClpSimplex *model, bool forceRefresh=false, bool check=false)
Returns effective RHS offset if it is being used.
double objectiveOffset() const
Saved value of objective offset.
ClpDynamicMatrix & operator=(const ClpDynamicMatrix &)
unsigned char * status_
Status of slack on set.
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 ...
double * lowerSet_
Lower bounds on sets.
CoinBigIndex * startColumn_
Starts of each column.
int firstDynamic() const
first dynamic
int numberGubEntries() const
Number of possible gub variables.
int savedBestSet_
Saved best set in pricing.
DynamicStatus
enums for status of various sorts
double infeasibilityWeight_
Infeasibility weight when last full pass done.
int numberSets_
Number of sets (dynamic rows)
double columnUpper(int sequence) const
Gets upper bound (to simplify coding)
double columnLower(int sequence) const
Gets lower bound (to simplify coding)
int numberGubColumns() const
size
virtual void partialPricing(ClpSimplex *model, double start, double end, int &bestSequence, int &numberWanted)
Partial pricing.
void setFlaggedSlack(int i)
int * startSets() const
Sets.
int numberDualInfeasibilities_
Number of dual infeasibilities.
int numberPrimalInfeasibilities_
Number of primal infeasibilities.
void writeMps(const char *name)
Writes out model (without names)
ClpSimplex * model_
Pointer back to model.
ClpDynamicMatrix()
Default constructor.
double * columnLower() const
Optional lower bounds on columns.
double sumDualInfeasibilities_
Sum of dual infeasibilities.
double objectiveOffset_
Saved value of objective offset.
int numberActiveSets_
Number of active sets.
void unsetFlaggedSlack(int i)
double * columnLower_
Optional lower bounds on columns.
CoinBigIndex numberElements_
size of working matrix (max)
void gubCrash()
Does gub crash.
unsigned char * dynamicStatus_
for status and which bound
void initialProblem()
Populates initial matrix from dynamic status.
void modifyOffset(int sequence, double amount)
Modifies rhs offset.
double * upperSet() const
Upper bounds on sets.
virtual int updatePivot(ClpSimplex *model, double oldInValue, double oldOutValue)
update information for a pivot (and effective rhs)
double * columnUpper_
Optional upper bounds on columns.
double savedBestGubDual_
Saved best dual on gub row in pricing.
int maximumGubColumns_
current maximum number of columns (then compress)
int firstAvailable_
first free
bool flagged(int i) const
Whether flagged.
int firstDynamic_
first dynamic
int * id() const
ids of active columns (just index here)
int firstAvailable() const
first free
int addColumn(CoinBigIndex 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 createVariable(ClpSimplex *model, int &bestSequence)
Creates a variable.
void setDynamicStatus(int sequence, DynamicStatus status)
CoinBigIndex numberElements() const
size of working matrix (max)
double * cost() const
costs
int numberStaticRows() const
number of rows in original model
ClpDynamicMatrix(const ClpDynamicMatrix &)
The copy constructor.
DynamicStatus getDynamicStatus(int sequence) const
double sumOfRelaxedPrimalInfeasibilities_
Sum of Primal infeasibilities using tolerance based on error in primals.
double * lowerSet() const
Lower bounds on sets.
ClpDynamicMatrix(ClpSimplex *model, int numberSets, int numberColumns, const int *starts, const double *lower, const double *upper, const CoinBigIndex *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.
int * toIndex_
Backward pointer to extra row.
int numberSets() const
Number of sets (dynamic rows)
unsigned char * dynamicStatus() const
Status region for gub variables.
double * element() const
elements
double sumOfRelaxedDualInfeasibilities_
Sum of Dual infeasibilities using tolerance based on error in duals.
int lastDynamic_
number of columns in dynamic model
void switchOffCheck()
Switches off dj checking each factorization (for BIG models)
int * keyVariable_
Key variable of set (only accurate if none in small problem)
double sumPrimalInfeasibilities_
Sum of primal infeasibilities.
bool flaggedSlack(int i) const
Whether flagged slack.
virtual ClpMatrixBase * clone() const
Clone.
ClpSimplex::Status getStatus(int sequence) const
Status of row slacks.
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=...
int * keyVariable() const
int firstAvailableBefore_
first free when iteration started
int noCheck_
If pricing will declare victory (i.e.
ClpDynamicMatrix(const CoinPackedMatrix &)
The copy constructor from an CoinPackedMatrix.
int numberStaticRows_
number of rows in original model
virtual ~ClpDynamicMatrix()
Destructor.
int * backToPivotRow_
Backward pointer to pivot row !!!
double * element_
elements
void setStatus(int sequence, ClpSimplex::Status status)
CoinBigIndex * startColumn() const
Starts of each column.
double * upperSet_
Upper bounds on sets.
int * startSet_
Start of each set.
int lastDynamic() const
number of columns in dynamic model
virtual void packDown(const int *, int)
If addColumn forces compression then this allows descendant to know what to do.
Abstract base class for Clp Matrices.
virtual void times(double scalar, const double *x, double *y) const
Return y + A * scalar *x in y.
This solves LPs using the simplex method.
Status
enums for status of various sorts.