Scippy

SoPlex

Sequential object-oriented simPlex

SPxLPBase< R > Class Template Reference

Saving LPs in a form suitable for SoPlex.Class SPxLPBase provides the data structures required for saving a linear program in the form

\[ \begin{array}{rl} \hbox{max} & c^T x \\ \hbox{s.t.} & l_r \le Ax \le u_r \\ & l_c \le x \le u_c \end{array} \]

suitable for solving with SoPlex. This includes: More...

#include <spxlpbase.h>

Public Types

Types
enum  SPxSense { MAXIMIZE = 1, MINIMIZE = -1 }
 Optimization sense. More...
 

Public Member Functions

void setOutstream (SPxOut &newOutstream)
 
void unscaleLP ()
 unscales the lp and clears basis More...
 
Inquiry
bool isScaled () const
 Returns true if and only if the LP is scaled. More...
 
void setScalingInfo (bool scaled)
 set whether the LP is scaled or not More...
 
int nRows () const
 Returns number of rows in LP. More...
 
int nCols () const
 Returns number of columns in LP. More...
 
int nNzos () const
 Returns number of nonzeros in LP. More...
 
virtual R minAbsNzo (bool unscaled=true) const
 Absolute smallest non-zero element in (possibly scaled) LP. More...
 
virtual R maxAbsNzo (bool unscaled=true) const
 Absolute biggest non-zero element in (in rational case possibly scaled) LP. More...
 
void getRow (int i, LPRowBase< R > &row) const
 Gets i 'th row. More...
 
void getRow (const SPxRowId &id, LPRowBase< R > &row) const
 Gets row with identifier id. More...
 
void getRows (int start, int end, LPRowSetBase< R > &set) const
 Gets rows start, ... end. More...
 
const SVectorBase< R > & rowVector (int i) const
 Gets row vector of row i. More...
 
const SVectorBase< R > & rowVector (const SPxRowId &id) const
 Gets row vector of row with identifier id. More...
 
void getRowVectorUnscaled (int i, DSVectorBase< R > &vec) const
 Gets unscaled row vector of row i. More...
 
const VectorBase< R > & rhs () const
 Returns right hand side vector. More...
 
const R & rhs (int i) const
 Returns right hand side of row number i. More...
 
const R & rhs (const SPxRowId &id) const
 Returns right hand side of row with identifier id. More...
 
void getRhs (VectorBase< R > &vec) const
 Gets (internal and possibly scaled) right hand side vector. More...
 
void getRhsUnscaled (VectorBase< R > &vec) const
 Gets unscaled right hand side vector. More...
 
rhsUnscaled (int i) const
 Returns unscaled right hand side of row number i. More...
 
rhsUnscaled (const SPxRowId &id) const
 Returns unscaled right hand side of row with identifier id. More...
 
const VectorBase< R > & lhs () const
 Returns left hand side vector. More...
 
const R & lhs (int i) const
 Returns left hand side of row number i. More...
 
const R & lhs (const SPxRowId &id) const
 Returns left hand side of row with identifier id. More...
 
void getRowObj (VectorBase< R > &prowobj) const
 Gets row objective function vector. More...
 
rowObj (int i) const
 
rowObj (const SPxRowId &id) const
 Returns row objective function value of row with identifier id. More...
 
const VectorBase< R > & maxRowObj () const
 
const R & maxRowObj (int i) const
 
const R & maxRowObj (const SPxRowId &id) const
 Returns row objective function value of row with identifier id. More...
 
void getLhsUnscaled (VectorBase< R > &vec) const
 Returns unscaled left hand side vector. More...
 
lhsUnscaled (int i) const
 Returns unscaled left hand side of row number i. More...
 
lhsUnscaled (const SPxRowId &id) const
 Returns left hand side of row with identifier id. More...
 
LPRowBase< R >::Type rowType (int i) const
 Returns the inequality type of the i'th LPRow. More...
 
LPRowBase< R >::Type rowType (const SPxRowId &id) const
 Returns the inequality type of the row with identifier key. More...
 
void getCol (int i, LPColBase< R > &col) const
 Gets i 'th column. More...
 
void getCol (const SPxColId &id, LPColBase< R > &col) const
 Gets column with identifier id. More...
 
void getCols (int start, int end, LPColSetBase< R > &set) const
 Gets columns start, ..., end. More...
 
const SVectorBase< R > & colVector (int i) const
 Returns column vector of column i. More...
 
const SVectorBase< R > & colVector (const SPxColId &id) const
 Returns column vector of column with identifier id. More...
 
void getColVectorUnscaled (int i, DSVectorBase< R > &vec) const
 Gets column vector of column i. More...
 
void getColVectorUnscaled (const SPxColId &id, DSVectorBase< R > &vec) const
 Gets column vector of column with identifier id. More...
 
void getObjUnscaled (VectorBase< R > &pobj) const
 Gets unscaled objective vector. More...
 
void getObj (VectorBase< R > &pobj) const
 Gets objective vector. More...
 
obj (int i) const
 Returns objective value of column i. More...
 
obj (const SPxColId &id) const
 Returns objective value of column with identifier id. More...
 
objUnscaled (int i) const
 Returns unscaled objective value of column i. More...
 
objUnscaled (const SPxColId &id) const
 Returns unscaled objective value of column with identifier id. More...
 
const VectorBase< R > & maxObj () const
 Returns objective vector for maximization problem. More...
 
const R & maxObj (int i) const
 Returns objective value of column i for maximization problem. More...
 
const R & maxObj (const SPxColId &id) const
 Returns objective value of column with identifier id for maximization problem. More...
 
void maxObjUnscaled (VectorBase< R > &vec) const
 Returns unscaled objective vector for maximization problem. More...
 
maxObjUnscaled (int i) const
 Returns unscaled objective value of column i for maximization problem. More...
 
maxObjUnscaled (const SPxColId &id) const
 Returns unscaled objective value of column with identifier id for maximization problem. More...
 
const VectorBase< R > & upper () const
 Returns upper bound vector. More...
 
const R & upper (int i) const
 Returns upper bound of column i. More...
 
const R & upper (const SPxColId &id) const
 Returns upper bound of column with identifier id. More...
 
void getUpperUnscaled (VectorBase< R > &vec) const
 Gets unscaled upper bound vector. More...
 
upperUnscaled (int i) const
 Returns unscaled upper bound of column i. More...
 
upperUnscaled (const SPxColId &id) const
 Returns unscaled upper bound of column with identifier id. More...
 
const VectorBase< R > & lower () const
 Returns (internal and possibly scaled) lower bound vector. More...
 
const R & lower (int i) const
 Returns (internal and possibly scaled) lower bound of column i. More...
 
const R & lower (const SPxColId &id) const
 Returns (internal and possibly scaled) lower bound of column with identifier id. More...
 
void getLowerUnscaled (VectorBase< R > &vec) const
 Gets unscaled lower bound vector. More...
 
lowerUnscaled (int i) const
 Returns unscaled lower bound of column i. More...
 
lowerUnscaled (const SPxColId &id) const
 Returns unscaled lower bound of column with identifier id. More...
 
SPxSense spxSense () const
 Returns the optimization sense. More...
 
const R & objOffset () const
 Returns the objective function value offset. More...
 
int number (const SPxRowId &id) const
 Returns the row number of the row with identifier id. More...
 
int number (const SPxColId &id) const
 Returns the column number of the column with identifier id. More...
 
int number (const SPxId &id) const
 Returns the row or column number for identifier id. More...
 
bool has (const SPxRowId &id) const
 Returns the row number of the row with identifier id. More...
 
bool has (const SPxColId &id) const
 Returns the column number of the column with identifier id. More...
 
bool has (const SPxId &id) const
 Returns the row or column number for identifier id. More...
 
SPxRowId rId (int n) const
 Returns the row identifier for row n. More...
 
SPxColId cId (int n) const
 Returns the column identifier for column n. More...
 
Extension
virtual void addRow (const LPRowBase< R > &row, bool scale=false)
 
virtual void addRow (const R &lhsValue, const SVectorBase< R > &rowVec, const R &rhsValue, bool scale=false)
 
template<class S >
void addRow (const S *lhsValue, const S *rowValues, const int *rowIndices, int rowSize, const S *rhsValue)
 
virtual void addRow (SPxRowId &id, const LPRowBase< R > &row, bool scale=false)
 Adds row to LPRowSetBase. More...
 
virtual void addRows (const LPRowSetBase< R > &pset, bool scale=false)
 
template<class S >
void addRows (const S *lhsValues, const S *rowValues, const int *rowIndices, const int *rowStarts, const int *rowLengths, const int numRows, const int numValues, const S *rhsValues)
 
virtual void addRows (SPxRowId id[], const LPRowSetBase< R > &set, bool scale=false)
 adds all LPRowBases of pset to LPRowSetBase. More...
 
virtual void addCol (const LPColBase< R > &col, bool scale=false)
 
virtual void addCol (const R &objValue, const R &lowerValue, const SVectorBase< R > &colVec, const R &upperValue, bool scale=false)
 
template<class S >
void addCol (const S *objValue, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue)
 
virtual void addCol (SPxColId &id, const LPColBase< R > &col, bool scale=false)
 Adds col to LPColSetVBase. More...
 
virtual void addCols (const LPColSetBase< R > &pset, bool scale=false)
 
template<class S >
void addCols (const S *objValue, const S *lowerValues, const S *colValues, const int *colIndices, const int *colStarts, const int *colLengths, const int numCols, const int numValues, const S *upperValues)
 
virtual void addCols (SPxColId id[], const LPColSetBase< R > &set, bool scale=false)
 Adds all LPColBases of set to LPColSetBase. More...
 
Shrinking
virtual void removeRow (int i)
 Removes i 'th row. More...
 
virtual void removeRow (SPxRowId id)
 Removes row with identifier id. More...
 
virtual void removeRows (int perm[])
 Removes multiple rows. More...
 
virtual void removeRows (SPxRowId id[], int n, int perm[]=0)
 
virtual void removeRows (int nums[], int n, int perm[]=0)
 Removes n LPRowBases. More...
 
virtual void removeRowRange (int start, int end, int perm[]=0)
 Removes rows from start to end (including both). More...
 
virtual void removeCol (int i)
 Removes i 'th column. More...
 
virtual void removeCol (SPxColId id)
 Removes column with identifier id. More...
 
virtual void removeCols (int perm[])
 Removes multiple columns. More...
 
virtual void removeCols (SPxColId id[], int n, int perm[]=0)
 
virtual void removeCols (int nums[], int n, int perm[]=0)
 Removes n LPCols. More...
 
virtual void removeColRange (int start, int end, int perm[]=0)
 Removes columns from start to end (including both). More...
 
virtual void clear ()
 clears the LP. More...
 
IO
virtual bool readLPF (std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
 Reads LP in LP format from input stream in. More...
 
virtual bool readMPS (std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
 Reads an LP in MPS format from input stream in. More...
 
virtual bool read (std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
 Reads LP in LP or MPS format from input stream in. More...
 
virtual bool readFile (const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
 Reads LP from a file. More...
 
virtual void writeLPF (std::ostream &out, const NameSet *rowNames, const NameSet *colNames, const DIdxSet *p_intvars=0) const
 
virtual void writeMPS (std::ostream &out, const NameSet *rowNames, const NameSet *colNames, const DIdxSet *p_intvars=0) const
 Writes a file in MPS format to out. More...
 
virtual void writeFileLPBase (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *p_intvars=0) const
 Write loaded LP to filename. More...
 
void printProblemStatistics (std::ostream &os)
 
Manipulation
virtual void changeObj (const VectorBase< R > &newObj, bool scale=false)
 Changes objective vector to newObj. scale determines whether the new data should be scaled. More...
 
virtual void changeObj (int i, const R &newVal, bool scale=false)
 changes i 'th objective vector element to newVal. scale determines whether the new data should be scaled More...
 
template<class S >
void changeObj (int i, const S *newVal)
 changes i 'th objective vector element to newVal. More...
 
virtual void changeObj (SPxColId id, const R &newVal, bool scale=false)
 Changes objective value of column with identifier id to newVal. scale determines whether the new data should be scaled. More...
 
virtual void changeMaxObj (const VectorBase< R > &newObj, bool scale=false)
 Changes objective vector to newObj. scale determines whether the new data should be scaled. More...
 
virtual void changeMaxObj (int i, const R &newVal, bool scale=false)
 changes i 'th objective vector element to newVal. scale determines whether the new data should be scaled More...
 
template<class S >
void changeMaxObj (int i, const S *newVal)
 changes i 'th objective vector element to newVal. More...
 
virtual void changeMaxObj (SPxColId id, const R &newVal, bool scale=false)
 Changes objective value of column with identifier id to newVal. scale determines whether the new data should be scaled. More...
 
virtual void changeLower (const VectorBase< R > &newLower, bool scale=false)
 Changes vector of lower bounds to newLower. scale determines whether the new data should be scaled. More...
 
virtual void changeLower (int i, const R &newLower, bool scale=false)
 changes i 'th lower bound to newLower. scale determines whether the new data should be scaled More...
 
template<class S >
void changeLower (int i, const S *newLower)
 changes i 'th lower bound to newLower. More...
 
virtual void changeLower (SPxColId id, const R &newLower, bool scale=false)
 changes lower bound of column with identifier id to newLower. scale determines whether the new data should be scaled More...
 
virtual void changeUpper (const VectorBase< R > &newUpper, bool scale=false)
 Changes vector of upper bounds to newUpper. scale determines whether the new data should be scaled. More...
 
virtual void changeUpper (int i, const R &newUpper, bool scale=false)
 Changes i 'th upper bound to newUpper. scale determines whether the new data should be scaled. More...
 
template<class S >
void changeUpper (int i, const S *newUpper)
 Changes i 'th upper bound to newUpper. More...
 
virtual void changeUpper (SPxColId id, const R &newUpper, bool scale=false)
 Changes upper bound of column with identifier id to newLower. scale determines whether the new data should be scaled. More...
 
virtual void changeBounds (const VectorBase< R > &newLower, const VectorBase< R > &newUpper, bool scale=false)
 Changes variable bounds to newLower and newUpper. scale determines whether the new data should be scaled. More...
 
virtual void changeBounds (int i, const R &newLower, const R &newUpper, bool scale=false)
 Changes bounds of column i to newLower and newUpper. scale determines whether the new data should be scaled. More...
 
template<class S >
void changeBounds (int i, const S *newLower, const S *newUpper)
 Changes bounds of column i to newLower and newUpper. More...
 
virtual void changeBounds (SPxColId id, const R &newLower, const R &newUpper, bool scale=false)
 Changes bounds of column with identifier id. scale determines whether the new data should be scaled. More...
 
virtual void changeLhs (const VectorBase< R > &newLhs, bool scale=false)
 Changes left hand side vector for constraints to newLhs. scale determines whether the new data should be scaled. More...
 
virtual void changeLhs (int i, const R &newLhs, bool scale=false)
 Changes i 'th left hand side value to newLhs. scale determines whether the new data should be scaled. More...
 
template<class S >
void changeLhs (int i, const S *newLhs)
 Changes i 'th left hand side value to newLhs. More...
 
virtual void changeLhs (SPxRowId id, const R &newLhs, bool scale=false)
 Changes left hand side value for row with identifier id. scale determines whether the new data should be scaled. More...
 
virtual void changeRhs (const VectorBase< R > &newRhs, bool scale=false)
 Changes right hand side vector for constraints to newRhs. scale determines whether the new data should be scaled. More...
 
virtual void changeRhs (int i, const R &newRhs, bool scale=false)
 Changes i 'th right hand side value to newRhs. scale determines whether the new data should be scaled. More...
 
virtual void changeRhs (SPxRowId id, const R &newRhs, bool scale=false)
 Changes right hand side value for row with identifier id. scale determines whether the new data should be scaled. More...
 
virtual void changeRange (const VectorBase< R > &newLhs, const VectorBase< R > &newRhs, bool scale=false)
 Changes left and right hand side vectors. scale determines whether the new data should be scaled. More...
 
virtual void changeRange (int i, const R &newLhs, const R &newRhs, bool scale=false)
 Changes left and right hand side of row i. scale determines whether the new data should be scaled. More...
 
template<class S >
void changeRange (int i, const S *newLhs, const S *newRhs)
 Changes left and right hand side of row i. More...
 
virtual void changeRange (SPxRowId id, const R &newLhs, const R &newRhs, bool scale=false)
 Changes left and right hand side of row with identifier id. scale determines whether the new data should be scaled. More...
 
virtual void changeRowObj (const VectorBase< R > &newRowObj, bool scale=false)
 Changes row objective function vector to newRowObj. scale determines whether the new data should be scaled. More...
 
virtual void changeRowObj (int i, const R &newRowObj, bool scale=false)
 Changes i 'th row objective function value to newRowObj. scale determines whether the new data should be scaled. More...
 
virtual void changeRowObj (SPxRowId id, const R &newRowObj, bool scale=false)
 Changes row objective function value for row with identifier id. scale determines whether the new data should be scaled. More...
 
virtual void clearRowObjs ()
 Clears row objective function values for all rows. More...
 
virtual void changeRow (int n, const LPRowBase< R > &newRow, bool scale=false)
 Replaces i 'th row of LP with newRow. scale determines whether the new data should be scaled. More...
 
virtual void changeRow (SPxRowId id, const LPRowBase< R > &newRow, bool scale=false)
 Replaces row with identifier id with newRow. scale determines whether the new data should be scaled. More...
 
virtual void changeCol (int n, const LPColBase< R > &newCol, bool scale=false)
 Replaces i 'th column of LP with newCol. scale determines whether the new data should be scaled. More...
 
virtual void changeCol (SPxColId id, const LPColBase< R > &newCol, bool scale=false)
 Replaces column with identifier id with newCol. scale determines whether the new data should be scaled. More...
 
virtual void changeElement (int i, int j, const R &val, bool scale=false)
 Changes LP element (i, j) to val. scale determines whether the new data should be scaled. More...
 
template<class S >
void changeElement (int i, int j, const S *val)
 Changes LP element (i, j) to val. More...
 
virtual void changeElement (SPxRowId rid, SPxColId cid, const R &val, bool scale=false)
 Changes LP element identified by (rid, cid) to val. scale determines whether the new data should be scaled. More...
 
virtual void changeSense (SPxSense sns)
 Changes optimization sense to sns. More...
 
template<typename T >
void changeObjOffset (const T &o)
 
virtual void computePrimalActivity (const VectorBase< R > &primal, VectorBase< R > &activity, const bool unscaled=true) const
 Computes activity of the rows for a given primal vector; activity does not need to be zero. More...
 
virtual void addPrimalActivity (const SVectorBase< R > &primal, VectorBase< R > &activity) const
 Updates activity of the rows for a given primal vector; activity does not need to be zero. More...
 
virtual void computeDualActivity (const VectorBase< R > &dual, VectorBase< R > &activity, const bool unscaled=true) const
 Computes "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero. More...
 
virtual void addDualActivity (const SVectorBase< R > &dual, VectorBase< R > &activity) const
 Updates "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero. More...
 
virtual void subDualActivity (const VectorBase< R > &dual, VectorBase< R > &activity) const
 Updates "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero. More...
 
Construction of dual problem
virtual void buildDualProblem (SPxLPBase< R > &dualLP, SPxRowId primalRowIds[]=0, SPxColId primalColIds[]=0, SPxRowId dualRowIds[]=0, SPxColId dualColIds[]=0, int *nprimalrows=0, int *nprimalcols=0, int *ndualrows=0, int *ndualcols=0)
 Building the dual problem from a given LP. More...
 
Miscellaneous
bool isConsistent () const
 Consistency check. More...
 
Constructors / Destructors
 SPxLPBase ()
 Default constructor. More...
 
virtual ~SPxLPBase ()
 Destructor. More...
 
 SPxLPBase (const SPxLPBase< R > &old)
 Copy constructor. More...
 
template<class S >
 SPxLPBase (const SPxLPBase< S > &old)
 Copy constructor. More...
 
SPxLPBase< R > & operator= (const SPxLPBase< R > &old)
 Assignment operator. More...
 
template<class S >
SPxLPBase< R > & operator= (const SPxLPBase< S > &old)
 Assignment operator. More...
 

Public Attributes

SPxOutspxout
 

Protected Member Functions

Protected write access
R & rhs_w (int i)
 Returns right hand side of row i. More...
 
R & lhs_w (int i)
 Returns left hand side of row i. More...
 
R & maxRowObj_w (int i)
 Returns objective function value of row i. More...
 
R & maxObj_w (int i)
 Returns objective value of column i for maximization problem. More...
 
R & upper_w (int i)
 Returns upper bound of column i. More...
 
R & lower_w (int i)
 Returns lower bound of column i. More...
 
Protected helpers
const LPRowSetBase< R > * lprowset () const
 Returns the LP as an LPRowSetBase. More...
 
const LPColSetBase< R > * lpcolset () const
 Returns the LP as an LPColSetBase. More...
 
virtual void doRemoveRow (int j)
 Internal helper method. More...
 
virtual void doRemoveRows (int perm[])
 Internal helper method. More...
 
virtual void doRemoveCol (int j)
 Internal helper method. More...
 
virtual void doRemoveCols (int perm[])
 Internal helper method. More...
 
virtual void addedRows (int newrows)
 Called after the last n rows have just been added. More...
 
virtual void addedCols (int newcols)
 Called after the last n columns have just been added. More...
 
void added2Set (SVSetBase< R > &set, const SVSetBase< R > &addset, int n)
 
- Protected Member Functions inherited from LPRowSetBase< R >
const SVSetBase< R > * rowSet () const
 Returns the complete SVSet. More...
 
int num () const
 Returns the number of LPRowBases in LPRowSetBase. More...
 
int max () const
 Returns the maximum number of LPRowBases that fit. More...
 
const VectorBase< R > & lhs () const
 Returns the vector of lhs values. More...
 
VectorBase< R > & lhs_w ()
 Returns the vector of lhs values. More...
 
const R & lhs (int i) const
 Returns the lhs of the i 'th LPRowBase. More...
 
R & lhs_w (int i)
 Returns the lhs of the i 'th LPRowBase. More...
 
const R & lhs (const DataKey &k) const
 Returns the lhs of the LPRowBase with DataKey k in LPRowSetBase. More...
 
R & lhs_w (const DataKey &k)
 Returns the lhs of the LPRowBase with DataKey k in LPRowSetBase. More...
 
const VectorBase< R > & rhs () const
 Returns the vector of rhs values. More...
 
VectorBase< R > & rhs_w ()
 Returns the vector of rhs values (writeable). More...
 
const R & rhs (int i) const
 Returns the rhs of the i 'th LPRowBase. More...
 
R & rhs_w (int i)
 Returns the rhs of the i 'th LPRowBase (writeable). More...
 
const R & rhs (const DataKey &k) const
 Returns the rhs of the LPRowBase with DataKey k in LPRowSetBase. More...
 
R & rhs_w (const DataKey &k)
 Returns the rhs of the LPRowBase with DataKey k in LPRowSetBase (writeable). More...
 
const VectorBase< R > & obj () const
 Returns the vector of objective coefficients. More...
 
VectorBase< R > & obj_w ()
 Returns the vector of objective coefficients (writeable). More...
 
const R & obj (int i) const
 Returns the objective coefficient of the i 'th LPRowBase. More...
 
R & obj_w (int i)
 Returns the objective coefficient of the i 'th LPRowBase (writeable). More...
 
const R & obj (const DataKey &k) const
 Returns the objective coefficient of the LPRowBase with DataKey k in LPRowSetBase. More...
 
R & obj_w (const DataKey &k)
 Returns the objective coefficient of the LPRowBase with DataKey k in LPRowSetBase (writeable). More...
 
SVectorBase< R > & rowVector_w (int i)
 Returns a writable rowVector of the i 'th LPRowBase. More...
 
const SVectorBase< R > & rowVector (int i) const
 Returns the rowVector of the i 'th LPRowBase. More...
 
SVectorBase< R > & rowVector_w (const DataKey &k)
 Returns a writable rowVector of the LPRowBase with DataKey k. More...
 
const SVectorBase< R > & rowVector (const DataKey &k) const
 Returns the rowVector of the LPRowBase with DataKey k. More...
 
LPRowBase< R >::Type type (int i) const
 Returns the inequalitiy type of the i 'th LPRowBase. More...
 
LPRowBase< R >::Type type (const DataKey &k) const
 Returns the inequality type of the LPRowBase with DataKey k. More...
 
void setType (int i, typename LPRowBase< R >::Type t)
 Changes the inequality type of row i to type. More...
 
const R & value (int i) const
 Returns the value of the i'th LPRowBase. More...
 
const R & value (const DataKey &k) const
 Returns the value of the LPRowBase with DataKey k. More...
 
DataKey key (int i) const
 Returns the DataKey of the i 'th LPRowBase in LPRowSetBase. More...
 
int number (const DataKey &k) const
 Returns the number of the LPRowBase with DataKey k in LPRowSetBase. More...
 
bool has (const DataKey &k) const
 does DataKey k belong to LPRowSetBase ? More...
 
void add (const LPRowBase< R > &row)
 
void add (DataKey &pkey, const LPRowBase< R > &prow)
 Adds row to LPRowSetBase. More...
 
void add (const R &plhs, const SVectorBase< R > &prowVector, const R &prhs, const R &pobj=0, const int &pscaleExp=0)
 Adds LPRowBase consisting of left hand side lhs, row vector rowVector, and right hand side rhs to LPRowSetBase. More...
 
template<class S >
void add (const S *lhsValue, const S *rowValues, const int *rowIndices, int rowSize, const S *rhsValue, const S *objValue=0)
 Adds LPRowBase consisting of left hand side lhs, row vector rowVector, and right hand side rhs to LPRowSetBase. More...
 
template<class S >
void add (DataKey &newkey, const S *lhsValue, const S *rowValues, const int *rowIndices, int rowSize, const S *rhsValue, const S *objValue=0)
 Adds LPRowBase consisting of left hand side lhs, row vector rowVector, and right hand side rhs to LPRowSetBase, with DataKey key. More...
 
void add (DataKey &newkey, const R &newlhs, const SVectorBase< R > &newrowVector, const R &newrhs, const R &newobj=0, const int &newscaleExp=0)
 Adds LPRowBase consisting of left hand side lhs, row vector rowVector, and right hand side rhs to LPRowSetBase, with DataKey key. More...
 
void add (const LPRowSetBase< R > &newset)
 
void add (DataKey keys[], const LPRowSetBase< R > &set)
 Adds all LPRowBases of set to LPRowSetBase. More...
 
void xtend (int n, int newmax)
 Extends row n to fit newmax nonzeros. More...
 
void xtend (const DataKey &pkey, int pnewmax)
 Extends row with DataKey key to fit newmax nonzeros. More...
 
void add2 (const DataKey &k, int n, const int idx[], const R val[])
 Adds n nonzero (idx, val)-pairs to rowVector with DataKey k. More...
 
void add2 (int i, int n, const int idx[], const R val[])
 Adds n nonzero (idx, val)-pairs to i 'th rowVector. More...
 
template<class S >
void add2 (int i, int n, const int idx[], const S val[])
 Adds n nonzero (idx, val)-pairs to i 'th rowVector. More...
 
SVectorBase< R > & create (int pnonzeros=0, const R &plhs=0, const R &prhs=1, const R &pobj=0, const int &pscaleExp=0)
 Creates new LPRowBase with specified parameters and returns a reference to its row vector. More...
 
SVectorBase< R > & create (DataKey &newkey, int nonzeros=0, const R &newlhs=0, const R &newrhs=1, const R &newobj=0, const int &newscaleExp=0)
 Creates new LPRowBase with specified parameters and returns a reference to its row vector. More...
 
void remove (int i)
 Removes i 'th LPRowBase. More...
 
void remove (const DataKey &k)
 Removes LPRowBase with DataKey k. More...
 
void remove (int perm[])
 Removes multiple LPRowBases. More...
 
void remove (const int nums[], int n)
 Removes n LPRowBases with row numbers given by nums. More...
 
void remove (const int nums[], int n, int *perm)
 Removes n LPRowBases with row numbers given by nums, Stores permutation of row indices in perm. More...
 
void clear ()
 Removes all LPRowBases. More...
 
void reMax (int newmax=0)
 Reallocates memory to be able to store newmax LPRowBases. More...
 
int memSize () const
 Returns number of used nonzero entries. More...
 
int memMax () const
 Returns length of nonzero memory. More...
 
void memRemax (int newmax)
 Reallocates memory to be able to store newmax nonzeros. More...
 
void memPack ()
 Garbage collection in nonzero memory. More...
 
bool isConsistent () const
 Checks consistency. More...
 
 LPRowSetBase (int pmax=-1, int pmemmax=-1)
 Default constructor. More...
 
LPRowSetBase< R > & operator= (const LPRowSetBase< R > &rs)
 Assignment operator. More...
 
template<class S >
LPRowSetBase< R > & operator= (const LPRowSetBase< S > &rs)
 Assignment operator. More...
 
 LPRowSetBase (const LPRowSetBase< R > &rs)
 Copy constructor. More...
 
template<class S >
 LPRowSetBase (const LPRowSetBase< S > &rs)
 Copy constructor. More...
 
virtual ~LPRowSetBase ()
 Destructor. More...
 
- Protected Member Functions inherited from SVSetBase< R >
void add (const SVectorBase< R > &svec)
 Adds svec to the set. More...
 
void add (DataKey &nkey, const SVectorBase< R > &svec)
 Adds svec to SVSetBase. More...
 
template<class S >
void add (DataKey &nkey, const S *rowValues, const int *rowIndices, int rowSize)
 Adds svec to SVSetBase. More...
 
void add (const SVectorBase< R > svec[], int n)
 Adds all n SVectorBases in the array svec to the set. More...
 
void add (DataKey nkey[], const SVectorBase< R > svec[], int n)
 Adds n SVectorBases to SVSetBase. More...
 
template<class S >
void add (const SVSetBase< S > &pset)
 Adds all SVectorBases in pset to SVSetBase. More...
 
template<class S >
void add (DataKey nkey[], const SVSetBase< S > &pset)
 Adds all SVectorBases of pset to SVSetBase. More...
 
SVectorBase< R > * create (int idxmax=0)
 Creates new SVectorBase in set. More...
 
SVectorBase< R > * create (DataKey &nkey, int idxmax=-1)
 Creates new SVectorBase in set. More...
 
void xtend (SVectorBase< R > &svec, int newmax)
 Extends svec to fit newmax nonzeros. More...
 
void add2 (SVectorBase< R > &svec, int idx, R val)
 Adds nonzero (idx, val) to svec of this SVSetBase. More...
 
void add2 (SVectorBase< R > &svec, int n, const int idx[], const R val[])
 Adds n nonzeros to svec of this SVSetBase. More...
 
template<class S >
void add2 (SVectorBase< R > &svec, int n, const int idx[], const S val[])
 Adds n nonzeros to svec of this SVSetBase. More...
 
void remove (const DataKey &removekey)
 Removes the vector with key removekey from the set. More...
 
void remove (int removenum)
 Removes the vector with number removenum from the set. More...
 
void remove (const SVectorBase< R > *svec)
 Removes one SVectorBase from set. More...
 
void remove (int perm[])
 Removes multiple elements. More...
 
void remove (const DataKey keys[], int n)
 Removes n SVectorBases from set. More...
 
void remove (const int nums[], int n)
 Removes n SVectorBases from set. More...
 
void remove (const DataKey keys[], int n, int *perm)
 
void remove (const int nums[], int n, int *perm)
 
void clear (int minNewSize=-1)
 Removes all SVectorBases from set. More...
 
SVectorBase< R > & operator[] (int n)
 Gets SVectorBase by number, writeable. More...
 
const SVectorBase< R > & operator[] (int n) const
 Gets SVectorBase by number. More...
 
SVectorBase< R > & operator[] (const DataKey &k)
 Gets SVectorBase by DataKey, writeable. More...
 
const SVectorBase< R > & operator[] (const DataKey &k) const
 Gets SVectorBase by DataKey. More...
 
int num () const
 Current number of SVectorBases. More...
 
int max () const
 Current maximum number of SVectorBases. More...
 
DataKey key (int n) const
 Gets DataKey of vector number. More...
 
DataKey key (const SVectorBase< R > *svec) const
 Gets DataKey of SVectorBase. More...
 
int number (const DataKey &k) const
 Gets vector number of DataKey. More...
 
int number (const SVectorBase< R > *svec) const
 Gets vector number of SVectorBase. More...
 
bool has (const DataKey &k) const
 True iff SVSetBase contains a SVectorBase for DataKey k. More...
 
bool has (int n) const
 True iff SVSetBase contains a SVectorBase for vector number n. More...
 
bool has (const SVectorBase< R > *svec) const
 Is an SVectorBase in the set? More...
 
int memSize () const
 Used nonzero memory. More...
 
int memMax () const
 Length of nonzero memory. More...
 
void memRemax (int newmax)
 Reset length of nonzero memory. More...
 
void memPack ()
 Garbage collection in nonzero memory. More...
 
void reMax (int newmax=0)
 Resets maximum number of SVectorBases. More...
 
bool isConsistent () const
 Consistency check. More...
 
 SVSetBase (int pmax=-1, int pmemmax=-1, double pfac=1.1, double pmemFac=1.2)
 Default constructor. More...
 
virtual ~SVSetBase ()
 Destructor. More...
 
SVSetBase< R > & operator= (const SVSetBase< R > &rhs)
 Assignment operator. More...
 
template<class S >
SVSetBase< R > & operator= (const SVSetBase< S > &rhs)
 Assignment operator. More...
 
 SVSetBase (const SVSetBase< R > &old)
 Copy constructor. More...
 
template<class S >
 SVSetBase (const SVSetBase< S > &old)
 Copy constructor. More...
 
- Protected Member Functions inherited from ClassArray< Nonzero< R > >
Nonzero< R > & operator[] (int n)
 Reference to n 'th element. More...
 
const Nonzero< R > & operator[] (int n) const
 Reference to n 'th const element. More...
 
Nonzero< R > & last ()
 Reference to last element. More...
 
const Nonzero< R > & last () const
 Reference to last const element. More...
 
Nonzero< R > * get_ptr ()
 Gets a C pointer to the data. More...
 
const Nonzero< R > * get_const_ptr () const
 Gets a const C pointer to the data. More...
 
void append (const Nonzero< R > &t)
 Appends element t. More...
 
void append (int n, const Nonzero< R > t[])
 Appends n elements from t. More...
 
void append (const ClassArray< Nonzero< R > > &t)
 Appends all elements from t. More...
 
void insert (int i, int n)
 Inserts n uninitialized elements before i 'th element. More...
 
void insert (int i, int n, const Nonzero< R > t[])
 Inserts n elements from t before i 'the element. More...
 
void insert (int i, const ClassArray< Nonzero< R > > &t)
 Inserts all elements from t before i 'th element. More...
 
void remove (int n=0, int m=1)
 Removes m elements starting at n. More...
 
void removeLast (int m=1)
 Removes m last elements. More...
 
void clear ()
 Removes all elements. More...
 
int size () const
 Returns number of elements. More...
 
void reSize (int newsize)
 Resets size to newsize. More...
 
int max () const
 Returns maximum number of elements. More...
 
ptrdiff_t reMax (int newMax=1, int newSize=-1)
 Resets maximum number of elements. More...
 
ClassArrayoperator= (const ClassArray &rhs)
 Assignment operator. More...
 
bool isConsistent () const
 Consistency check. More...
 
 ClassArray (const ClassArray &old)
 Copy constructor. More...
 
 ClassArray (int p_size=0, int p_max=0, double p_fac=1.2)
 Default constructor. More...
 
virtual ~ClassArray ()
 Destructor. More...
 
- Protected Member Functions inherited from LPColSetBase< R >
const SVSetBase< R > * colSet () const
 Returns the complete SVSetBase. More...
 
int num () const
 Returns the number of LPColBases currently in LPColSetBase. More...
 
int max () const
 Returns maximum number of LPColBases currently fitting into LPColSetBase. More...
 
const VectorBase< R > & maxObj () const
 
VectorBase< R > & maxObj_w ()
 Returns vector of objective values w.r.t. maximization. More...
 
const R & maxObj (int i) const
 
R & maxObj_w (int i)
 Returns objective value (w.r.t. maximization) of i 'th LPColBase in LPColSetBase. More...
 
const R & maxObj (const DataKey &k) const
 
R & maxObj_w (const DataKey &k)
 Returns objective value (w.r.t. maximization) of LPColBase with DataKey k in LPColSetBase. More...
 
const VectorBase< R > & lower () const
 
VectorBase< R > & lower_w ()
 Returns vector of lower bound values. More...
 
const R & lower (int i) const
 
R & lower_w (int i)
 Returns lower bound of i 'th LPColBase in LPColSetBase. More...
 
const R & lower (const DataKey &k) const
 
R & lower_w (const DataKey &k)
 Returns lower bound of LPColBase with DataKey k in LPColSetBase. More...
 
const VectorBase< R > & upper () const
 
VectorBase< R > & upper_w ()
 Returns vector of upper bound values. More...
 
const R & upper (int i) const
 
R & upper_w (int i)
 Returns upper bound of i 'th LPColBase in LPColSetBase. More...
 
const R & upper (const DataKey &k) const
 
R & upper_w (const DataKey &k)
 Returns upper bound of LPColBase with DataKey k in LPColSetBase. More...
 
SVectorBase< R > & colVector_w (int i)
 
const SVectorBase< R > & colVector (int i) const
 Returns colVector of i 'th LPColBase in LPColSetBase. More...
 
SVectorBase< R > & colVector_w (const DataKey &k)
 Returns writeable colVector of LPColBase with DataKey k in LPColSetBase. More...
 
const SVectorBase< R > & colVector (const DataKey &k) const
 Returns colVector of LPColBase with DataKey k in LPColSetBase. More...
 
DataKey key (int i) const
 Returns DataKey of i 'th LPColBase in LPColSetBase. More...
 
int number (const DataKey &k) const
 Returns number of LPColBase with DataKey k in LPColSetBase. More...
 
bool has (const DataKey &k) const
 Does DataKey k belong to LPColSetBase ? More...
 
void add (const LPColBase< R > &pcol)
 
void add (DataKey &pkey, const LPColBase< R > &pcol)
 Adds p pcol to LPColSetBase. More...
 
void add (const R &pobj, const R &plower, const SVectorBase< R > &pcolVector, const R &pupper, const int &pscaleExp=0)
 
void add (DataKey &newkey, const R &obj, const R &newlower, const SVectorBase< R > &newcolVector, const R &newupper, const int &newscaleExp=0)
 Adds LPColBase consisting of objective value obj, lower bound lower, column vector colVector and upper bound upper to LPColSetBase. More...
 
template<class S >
void add (const S *obj, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue)
 Adds LPColBase consisting of left hand side lhs, column vector colVector, and right hand side rhs to LPColSetBase. More...
 
template<class S >
void add (DataKey &newkey, const S *objValue, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue)
 Adds LPColBase consisting of left hand side lhs, column vector colVector, and right hand side rhs to LPColSetBase, with DataKey key. More...
 
void add (const LPColSetBase< R > &newset)
 
void add (DataKey keys[], const LPColSetBase< R > &newset)
 Adds all LPColBases of set to LPColSetBase. More...
 
void xtend (int n, int newmax)
 Extends column n to fit newmax nonzeros. More...
 
void xtend (const DataKey &pkey, int pnewmax)
 Extends column with DataKey key to fit newmax nonzeros. More...
 
void add2 (const DataKey &k, int n, const int idx[], const R val[])
 
void add2 (int i, int n, const int idx[], const R val[])
 Adds n nonzero (idx, val)-pairs to i 'th colVector. More...
 
template<class S >
void add2 (int i, int n, const int idx[], const S val[])
 Adds n nonzero (idx, val)-pairs to i 'th colVector. More...
 
SVectorBase< R > & create (int pnonzeros=0, const R &pobj=1, const R &plw=0, const R &pupp=1, const int &pscaleExp=0)
 
SVectorBase< R > & create (DataKey &newkey, int nonzeros=0, const R &obj=1, const R &newlow=0, const R &newup=1, const int &newscaleExp=0)
 Creates new LPColBase with specified arguments and returns a reference to its column vector. More...
 
void remove (int i)
 Removes i 'th LPColBase. More...
 
void remove (const DataKey &k)
 Removes LPColBase with DataKey k. More...
 
void remove (int perm[])
 Removes multiple elements. More...
 
void remove (const int nums[], int n)
 Removes LPColBases with numbers nums, where n is the length of the array nums. More...
 
void remove (const int nums[], int n, int *perm)
 Removes LPColBases with numbers nums, where n is the length of the array nums, and stores the index permutation in array perm. More...
 
void clear ()
 Removes all LPColBases from the set. More...
 
void reMax (int newmax=0)
 Reallocates memory to be able to store newmax LPColBases. More...
 
int memSize () const
 Returns used nonzero memory. More...
 
int memMax () const
 Returns length of nonzero memory. More...
 
void memRemax (int newmax)
 Resets length of nonzero memory. More...
 
void memPack ()
 Garbage collection in nonzero memory. More...
 
bool isConsistent () const
 Checks consistency. More...
 
 LPColSetBase (int pmax=-1, int pmemmax=-1)
 Default constructor. More...
 
LPColSetBase< R > & operator= (const LPColSetBase< R > &rs)
 Assignment operator. More...
 
template<class S >
LPColSetBase< R > & operator= (const LPColSetBase< S > &rs)
 Assignment operator. More...
 
 LPColSetBase (const LPColSetBase< R > &rs)
 Copy constructor. More...
 
template<class S >
 LPColSetBase (const LPColSetBase< S > &rs)
 Copy constructor. More...
 
virtual ~LPColSetBase ()
 Destructor. More...
 

Private Member Functions

Private helpers
SVectorBase< R > & colVector_w (int i)
 Returns the LP as an LPRowBase<R>Set. More...
 
SVectorBase< R > & rowVector_w (int i)
 
void doAddRow (const LPRowBase< R > &row, bool scale=false)
 
void doAddRow (const R &lhsValue, const SVectorBase< R > &rowVec, const R &rhsValue, bool scale=false)
 
void doAddRows (const LPRowSetBase< R > &set, bool scale=false)
 
void doAddCol (const LPColBase< R > &col, bool scale=false)
 
void doAddCol (const R &objValue, const R &lowerValue, const SVectorBase< R > &colVec, const R &upperValue, bool scale=false)
 
void doAddCols (const LPColSetBase< R > &set, bool scale=false)
 

Private Attributes

friend SPxBasisBase< R >
 
friend SPxScaler< R >
 
friend SPxEquiliSC< R >
 
friend SPxLeastSqSC< R >
 
friend SPxGeometSC< R >
 
friend SPxMainSM< R >
 
Data
SPxSense thesense
 optimization sense. More...
 
offset
 offset computed, e.g., in simplification step More...
 
bool _isScaled
 true, if scaling has been performed More...
 
SPxScaler< R > * lp_scaler
 points to the scaler if the lp has been scaled, to nullptr otherwise More...
 

Friends

template<class S >
class SPxLPBase
 

Additional Inherited Members

- Protected Attributes inherited from LPRowSetBase< R >
DataArray< int > scaleExp
 row scaling factors (stored as bitshift) More...
 
- Protected Attributes inherited from ClassArray< Nonzero< R > >
int thesize
 number of used elements in array data More...
 
int themax
 the length of array data and More...
 
Nonzero< R > * data
 the array of elements More...
 
double memFactor
 memory extension factor. More...
 
- Protected Attributes inherited from LPColSetBase< R >
DataArray< int > scaleExp
 column scaling factors (stored as bitshift) More...
 

Detailed Description

template<class R>
class soplex::SPxLPBase< R >

Saving LPs in a form suitable for SoPlex.

Class SPxLPBase provides the data structures required for saving a linear program in the form

\[ \begin{array}{rl} \hbox{max} & c^T x \\ \hbox{s.t.} & l_r \le Ax \le u_r \\ & l_c \le x \le u_c \end{array} \]

suitable for solving with SoPlex. This includes:

  • SVSetBases for both columns and rows
  • objective Vector
  • upper and lower bound Vectors for variables ( \(l_c\) and \(u_c\))
  • upper and lower bound Vectors for inequalities ( \(l_r\) and \(u_r\))

Note, that the optimization sense is not saved directly. Instead, the objective function are multiplied by -1 to transform the LP to our standard form maximizing the objective function. However, the sense of the loaded LP can be retrieved with method spxSense().

Further, equality constraints are modeled by \(l_r = u_r\). Analogously, fixed variables have \(l_c = u_c\).

SPxLPBases are saved as an SVSet, both for columns and rows. Note that this is redundant but eases the access.

Definition at line 56 of file spxlpbase.h.

Member Enumeration Documentation

◆ SPxSense

enum SPxSense

Optimization sense.

Enumerator
MAXIMIZE 
MINIMIZE 

Definition at line 115 of file spxlpbase.h.

Constructor & Destructor Documentation

◆ SPxLPBase() [1/3]

SPxLPBase ( )

Default constructor.

Definition at line 2800 of file spxlpbase.h.

References SPxLPBase< R >::clear(), and SPxLPBase< R >::isConsistent().

◆ ~SPxLPBase()

virtual ~SPxLPBase ( )
virtual

Destructor.

Definition at line 2808 of file spxlpbase.h.

◆ SPxLPBase() [2/3]

SPxLPBase ( const SPxLPBase< R > &  old)

Copy constructor.

Definition at line 2812 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent().

◆ SPxLPBase() [3/3]

SPxLPBase ( const SPxLPBase< S > &  old)

Copy constructor.

Definition at line 2826 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), and SPxLPBase< R >::lp_scaler.

Member Function Documentation

◆ addCol() [1/4]

virtual void addCol ( const LPColBase< R > &  col,
bool  scale = false 
)
virtual

Definition at line 775 of file spxlpbase.h.

References SPxLPBase< R >::doAddCol().

Referenced by SPxLPBase< R >::addCol(), and Presol< R >::getBasis().

◆ addCol() [2/4]

virtual void addCol ( const R &  objValue,
const R &  lowerValue,
const SVectorBase< R > &  colVec,
const R &  upperValue,
bool  scale = false 
)
virtual

Definition at line 781 of file spxlpbase.h.

References SPxLPBase< R >::doAddCol().

◆ addCol() [3/4]

void addCol ( const S *  objValue,
const S *  lowerValue,
const S *  colValues,
const int *  colIndices,
int  colSize,
const S *  upperValue 
)

◆ addCol() [4/4]

virtual void addCol ( SPxColId id,
const LPColBase< R > &  col,
bool  scale = false 
)
virtual

Adds col to LPColSetVBase.

Definition at line 824 of file spxlpbase.h.

References SPxLPBase< R >::addCol(), SPxLPBase< R >::cId(), and SPxLPBase< R >::nCols().

◆ addCols() [1/3]

virtual void addCols ( const LPColSetBase< R > &  pset,
bool  scale = false 
)
virtual

Definition at line 831 of file spxlpbase.h.

References SPxLPBase< R >::doAddCols().

Referenced by SPxLPBase< R >::addCols().

◆ addCols() [2/3]

void addCols ( const S *  objValue,
const S *  lowerValues,
const S *  colValues,
const int *  colIndices,
const int *  colStarts,
const int *  colLengths,
const int  numCols,
const int  numValues,
const S *  upperValues 
)

◆ addCols() [3/3]

virtual void addCols ( SPxColId  id[],
const LPColSetBase< R > &  set,
bool  scale = false 
)
virtual

Adds all LPColBases of set to LPColSetBase.

Definition at line 934 of file spxlpbase.h.

References SPxLPBase< R >::addCols(), SPxLPBase< R >::cId(), and SPxLPBase< R >::nCols().

◆ addDualActivity()

virtual void addDualActivity ( const SVectorBase< R > &  dual,
VectorBase< R > &  activity 
) const
virtual

Updates "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero.

Exceptions
SPxInternalCodeExceptionif dimension of dual vector does not match number of rows or if the dimension of the activity vector does not match the number of columns

Definition at line 1950 of file spxlpbase.h.

References VectorBase< R >::dim(), SVectorBase< R >::index(), VectorBase< R >::multAdd(), SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), and SVectorBase< R >::value().

◆ added2Set()

void added2Set ( SVSetBase< R > &  set,
const SVSetBase< R > &  addset,
int  n 
)
protected

◆ addedCols()

virtual void addedCols ( int  newcols)
protectedvirtual

◆ addedRows()

virtual void addedRows ( int  newrows)
protectedvirtual

◆ addPrimalActivity()

virtual void addPrimalActivity ( const SVectorBase< R > &  primal,
VectorBase< R > &  activity 
) const
virtual

Updates activity of the rows for a given primal vector; activity does not need to be zero.

Exceptions
SPxInternalCodeExceptionif the dimension of primal vector does not match number of columns or if the dimension of the activity vector does not match the number of rows

Definition at line 1926 of file spxlpbase.h.

References SPxLPBase< R >::colVector(), SPxLPBase< R >::computeDualActivity(), VectorBase< R >::dim(), SVectorBase< R >::index(), VectorBase< R >::multAdd(), SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SVectorBase< R >::size(), and SVectorBase< R >::value().

◆ addRow() [1/4]

virtual void addRow ( const LPRowBase< R > &  row,
bool  scale = false 
)
virtual

Definition at line 603 of file spxlpbase.h.

References SPxLPBase< R >::doAddRow().

Referenced by SPxLPBase< R >::addRow(), and Presol< R >::getBasis().

◆ addRow() [2/4]

virtual void addRow ( const R &  lhsValue,
const SVectorBase< R > &  rowVec,
const R &  rhsValue,
bool  scale = false 
)
virtual

Definition at line 609 of file spxlpbase.h.

References SPxLPBase< R >::doAddRow().

◆ addRow() [3/4]

void addRow ( const S *  lhsValue,
const S *  rowValues,
const int *  rowIndices,
int  rowSize,
const S *  rhsValue 
)

◆ addRow() [4/4]

virtual void addRow ( SPxRowId id,
const LPRowBase< R > &  row,
bool  scale = false 
)
virtual

Adds row to LPRowSetBase.

Definition at line 654 of file spxlpbase.h.

References SPxLPBase< R >::addRow(), SPxLPBase< R >::nRows(), and SPxLPBase< R >::rId().

◆ addRows() [1/3]

virtual void addRows ( const LPRowSetBase< R > &  pset,
bool  scale = false 
)
virtual

Definition at line 661 of file spxlpbase.h.

References SPxLPBase< R >::doAddRows().

Referenced by SPxLPBase< R >::addRows().

◆ addRows() [2/3]

void addRows ( const S *  lhsValues,
const S *  rowValues,
const int *  rowIndices,
const int *  rowStarts,
const int *  rowLengths,
const int  numRows,
const int  numValues,
const S *  rhsValues 
)

◆ addRows() [3/3]

virtual void addRows ( SPxRowId  id[],
const LPRowSetBase< R > &  set,
bool  scale = false 
)
virtual

adds all LPRowBases of pset to LPRowSetBase.

Definition at line 765 of file spxlpbase.h.

References SPxLPBase< R >::addRows(), SPxLPBase< R >::nRows(), and SPxLPBase< R >::rId().

◆ buildDualProblem()

virtual void buildDualProblem ( SPxLPBase< R > &  dualLP,
SPxRowId  primalRowIds[] = 0,
SPxColId  primalColIds[] = 0,
SPxRowId  dualRowIds[] = 0,
SPxColId  dualColIds[] = 0,
int *  nprimalrows = 0,
int *  nprimalcols = 0,
int *  ndualrows = 0,
int *  ndualcols = 0 
)
virtual

Building the dual problem from a given LP.

Note
primalRows must be as large as the number of unranged primal rows + 2 * the number of ranged primal rows. dualCols must have the identical size to the primal rows.

Referenced by SPxLPBase< R >::subDualActivity().

◆ changeBounds() [1/4]

virtual void changeBounds ( const VectorBase< R > &  newLower,
const VectorBase< R > &  newUpper,
bool  scale = false 
)
virtual

Changes variable bounds to newLower and newUpper. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1533 of file spxlpbase.h.

References SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeUpper(), and SPxLPBase< R >::isConsistent().

Referenced by SPxLPBase< R >::changeBounds().

◆ changeBounds() [2/4]

virtual void changeBounds ( int  i,
const R &  newLower,
const R &  newUpper,
bool  scale = false 
)
virtual

Changes bounds of column i to newLower and newUpper. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1542 of file spxlpbase.h.

References SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeUpper(), and SPxLPBase< R >::isConsistent().

◆ changeBounds() [3/4]

void changeBounds ( int  i,
const S *  newLower,
const S *  newUpper 
)

Changes bounds of column i to newLower and newUpper.

Definition at line 1551 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), LPColSetBase< R >::lower_w(), and LPColSetBase< R >::upper_w().

◆ changeBounds() [4/4]

virtual void changeBounds ( SPxColId  id,
const R &  newLower,
const R &  newUpper,
bool  scale = false 
)
virtual

Changes bounds of column with identifier id. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1559 of file spxlpbase.h.

References SPxLPBase< R >::changeBounds(), and SPxLPBase< R >::number().

◆ changeCol() [1/2]

◆ changeCol() [2/2]

virtual void changeCol ( SPxColId  id,
const LPColBase< R > &  newCol,
bool  scale = false 
)
virtual

Replaces column with identifier id with newCol. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1812 of file spxlpbase.h.

References SPxLPBase< R >::changeCol(), and SPxLPBase< R >::number().

◆ changeElement() [1/3]

virtual void changeElement ( int  i,
int  j,
const R &  val,
bool  scale = false 
)
virtual

◆ changeElement() [2/3]

void changeElement ( int  i,
int  j,
const S *  val 
)

◆ changeElement() [3/3]

virtual void changeElement ( SPxRowId  rid,
SPxColId  cid,
const R &  val,
bool  scale = false 
)
virtual

Changes LP element identified by (rid, cid) to val. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1892 of file spxlpbase.h.

References SPxLPBase< R >::changeElement(), and SPxLPBase< R >::number().

◆ changeLhs() [1/4]

virtual void changeLhs ( const VectorBase< R > &  newLhs,
bool  scale = false 
)
virtual

Changes left hand side vector for constraints to newLhs. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1565 of file spxlpbase.h.

References VectorBase< R >::dim(), SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lhs(), LPRowSetBase< R >::lhs_w(), and SPxLPBase< R >::lp_scaler.

Referenced by SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeRange(), and SPxLPBase< R >::changeRow().

◆ changeLhs() [2/4]

virtual void changeLhs ( int  i,
const R &  newLhs,
bool  scale = false 
)
virtual

Changes i 'th left hand side value to newLhs. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1584 of file spxlpbase.h.

References soplex::infinity, SPxLPBase< R >::isConsistent(), LPRowSetBase< R >::lhs_w(), and SPxLPBase< R >::lp_scaler.

◆ changeLhs() [3/4]

void changeLhs ( int  i,
const S *  newLhs 
)

Changes i 'th left hand side value to newLhs.

Definition at line 1600 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), and LPRowSetBase< R >::lhs_w().

◆ changeLhs() [4/4]

virtual void changeLhs ( SPxRowId  id,
const R &  newLhs,
bool  scale = false 
)
virtual

Changes left hand side value for row with identifier id. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1607 of file spxlpbase.h.

References SPxLPBase< R >::changeLhs(), and SPxLPBase< R >::number().

◆ changeLower() [1/4]

virtual void changeLower ( const VectorBase< R > &  newLower,
bool  scale = false 
)
virtual

Changes vector of lower bounds to newLower. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1437 of file spxlpbase.h.

References VectorBase< R >::dim(), SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lower(), LPColSetBase< R >::lower_w(), and SPxLPBase< R >::lp_scaler.

Referenced by SPxLPBase< R >::changeBounds(), SPxLPBase< R >::changeCol(), and SPxLPBase< R >::changeLower().

◆ changeLower() [2/4]

virtual void changeLower ( int  i,
const R &  newLower,
bool  scale = false 
)
virtual

changes i 'th lower bound to newLower. scale determines whether the new data should be scaled

Reimplemented in SPxSolverBase< R >.

Definition at line 1456 of file spxlpbase.h.

References soplex::infinity, SPxLPBase< R >::isConsistent(), LPColSetBase< R >::lower_w(), and SPxLPBase< R >::lp_scaler.

◆ changeLower() [3/4]

void changeLower ( int  i,
const S *  newLower 
)

changes i 'th lower bound to newLower.

Definition at line 1472 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), and LPColSetBase< R >::lower_w().

◆ changeLower() [4/4]

virtual void changeLower ( SPxColId  id,
const R &  newLower,
bool  scale = false 
)
virtual

changes lower bound of column with identifier id to newLower. scale determines whether the new data should be scaled

Reimplemented in SPxSolverBase< R >.

Definition at line 1479 of file spxlpbase.h.

References SPxLPBase< R >::changeLower(), and SPxLPBase< R >::number().

◆ changeMaxObj() [1/4]

virtual void changeMaxObj ( const VectorBase< R > &  newObj,
bool  scale = false 
)
virtual

Changes objective vector to newObj. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1389 of file spxlpbase.h.

References VectorBase< R >::dim(), SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lp_scaler, SPxLPBase< R >::maxObj(), and LPColSetBase< R >::maxObj_w().

Referenced by SPxLPBase< R >::changeMaxObj(), and SPxLPBase< R >::changeObj().

◆ changeMaxObj() [2/4]

virtual void changeMaxObj ( int  i,
const R &  newVal,
bool  scale = false 
)
virtual

changes i 'th objective vector element to newVal. scale determines whether the new data should be scaled

Reimplemented in SPxSolverBase< R >.

Definition at line 1408 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lp_scaler, and LPColSetBase< R >::maxObj_w().

◆ changeMaxObj() [3/4]

void changeMaxObj ( int  i,
const S *  newVal 
)

changes i 'th objective vector element to newVal.

Definition at line 1424 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), and LPColSetBase< R >::maxObj_w().

◆ changeMaxObj() [4/4]

virtual void changeMaxObj ( SPxColId  id,
const R &  newVal,
bool  scale = false 
)
virtual

Changes objective value of column with identifier id to newVal. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1431 of file spxlpbase.h.

References SPxLPBase< R >::changeMaxObj(), and SPxLPBase< R >::number().

◆ changeObj() [1/4]

virtual void changeObj ( const VectorBase< R > &  newObj,
bool  scale = false 
)
virtual

Changes objective vector to newObj. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1353 of file spxlpbase.h.

References SPxLPBase< R >::changeMaxObj(), LPColSetBase< R >::maxObj_w(), SPxLPBase< R >::MINIMIZE, and SPxLPBase< R >::spxSense().

Referenced by SPxLPBase< R >::changeCol(), and SPxLPBase< R >::changeObj().

◆ changeObj() [2/4]

virtual void changeObj ( int  i,
const R &  newVal,
bool  scale = false 
)
virtual

changes i 'th objective vector element to newVal. scale determines whether the new data should be scaled

Reimplemented in SPxSolverBase< R >.

Definition at line 1362 of file spxlpbase.h.

References SPxLPBase< R >::changeMaxObj(), LPColSetBase< R >::maxObj_w(), SPxLPBase< R >::MINIMIZE, and SPxLPBase< R >::spxSense().

◆ changeObj() [3/4]

void changeObj ( int  i,
const S *  newVal 
)

changes i 'th objective vector element to newVal.

Definition at line 1372 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), LPColSetBase< R >::maxObj_w(), SPxLPBase< R >::MINIMIZE, and SPxLPBase< R >::spxSense().

◆ changeObj() [4/4]

virtual void changeObj ( SPxColId  id,
const R &  newVal,
bool  scale = false 
)
virtual

Changes objective value of column with identifier id to newVal. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1383 of file spxlpbase.h.

References SPxLPBase< R >::changeObj(), and SPxLPBase< R >::number().

◆ changeObjOffset()

void changeObjOffset ( const T &  o)

Definition at line 1910 of file spxlpbase.h.

References SPxLPBase< R >::computePrimalActivity().

Referenced by Presol< R >::getBasis().

◆ changeRange() [1/4]

virtual void changeRange ( const VectorBase< R > &  newLhs,
const VectorBase< R > &  newRhs,
bool  scale = false 
)
virtual

Changes left and right hand side vectors. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1653 of file spxlpbase.h.

References SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeRhs(), and SPxLPBase< R >::isConsistent().

Referenced by SPxLPBase< R >::changeRange().

◆ changeRange() [2/4]

virtual void changeRange ( int  i,
const R &  newLhs,
const R &  newRhs,
bool  scale = false 
)
virtual

Changes left and right hand side of row i. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1662 of file spxlpbase.h.

References SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeRhs(), and SPxLPBase< R >::isConsistent().

◆ changeRange() [3/4]

void changeRange ( int  i,
const S *  newLhs,
const S *  newRhs 
)

Changes left and right hand side of row i.

Definition at line 1671 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), LPRowSetBase< R >::lhs_w(), and LPRowSetBase< R >::rhs_w().

◆ changeRange() [4/4]

virtual void changeRange ( SPxRowId  id,
const R &  newLhs,
const R &  newRhs,
bool  scale = false 
)
virtual

Changes left and right hand side of row with identifier id. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1679 of file spxlpbase.h.

References SPxLPBase< R >::changeRange(), and SPxLPBase< R >::number().

◆ changeRhs() [1/3]

virtual void changeRhs ( const VectorBase< R > &  newRhs,
bool  scale = false 
)
virtual

Changes right hand side vector for constraints to newRhs. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1613 of file spxlpbase.h.

References VectorBase< R >::dim(), SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lp_scaler, SPxLPBase< R >::rhs(), and LPRowSetBase< R >::rhs_w().

Referenced by SPxLPBase< R >::changeRange(), SPxLPBase< R >::changeRhs(), and SPxLPBase< R >::changeRow().

◆ changeRhs() [2/3]

virtual void changeRhs ( int  i,
const R &  newRhs,
bool  scale = false 
)
virtual

Changes i 'th right hand side value to newRhs. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1632 of file spxlpbase.h.

References soplex::infinity, SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lp_scaler, and LPRowSetBase< R >::rhs_w().

◆ changeRhs() [3/3]

virtual void changeRhs ( SPxRowId  id,
const R &  newRhs,
bool  scale = false 
)
virtual

Changes right hand side value for row with identifier id. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1647 of file spxlpbase.h.

References SPxLPBase< R >::changeRhs(), and SPxLPBase< R >::number().

◆ changeRow() [1/2]

◆ changeRow() [2/2]

virtual void changeRow ( SPxRowId  id,
const LPRowBase< R > &  newRow,
bool  scale = false 
)
virtual

Replaces row with identifier id with newRow. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1763 of file spxlpbase.h.

References SPxLPBase< R >::changeRow(), and SPxLPBase< R >::number().

◆ changeRowObj() [1/3]

virtual void changeRowObj ( const VectorBase< R > &  newRowObj,
bool  scale = false 
)
virtual

Changes row objective function vector to newRowObj. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1685 of file spxlpbase.h.

References VectorBase< R >::dim(), SPxLPBase< R >::isConsistent(), SPxLPBase< R >::maxRowObj(), SPxLPBase< R >::MINIMIZE, LPRowSetBase< R >::obj_w(), and SPxLPBase< R >::spxSense().

Referenced by SPxLPBase< R >::changeRow(), and SPxLPBase< R >::changeRowObj().

◆ changeRowObj() [2/3]

virtual void changeRowObj ( int  i,
const R &  newRowObj,
bool  scale = false 
)
virtual

Changes i 'th row objective function value to newRowObj. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1697 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), SPxLPBase< R >::MINIMIZE, LPRowSetBase< R >::obj_w(), and SPxLPBase< R >::spxSense().

◆ changeRowObj() [3/3]

virtual void changeRowObj ( SPxRowId  id,
const R &  newRowObj,
bool  scale = false 
)
virtual

Changes row objective function value for row with identifier id. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1708 of file spxlpbase.h.

References SPxLPBase< R >::changeRowObj(), and SPxLPBase< R >::number().

◆ changeSense()

virtual void changeSense ( SPxSense  sns)
virtual

Changes optimization sense to sns.

Definition at line 1898 of file spxlpbase.h.

References LPColSetBase< R >::maxObj_w(), and LPRowSetBase< R >::obj_w().

◆ changeUpper() [1/4]

virtual void changeUpper ( const VectorBase< R > &  newUpper,
bool  scale = false 
)
virtual

Changes vector of upper bounds to newUpper. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1485 of file spxlpbase.h.

References VectorBase< R >::dim(), SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lp_scaler, SPxLPBase< R >::upper(), and LPColSetBase< R >::upper_w().

Referenced by SPxLPBase< R >::changeBounds(), SPxLPBase< R >::changeCol(), and SPxLPBase< R >::changeUpper().

◆ changeUpper() [2/4]

virtual void changeUpper ( int  i,
const R &  newUpper,
bool  scale = false 
)
virtual

Changes i 'th upper bound to newUpper. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1504 of file spxlpbase.h.

References soplex::infinity, SPxLPBase< R >::isConsistent(), SPxLPBase< R >::lp_scaler, and LPColSetBase< R >::upper_w().

◆ changeUpper() [3/4]

void changeUpper ( int  i,
const S *  newUpper 
)

Changes i 'th upper bound to newUpper.

Definition at line 1520 of file spxlpbase.h.

References SPxLPBase< R >::isConsistent(), and LPColSetBase< R >::upper_w().

◆ changeUpper() [4/4]

virtual void changeUpper ( SPxColId  id,
const R &  newUpper,
bool  scale = false 
)
virtual

Changes upper bound of column with identifier id to newLower. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >.

Definition at line 1527 of file spxlpbase.h.

References SPxLPBase< R >::changeUpper(), and SPxLPBase< R >::number().

◆ cId()

SPxColId cId ( int  n) const

Returns the column identifier for column n.

Definition at line 591 of file spxlpbase.h.

Referenced by SPxLPBase< R >::addCol(), SPxLPBase< R >::addCols(), SPxSolverBase< R >::coId(), and SPxSolverBase< R >::id().

◆ clear()

◆ clearRowObjs()

virtual void clearRowObjs ( )
virtual

Clears row objective function values for all rows.

Reimplemented in SPxSolverBase< R >.

Definition at line 1714 of file spxlpbase.h.

References LPRowSetBase< R >::obj_w().

◆ colVector() [1/2]

◆ colVector() [2/2]

const SVectorBase<R>& colVector ( const SPxColId id) const

Returns column vector of column with identifier id.

Definition at line 401 of file spxlpbase.h.

References LPColSetBase< R >::colVector(), SPxLPBase< R >::getColVectorUnscaled(), and SPxLPBase< R >::getObjUnscaled().

◆ colVector_w()

◆ computeDualActivity()

virtual void computeDualActivity ( const VectorBase< R > &  dual,
VectorBase< R > &  activity,
const bool  unscaled = true 
) const
virtual

Computes "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero.

Exceptions
SPxInternalCodeExceptionif dimension of dual vector does not match number of rows or if the dimension of the activity vector does not match the number of columns

Referenced by SPxLPBase< R >::addPrimalActivity().

◆ computePrimalActivity()

virtual void computePrimalActivity ( const VectorBase< R > &  primal,
VectorBase< R > &  activity,
const bool  unscaled = true 
) const
virtual

Computes activity of the rows for a given primal vector; activity does not need to be zero.

Exceptions
SPxInternalCodeExceptionif the dimension of primal vector does not match number of columns or if the dimension of the activity vector does not match the number of rows unscaled determines whether the returned data should be unscaled (if scaling was applied prior)

Referenced by SPxLPBase< R >::changeObjOffset().

◆ doAddCol() [1/2]

◆ doAddCol() [2/2]

◆ doAddCols()

◆ doAddRow() [1/2]

◆ doAddRow() [2/2]

◆ doAddRows()

◆ doRemoveCol()

◆ doRemoveCols()

virtual void doRemoveCols ( int  perm[])
protectedvirtual

◆ doRemoveRow()

◆ doRemoveRows()

virtual void doRemoveRows ( int  perm[])
protectedvirtual

◆ getCol() [1/2]

◆ getCol() [2/2]

void getCol ( const SPxColId id,
LPColBase< R > &  col 
) const

Gets column with identifier id.

Definition at line 366 of file spxlpbase.h.

References SPxLPBase< R >::getCol(), and SPxLPBase< R >::number().

◆ getCols()

void getCols ( int  start,
int  end,
LPColSetBase< R > &  set 
) const

◆ getColVectorUnscaled() [1/2]

void getColVectorUnscaled ( int  i,
DSVectorBase< R > &  vec 
) const

Gets column vector of column i.

Referenced by SPxLPBase< R >::colVector().

◆ getColVectorUnscaled() [2/2]

void getColVectorUnscaled ( const SPxColId id,
DSVectorBase< R > &  vec 
) const

Gets column vector of column with identifier id.

◆ getLhsUnscaled()

void getLhsUnscaled ( VectorBase< R > &  vec) const

Returns unscaled left hand side vector.

Referenced by SPxLPBase< R >::maxRowObj().

◆ getLowerUnscaled()

void getLowerUnscaled ( VectorBase< R > &  vec) const

Gets unscaled lower bound vector.

Referenced by SPxLPBase< R >::lower().

◆ getObj()

void getObj ( VectorBase< R > &  pobj) const

Gets objective vector.

Definition at line 416 of file spxlpbase.h.

References LPColSetBase< R >::maxObj(), SPxLPBase< R >::MINIMIZE, and SPxLPBase< R >::spxSense().

◆ getObjUnscaled()

void getObjUnscaled ( VectorBase< R > &  pobj) const

Gets unscaled objective vector.

Referenced by SPxLPBase< R >::colVector().

◆ getRhs()

void getRhs ( VectorBase< R > &  vec) const

Gets (internal and possibly scaled) right hand side vector.

Definition at line 258 of file spxlpbase.h.

References SPxLPBase< R >::getRhsUnscaled(), LPRowSetBase< R >::rhs(), and SPxLPBase< R >::rhsUnscaled().

◆ getRhsUnscaled()

void getRhsUnscaled ( VectorBase< R > &  vec) const

Gets unscaled right hand side vector.

Referenced by SPxLPBase< R >::getRhs().

◆ getRow() [1/2]

◆ getRow() [2/2]

void getRow ( const SPxRowId id,
LPRowBase< R > &  row 
) const

Gets row with identifier id.

Definition at line 209 of file spxlpbase.h.

References SPxLPBase< R >::getRow(), and SPxLPBase< R >::number().

◆ getRowObj()

void getRowObj ( VectorBase< R > &  prowobj) const

Gets row objective function vector.

Definition at line 291 of file spxlpbase.h.

References SPxLPBase< R >::MINIMIZE, LPRowSetBase< R >::obj(), and SPxLPBase< R >::spxSense().

◆ getRows()

void getRows ( int  start,
int  end,
LPRowSetBase< R > &  set 
) const

◆ getRowVectorUnscaled()

void getRowVectorUnscaled ( int  i,
DSVectorBase< R > &  vec 
) const

Gets unscaled row vector of row i.

Referenced by SPxLPBase< R >::rowVector().

◆ getUpperUnscaled()

void getUpperUnscaled ( VectorBase< R > &  vec) const

Gets unscaled upper bound vector.

Referenced by SPxLPBase< R >::upper().

◆ has() [1/3]

bool has ( const SPxRowId id) const

Returns the row number of the row with identifier id.

Definition at line 565 of file spxlpbase.h.

References LPRowSetBase< R >::has().

◆ has() [2/3]

bool has ( const SPxColId id) const

Returns the column number of the column with identifier id.

Definition at line 571 of file spxlpbase.h.

References LPColSetBase< R >::has().

◆ has() [3/3]

bool has ( const SPxId id) const

Returns the row or column number for identifier id.

Definition at line 577 of file spxlpbase.h.

References SPxId::COL_ID, LPColSetBase< R >::has(), LPRowSetBase< R >::has(), and LPRowSetBase< R >::type().

◆ isConsistent()

◆ isScaled()

bool isScaled ( ) const

Returns true if and only if the LP is scaled.

Definition at line 158 of file spxlpbase.h.

References SPxLPBase< R >::_isScaled.

◆ lhs() [1/3]

◆ lhs() [2/3]

const R& lhs ( int  i) const

Returns left hand side of row number i.

Definition at line 279 of file spxlpbase.h.

References LPRowSetBase< R >::lhs().

◆ lhs() [3/3]

const R& lhs ( const SPxRowId id) const

Returns left hand side of row with identifier id.

Definition at line 285 of file spxlpbase.h.

References LPRowSetBase< R >::lhs().

◆ lhs_w()

R& lhs_w ( int  i)
protected

Returns left hand side of row i.

Definition at line 2067 of file spxlpbase.h.

References LPRowSetBase< R >::lhs_w().

◆ lhsUnscaled() [1/2]

R lhsUnscaled ( int  i) const

Returns unscaled left hand side of row number i.

Referenced by SPxLPBase< R >::maxRowObj().

◆ lhsUnscaled() [2/2]

R lhsUnscaled ( const SPxRowId id) const

Returns left hand side of row with identifier id.

◆ lower() [1/3]

◆ lower() [2/3]

const R& lower ( int  i) const

Returns (internal and possibly scaled) lower bound of column i.

Definition at line 512 of file spxlpbase.h.

References LPColSetBase< R >::lower().

◆ lower() [3/3]

const R& lower ( const SPxColId id) const

Returns (internal and possibly scaled) lower bound of column with identifier id.

Definition at line 518 of file spxlpbase.h.

References SPxLPBase< R >::getLowerUnscaled(), LPColSetBase< R >::lower(), and SPxLPBase< R >::lowerUnscaled().

◆ lower_w()

R& lower_w ( int  i)
protected

Returns lower bound of column i.

Definition at line 2091 of file spxlpbase.h.

References LPColSetBase< R >::lower_w().

◆ lowerUnscaled() [1/2]

R lowerUnscaled ( int  i) const

Returns unscaled lower bound of column i.

Referenced by SPxLPBase< R >::lower().

◆ lowerUnscaled() [2/2]

R lowerUnscaled ( const SPxColId id) const

Returns unscaled lower bound of column with identifier id.

◆ lpcolset()

const LPColSetBase<R>* lpcolset ( ) const
protected

Returns the LP as an LPColSetBase.

Definition at line 2109 of file spxlpbase.h.

◆ lprowset()

const LPRowSetBase<R>* lprowset ( ) const
protected

Returns the LP as an LPRowSetBase.

Definition at line 2103 of file spxlpbase.h.

◆ maxAbsNzo()

virtual R maxAbsNzo ( bool  unscaled = true) const
virtual

Absolute biggest non-zero element in (in rational case possibly scaled) LP.

Referenced by SPxLPBase< R >::nNzos(), and SPxLPBase< R >::printProblemStatistics().

◆ maxObj() [1/3]

const VectorBase<R>& maxObj ( ) const

Returns objective vector for maximization problem.

Methods maxObj() return the objective vector or its elements, after transformation to a maximization problem. Since this is how SPxLPBase internally stores any LP these methods are generally faster. The following condition holds: obj() = spxSense() * maxObj().

Definition at line 452 of file spxlpbase.h.

References LPColSetBase< R >::maxObj().

Referenced by SPxLPBase< R >::changeMaxObj(), SPxLPBase< R >::maxObj(), and SPxLPBase< R >::obj().

◆ maxObj() [2/3]

const R& maxObj ( int  i) const

Returns objective value of column i for maximization problem.

Definition at line 458 of file spxlpbase.h.

References LPColSetBase< R >::maxObj().

◆ maxObj() [3/3]

const R& maxObj ( const SPxColId id) const

Returns objective value of column with identifier id for maximization problem.

Definition at line 464 of file spxlpbase.h.

References SPxLPBase< R >::maxObj(), SPxLPBase< R >::maxObjUnscaled(), and SPxLPBase< R >::number().

◆ maxObj_w()

R& maxObj_w ( int  i)
protected

Returns objective value of column i for maximization problem.

Definition at line 2079 of file spxlpbase.h.

References LPColSetBase< R >::maxObj_w().

◆ maxObjUnscaled() [1/3]

void maxObjUnscaled ( VectorBase< R > &  vec) const

Returns unscaled objective vector for maximization problem.

Referenced by SPxLPBase< R >::maxObj().

◆ maxObjUnscaled() [2/3]

R maxObjUnscaled ( int  i) const

Returns unscaled objective value of column i for maximization problem.

◆ maxObjUnscaled() [3/3]

R maxObjUnscaled ( const SPxColId id) const

Returns unscaled objective value of column with identifier id for maximization problem.

◆ maxRowObj() [1/3]

const VectorBase<R>& maxRowObj ( ) const

Definition at line 318 of file spxlpbase.h.

References LPRowSetBase< R >::obj().

Referenced by SPxLPBase< R >::changeRowObj(), and SPxLPBase< R >::rowObj().

◆ maxRowObj() [2/3]

const R& maxRowObj ( int  i) const

Definition at line 324 of file spxlpbase.h.

References LPRowSetBase< R >::obj().

◆ maxRowObj() [3/3]

const R& maxRowObj ( const SPxRowId id) const

Returns row objective function value of row with identifier id.

Definition at line 330 of file spxlpbase.h.

References SPxLPBase< R >::getLhsUnscaled(), SPxLPBase< R >::lhsUnscaled(), and LPRowSetBase< R >::obj().

◆ maxRowObj_w()

R& maxRowObj_w ( int  i)
protected

Returns objective function value of row i.

Definition at line 2073 of file spxlpbase.h.

References LPRowSetBase< R >::obj_w().

Referenced by SPxLPBase< R >::doAddRow(), and SPxLPBase< R >::doAddRows().

◆ minAbsNzo()

virtual R minAbsNzo ( bool  unscaled = true) const
virtual

Absolute smallest non-zero element in (possibly scaled) LP.

Referenced by SPxLPBase< R >::nNzos(), and SPxLPBase< R >::printProblemStatistics().

◆ nCols()

◆ nNzos()

int nNzos ( ) const

◆ nRows()

◆ number() [1/3]

◆ number() [2/3]

int number ( const SPxColId id) const

Returns the column number of the column with identifier id.

Definition at line 551 of file spxlpbase.h.

References LPColSetBase< R >::number().

◆ number() [3/3]

int number ( const SPxId id) const

Returns the row or column number for identifier id.

Definition at line 557 of file spxlpbase.h.

References SPxId::COL_ID, LPColSetBase< R >::number(), LPRowSetBase< R >::number(), and LPRowSetBase< R >::type().

◆ obj() [1/2]

◆ obj() [2/2]

R obj ( const SPxColId id) const

Returns objective value of column with identifier id.

Definition at line 436 of file spxlpbase.h.

References SPxLPBase< R >::number(), LPRowSetBase< R >::obj(), and SPxLPBase< R >::objUnscaled().

◆ objOffset()

const R& objOffset ( ) const

Returns the objective function value offset.

Definition at line 539 of file spxlpbase.h.

References SPxLPBase< R >::offset.

◆ objUnscaled() [1/2]

R objUnscaled ( int  i) const

Returns unscaled objective value of column i.

Referenced by SPxLPBase< R >::obj().

◆ objUnscaled() [2/2]

R objUnscaled ( const SPxColId id) const

Returns unscaled objective value of column with identifier id.

◆ operator=() [1/2]

◆ operator=() [2/2]

◆ printProblemStatistics()

◆ read()

virtual bool read ( std::istream &  in,
NameSet rowNames = 0,
NameSet colNames = 0,
DIdxSet intVars = 0 
)
virtual

Reads LP in LP or MPS format from input stream in.

Parameters
ininput stream.
rowNamescontains after the call the names of the constraints (rows) in the same order as the rows in the LP. Constraints without a name (only possible with LPF files) are automatically assigned a name. Maybe 0 if the names are not needed.
colNamescontains after the call the names of the variables (columns) in the same order as the columns in the LP. Maybe 0 if the names are not needed.
intVarscontains after the call the indices of those variables that where marked as beeing integer in the file. Maybe 0 if the information is not needed.
Todo:
Make sure the Id's in the NameSets are the same as in the LP.

Reimplemented in SPxSolverBase< R >.

Definition at line 1189 of file spxlpbase.h.

References SPxLPBase< R >::readLPF(), and SPxLPBase< R >::readMPS().

Referenced by SPxLPBase< R >::readFile().

◆ readFile()

virtual bool readFile ( const char *  filename,
NameSet rowNames = 0,
NameSet colNames = 0,
DIdxSet intVars = 0 
)
virtual

Reads LP from a file.

Definition at line 1210 of file spxlpbase.h.

References SPxLPBase< R >::read(), SPxLPBase< R >::writeLPF(), and SPxLPBase< R >::writeMPS().

◆ readLPF()

virtual bool readLPF ( std::istream &  in,
NameSet rowNames = 0,
NameSet colNames = 0,
DIdxSet intVars = 0 
)
virtual

Reads LP in LP format from input stream in.

Referenced by SPxLPBase< R >::clear(), and SPxLPBase< R >::read().

◆ readMPS()

virtual bool readMPS ( std::istream &  in,
NameSet rowNames = 0,
NameSet colNames = 0,
DIdxSet intVars = 0 
)
virtual

Reads an LP in MPS format from input stream in.

Referenced by SPxLPBase< R >::clear(), and SPxLPBase< R >::read().

◆ removeCol() [1/2]

virtual void removeCol ( int  i)
virtual

Removes i 'th column.

Definition at line 1051 of file spxlpbase.h.

References SPxLPBase< R >::doRemoveCol().

Referenced by Presol< R >::getBasis(), SPxLPBase< R >::removeCol(), and SPxMainSM< R >::removeCol().

◆ removeCol() [2/2]

virtual void removeCol ( SPxColId  id)
virtual

Removes column with identifier id.

Definition at line 1060 of file spxlpbase.h.

References SPxLPBase< R >::number(), and SPxLPBase< R >::removeCol().

◆ removeColRange()

virtual void removeColRange ( int  start,
int  end,
int  perm[] = 0 
)
virtual

Removes columns from start to end (including both).

Definition at line 1121 of file spxlpbase.h.

References DataArray< T >::get_ptr(), SPxLPBase< R >::nCols(), and SPxLPBase< R >::removeCols().

◆ removeCols() [1/3]

virtual void removeCols ( int  perm[])
virtual

Removes multiple columns.

This method removes all LPColBases from the SPxLPBase with an index i such that perm[i] < 0. Upon completion, perm[i] >= 0 indicates the new index where the i 'th LPColBase has been moved to due to this removal. Note, that perm must point to an array of at least nCols() ints.

Definition at line 1070 of file spxlpbase.h.

References SPxLPBase< R >::doRemoveCols().

Referenced by SPxLPBase< R >::removeColRange(), and SPxLPBase< R >::removeCols().

◆ removeCols() [2/3]

virtual void removeCols ( SPxColId  id[],
int  n,
int  perm[] = 0 
)
virtual

◆ removeCols() [3/3]

virtual void removeCols ( int  nums[],
int  n,
int  perm[] = 0 
)
virtual

Removes n LPCols.

Removing multiple columns with one method invocation is available in two flavours. An array perm can be passed as third argument or not. If given, perm must be an array at least of size nCols(). It is used to return the permutations resulting from this removal: perm[i] < 0 indicates, that the element to index i has been removed. Otherwise, perm[i] is the new index of the element with index i before the removal.

Definition at line 1101 of file spxlpbase.h.

References DataArray< T >::get_ptr(), SPxLPBase< R >::nCols(), and SPxLPBase< R >::removeCols().

◆ removeRow() [1/2]

virtual void removeRow ( int  i)
virtual

Removes i 'th row.

Definition at line 951 of file spxlpbase.h.

References SPxLPBase< R >::doRemoveRow().

Referenced by Presol< R >::getBasis(), SPxLPBase< R >::removeRow(), and SPxMainSM< R >::removeRow().

◆ removeRow() [2/2]

virtual void removeRow ( SPxRowId  id)
virtual

Removes row with identifier id.

Definition at line 960 of file spxlpbase.h.

References SPxLPBase< R >::number(), and SPxLPBase< R >::removeRow().

◆ removeRowRange()

virtual void removeRowRange ( int  start,
int  end,
int  perm[] = 0 
)
virtual

Removes rows from start to end (including both).

Definition at line 1021 of file spxlpbase.h.

References DataArray< T >::get_ptr(), SPxLPBase< R >::nRows(), and SPxLPBase< R >::removeRows().

◆ removeRows() [1/3]

virtual void removeRows ( int  perm[])
virtual

Removes multiple rows.

This method removes all LPRowBases from the SPxLPBase with an index i such that perm[i] < 0. Upon completion, perm[i] >= 0 indicates the new index where the i'th LPRowBase<R> has been moved to due to this removal. Note that perm must point to an array of at least nRows() ints.

Definition at line 970 of file spxlpbase.h.

References SPxLPBase< R >::doRemoveRows().

Referenced by SPxLPBase< R >::removeRowRange(), and SPxLPBase< R >::removeRows().

◆ removeRows() [2/3]

virtual void removeRows ( SPxRowId  id[],
int  n,
int  perm[] = 0 
)
virtual

◆ removeRows() [3/3]

virtual void removeRows ( int  nums[],
int  n,
int  perm[] = 0 
)
virtual

Removes n LPRowBases.

Removing multiple rows with one method invocation is available in two flavours. An array perm can be passed as third argument or not. If given, perm must be an array at least of size nRows(). It is used to return the permutations resulting from this removal: perm[i] < 0 indicates, that the element to index i has been removed. Otherwise, perm[i] is the new index of the element with index i before the removal.

Definition at line 1001 of file spxlpbase.h.

References DataArray< T >::get_ptr(), SPxLPBase< R >::nRows(), and SPxLPBase< R >::removeRows().

◆ rhs() [1/3]

◆ rhs() [2/3]

const R& rhs ( int  i) const

Returns right hand side of row number i.

Definition at line 245 of file spxlpbase.h.

References LPRowSetBase< R >::rhs().

◆ rhs() [3/3]

const R& rhs ( const SPxRowId id) const

Returns right hand side of row with identifier id.

Definition at line 252 of file spxlpbase.h.

References LPRowSetBase< R >::rhs().

◆ rhs_w()

R& rhs_w ( int  i)
protected

Returns right hand side of row i.

Definition at line 2061 of file spxlpbase.h.

References LPRowSetBase< R >::rhs_w().

◆ rhsUnscaled() [1/2]

R rhsUnscaled ( int  i) const

Returns unscaled right hand side of row number i.

Referenced by SPxLPBase< R >::getRhs().

◆ rhsUnscaled() [2/2]

R rhsUnscaled ( const SPxRowId id) const

Returns unscaled right hand side of row with identifier id.

◆ rId()

SPxRowId rId ( int  n) const

Returns the row identifier for row n.

Definition at line 585 of file spxlpbase.h.

Referenced by SPxLPBase< R >::addRow(), SPxLPBase< R >::addRows(), SPxSolverBase< R >::coId(), and SPxSolverBase< R >::id().

◆ rowObj() [1/2]

◆ rowObj() [2/2]

R rowObj ( const SPxRowId id) const

Returns row objective function value of row with identifier id.

Definition at line 309 of file spxlpbase.h.

References SPxLPBase< R >::maxRowObj(), SPxLPBase< R >::MINIMIZE, and SPxLPBase< R >::spxSense().

◆ rowType() [1/2]

LPRowBase<R>::Type rowType ( int  i) const

Returns the inequality type of the i'th LPRow.

Definition at line 345 of file spxlpbase.h.

References LPRowSetBase< R >::type().

◆ rowType() [2/2]

LPRowBase<R>::Type rowType ( const SPxRowId id) const

Returns the inequality type of the row with identifier key.

Definition at line 351 of file spxlpbase.h.

References LPRowSetBase< R >::type().

◆ rowVector() [1/2]

◆ rowVector() [2/2]

const SVectorBase<R>& rowVector ( const SPxRowId id) const

Gets row vector of row with identifier id.

Definition at line 230 of file spxlpbase.h.

References SPxLPBase< R >::getRowVectorUnscaled(), and LPRowSetBase< R >::rowVector().

◆ rowVector_w()

◆ setOutstream()

void setOutstream ( SPxOut newOutstream)

Definition at line 144 of file spxlpbase.h.

References SPxLPBase< R >::unscaleLP().

◆ setScalingInfo()

void setScalingInfo ( bool  scaled)

set whether the LP is scaled or not

Definition at line 164 of file spxlpbase.h.

◆ spxSense()

◆ subDualActivity()

virtual void subDualActivity ( const VectorBase< R > &  dual,
VectorBase< R > &  activity 
) const
virtual

Updates "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero.

Exceptions
SPxInternalCodeExceptionif dimension of dual vector does not match number of rows or if the dimension of the activity vector does not match the number of columns

Definition at line 1968 of file spxlpbase.h.

References SPxLPBase< R >::buildDualProblem(), VectorBase< R >::dim(), VectorBase< R >::multSub(), SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), and SPxLPBase< R >::rowVector().

◆ unscaleLP()

void unscaleLP ( )

unscales the lp and clears basis

Referenced by SPxLPBase< R >::setOutstream().

◆ upper() [1/3]

◆ upper() [2/3]

const R& upper ( int  i) const

Returns upper bound of column i.

Definition at line 485 of file spxlpbase.h.

References LPColSetBase< R >::upper().

◆ upper() [3/3]

const R& upper ( const SPxColId id) const

Returns upper bound of column with identifier id.

Definition at line 491 of file spxlpbase.h.

References SPxLPBase< R >::getUpperUnscaled(), LPColSetBase< R >::upper(), and SPxLPBase< R >::upperUnscaled().

◆ upper_w()

R& upper_w ( int  i)
protected

Returns upper bound of column i.

Definition at line 2085 of file spxlpbase.h.

References LPColSetBase< R >::upper_w().

◆ upperUnscaled() [1/2]

R upperUnscaled ( int  i) const

Returns unscaled upper bound of column i.

Referenced by SPxLPBase< R >::upper().

◆ upperUnscaled() [2/2]

R upperUnscaled ( const SPxColId id) const

Returns unscaled upper bound of column with identifier id.

◆ writeFileLPBase()

virtual void writeFileLPBase ( const char *  filename,
const NameSet rowNames = 0,
const NameSet colNames = 0,
const DIdxSet p_intvars = 0 
) const
virtual

Write loaded LP to filename.

Definition at line 1234 of file spxlpbase.h.

References SPxLPBase< R >::writeLPF(), and SPxLPBase< R >::writeMPS().

◆ writeLPF()

virtual void writeLPF ( std::ostream &  out,
const NameSet rowNames,
const NameSet colNames,
const DIdxSet p_intvars = 0 
) const
virtual

Writes a file in LP format to out. If rowNames and colNames are NULL, default names are used for the constraints and variables. If intVars is not NULL, the variables contained in it are marked as integer in the output.

Referenced by SPxLPBase< R >::readFile(), and SPxLPBase< R >::writeFileLPBase().

◆ writeMPS()

virtual void writeMPS ( std::ostream &  out,
const NameSet rowNames,
const NameSet colNames,
const DIdxSet p_intvars = 0 
) const
virtual

Writes a file in MPS format to out.

Referenced by SPxLPBase< R >::readFile(), and SPxLPBase< R >::writeFileLPBase().

Friends And Related Function Documentation

◆ SPxLPBase

friend class SPxLPBase
friend

Definition at line 100 of file spxlpbase.h.

Member Data Documentation

◆ _isScaled

bool _isScaled
private

true, if scaling has been performed

Definition at line 131 of file spxlpbase.h.

Referenced by SPxLPBase< R >::isScaled(), and SPxLPBase< R >::operator=().

◆ lp_scaler

◆ offset

R offset
private

offset computed, e.g., in simplification step

Definition at line 130 of file spxlpbase.h.

Referenced by SPxLPBase< R >::objOffset(), and SPxLPBase< R >::operator=().

◆ SPxBasisBase< R >

friend SPxBasisBase< R >
private

Definition at line 101 of file spxlpbase.h.

◆ SPxEquiliSC< R >

friend SPxEquiliSC< R >
private

Definition at line 103 of file spxlpbase.h.

◆ SPxGeometSC< R >

friend SPxGeometSC< R >
private

Definition at line 105 of file spxlpbase.h.

◆ SPxLeastSqSC< R >

friend SPxLeastSqSC< R >
private

Definition at line 104 of file spxlpbase.h.

◆ SPxMainSM< R >

friend SPxMainSM< R >
private

Definition at line 106 of file spxlpbase.h.

◆ spxout

SPxOut* spxout

Definition at line 140 of file spxlpbase.h.

Referenced by SPxLPBase< R >::operator=().

◆ SPxScaler< R >

friend SPxScaler< R >
private

Definition at line 102 of file spxlpbase.h.

◆ thesense

SPxSense thesense
private

optimization sense.

Definition at line 129 of file spxlpbase.h.

Referenced by SPxLPBase< R >::operator=(), and SPxLPBase< R >::spxSense().