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
const std::shared_ptr< Tolerancestolerances () const
 returns current tolerances More...
 
virtual void setTolerances (std::shared_ptr< Tolerances > tolerances)
 set tolerances More...
 
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...
 

Protected Attributes

std::shared_ptr< Tolerances_tolerances
 
- 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...
 

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
 

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 65 of file spxlpbase.h.

Member Enumeration Documentation

◆ SPxSense

enum SPxSense

Optimization sense.

Enumerator
MAXIMIZE 
MINIMIZE 

Definition at line 124 of file spxlpbase.h.

Constructor & Destructor Documentation

◆ SPxLPBase() [1/3]

SPxLPBase ( )

Default constructor.

Definition at line 2826 of file spxlpbase.h.

◆ ~SPxLPBase()

virtual ~SPxLPBase ( )
virtual

Destructor.

Definition at line 2834 of file spxlpbase.h.

◆ SPxLPBase() [2/3]

SPxLPBase ( const SPxLPBase< R > &  old)

Copy constructor.

Definition at line 2838 of file spxlpbase.h.

◆ SPxLPBase() [3/3]

SPxLPBase ( const SPxLPBase< S > &  old)

Copy constructor.

Definition at line 2853 of file spxlpbase.h.

Member Function Documentation

◆ addCol() [1/4]

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

Definition at line 796 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::addCol(), and Presol< BP >::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 802 of file spxlpbase.h.

◆ addCol() [3/4]

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

Definition at line 810 of file spxlpbase.h.

◆ addCol() [4/4]

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

Adds col to LPColSetVBase.

Definition at line 845 of file spxlpbase.h.

◆ addCols() [1/3]

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

Definition at line 852 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::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 
)
Todo:
implement the addition of new rows as in doAddCols()

Definition at line 859 of file spxlpbase.h.

◆ 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 955 of file spxlpbase.h.

◆ 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 1971 of file spxlpbase.h.

◆ added2Set()

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

Definition at line 2274 of file spxlpbase.h.

◆ 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 1947 of file spxlpbase.h.

◆ addRow() [1/4]

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

Definition at line 624 of file spxlpbase.h.

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

◆ addRow() [2/4]

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

Definition at line 630 of file spxlpbase.h.

◆ addRow() [3/4]

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

Definition at line 638 of file spxlpbase.h.

◆ addRow() [4/4]

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

Adds row to LPRowSetBase.

Definition at line 675 of file spxlpbase.h.

◆ addRows() [1/3]

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

Definition at line 682 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::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 
)
Todo:
implement the addition of new columns as in doAddRows()

Definition at line 689 of file spxlpbase.h.

◆ 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 786 of file spxlpbase.h.

◆ 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< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1554 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1563 of file spxlpbase.h.

◆ 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 1572 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1580 of file spxlpbase.h.

◆ changeCol() [1/2]

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

Replaces i 'th column of LP with newCol. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 1790 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeCol().

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1833 of file spxlpbase.h.

◆ changeElement() [1/3]

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

Changes LP element (i, j) to val. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 1839 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeElement().

◆ changeElement() [2/3]

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

Changes LP element (i, j) to val.

Definition at line 1882 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1913 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1586 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeLhs(), SPxLPBase< BP >::changeRange(), and SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1605 of file spxlpbase.h.

◆ changeLhs() [3/4]

void changeLhs ( int  i,
const S *  newLhs 
)

Changes i 'th left hand side value to newLhs.

Definition at line 1621 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1628 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1458 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeBounds(), SPxLPBase< BP >::changeCol(), and SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1477 of file spxlpbase.h.

◆ changeLower() [3/4]

void changeLower ( int  i,
const S *  newLower 
)

changes i 'th lower bound to newLower.

Definition at line 1493 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1500 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1410 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeMaxObj(), and SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1429 of file spxlpbase.h.

◆ changeMaxObj() [3/4]

void changeMaxObj ( int  i,
const S *  newVal 
)

changes i 'th objective vector element to newVal.

Definition at line 1445 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1452 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1374 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeCol(), and SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1383 of file spxlpbase.h.

◆ changeObj() [3/4]

void changeObj ( int  i,
const S *  newVal 
)

changes i 'th objective vector element to newVal.

Definition at line 1393 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1404 of file spxlpbase.h.

◆ changeObjOffset()

void changeObjOffset ( const T &  o)

Definition at line 1931 of file spxlpbase.h.

Referenced by Presol< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1674 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1683 of file spxlpbase.h.

◆ 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 1692 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1700 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1634 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeRange(), SPxLPBase< BP >::changeRhs(), and SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1653 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1668 of file spxlpbase.h.

◆ changeRow() [1/2]

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

Replaces i 'th row of LP with newRow. scale determines whether the new data should be scaled.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 1741 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeRow().

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1784 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1706 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeRow(), and SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1718 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1729 of file spxlpbase.h.

◆ changeSense()

virtual void changeSense ( SPxSense  sns)
virtual

Changes optimization sense to sns.

Definition at line 1919 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1506 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeBounds(), SPxLPBase< BP >::changeCol(), and SPxLPBase< BP >::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 >, and SPxSolverBase< BP >.

Definition at line 1525 of file spxlpbase.h.

◆ changeUpper() [3/4]

void changeUpper ( int  i,
const S *  newUpper 
)

Changes i 'th upper bound to newUpper.

Definition at line 1541 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1548 of file spxlpbase.h.

◆ cId()

SPxColId cId ( int  n) const

Returns the column identifier for column n.

Definition at line 612 of file spxlpbase.h.

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

◆ clear()

virtual void clear ( )
virtual

clears the LP.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 1172 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::SPxLPBase().

◆ clearRowObjs()

virtual void clearRowObjs ( )
virtual

Clears row objective function values for all rows.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 1735 of file spxlpbase.h.

◆ 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 422 of file spxlpbase.h.

◆ 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< BP >::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< BP >::changeObjOffset().

◆ doAddCol() [1/2]

void doAddCol ( const LPColBase< R > &  col,
bool  scale = false 
)
private

Definition at line 2577 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::addCol().

◆ doAddCol() [2/2]

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

Definition at line 2637 of file spxlpbase.h.

◆ doAddCols()

void doAddCols ( const LPColSetBase< R > &  set,
bool  scale = false 
)
private

Definition at line 2697 of file spxlpbase.h.

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

◆ doAddRow() [1/2]

void doAddRow ( const LPRowBase< R > &  row,
bool  scale = false 
)
private

Definition at line 2347 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::addRow().

◆ doAddRow() [2/2]

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

Definition at line 2404 of file spxlpbase.h.

◆ doAddRows()

void doAddRows ( const LPRowSetBase< R > &  set,
bool  scale = false 
)
private

Definition at line 2462 of file spxlpbase.h.

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

◆ doRemoveCol()

virtual void doRemoveCol ( int  j)
protectedvirtual

Internal helper method.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 2202 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::removeCol().

◆ doRemoveCols()

virtual void doRemoveCols ( int  perm[])
protectedvirtual

Internal helper method.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 2243 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::removeCols().

◆ doRemoveRow()

virtual void doRemoveRow ( int  j)
protectedvirtual

Internal helper method.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 2141 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::removeRow().

◆ doRemoveRows()

virtual void doRemoveRows ( int  perm[])
protectedvirtual

Internal helper method.

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 2179 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::removeRows().

◆ getCol() [1/2]

void getCol ( int  i,
LPColBase< R > &  col 
) const

Gets i 'th column.

Definition at line 378 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::getCol(), and SPxLPBase< BP >::getCols().

◆ getCol() [2/2]

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

Gets column with identifier id.

Definition at line 387 of file spxlpbase.h.

◆ getCols()

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

Gets columns start, ..., end.

Definition at line 393 of file spxlpbase.h.

◆ getColVectorUnscaled() [1/2]

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

Gets column vector of column i.

Referenced by SPxLPBase< BP >::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< BP >::maxRowObj().

◆ getLowerUnscaled()

void getLowerUnscaled ( VectorBase< R > &  vec) const

Gets unscaled lower bound vector.

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

◆ getObj()

void getObj ( VectorBase< R > &  pobj) const

Gets objective vector.

Definition at line 437 of file spxlpbase.h.

◆ getObjUnscaled()

void getObjUnscaled ( VectorBase< R > &  pobj) const

Gets unscaled objective vector.

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

◆ getRhs()

void getRhs ( VectorBase< R > &  vec) const

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

Definition at line 279 of file spxlpbase.h.

◆ getRhsUnscaled()

void getRhsUnscaled ( VectorBase< R > &  vec) const

Gets unscaled right hand side vector.

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

◆ getRow() [1/2]

void getRow ( int  i,
LPRowBase< R > &  row 
) const

Gets i 'th row.

Definition at line 221 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::getRow().

◆ getRow() [2/2]

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

Gets row with identifier id.

Definition at line 230 of file spxlpbase.h.

◆ getRowObj()

void getRowObj ( VectorBase< R > &  prowobj) const

Gets row objective function vector.

Definition at line 312 of file spxlpbase.h.

◆ getRows()

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

Gets rows start, ... end.

Definition at line 236 of file spxlpbase.h.

◆ getRowVectorUnscaled()

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

Gets unscaled row vector of row i.

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

◆ getUpperUnscaled()

void getUpperUnscaled ( VectorBase< R > &  vec) const

Gets unscaled upper bound vector.

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

◆ has() [1/3]

bool has ( const SPxRowId id) const

Returns the row number of the row with identifier id.

Definition at line 586 of file spxlpbase.h.

◆ has() [2/3]

bool has ( const SPxColId id) const

Returns the column number of the column with identifier id.

Definition at line 592 of file spxlpbase.h.

◆ has() [3/3]

bool has ( const SPxId id) const

Returns the row or column number for identifier id.

Definition at line 598 of file spxlpbase.h.

◆ isConsistent()

◆ isScaled()

bool isScaled ( ) const

Returns true if and only if the LP is scaled.

Definition at line 179 of file spxlpbase.h.

◆ lhs() [1/3]

◆ lhs() [2/3]

const R& lhs ( int  i) const

Returns left hand side of row number i.

Definition at line 300 of file spxlpbase.h.

◆ lhs() [3/3]

const R& lhs ( const SPxRowId id) const

Returns left hand side of row with identifier id.

Definition at line 306 of file spxlpbase.h.

◆ lhs_w()

R& lhs_w ( int  i)
protected

Returns left hand side of row i.

Definition at line 2093 of file spxlpbase.h.

◆ lhsUnscaled() [1/2]

R lhsUnscaled ( int  i) const

Returns unscaled left hand side of row number i.

Referenced by SPxLPBase< BP >::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 533 of file spxlpbase.h.

◆ 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 539 of file spxlpbase.h.

◆ lower_w()

R& lower_w ( int  i)
protected

Returns lower bound of column i.

Definition at line 2117 of file spxlpbase.h.

◆ lowerUnscaled() [1/2]

R lowerUnscaled ( int  i) const

Returns unscaled lower bound of column i.

Referenced by SPxLPBase< BP >::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 2135 of file spxlpbase.h.

◆ lprowset()

const LPRowSetBase<R>* lprowset ( ) const
protected

Returns the LP as an LPRowSetBase.

Definition at line 2129 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< BP >::nNzos(), and SPxLPBase< BP >::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 473 of file spxlpbase.h.

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

◆ maxObj() [2/3]

const R& maxObj ( int  i) const

Returns objective value of column i for maximization problem.

Definition at line 479 of file spxlpbase.h.

◆ maxObj() [3/3]

const R& maxObj ( const SPxColId id) const

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

Definition at line 485 of file spxlpbase.h.

◆ maxObj_w()

R& maxObj_w ( int  i)
protected

Returns objective value of column i for maximization problem.

Definition at line 2105 of file spxlpbase.h.

◆ maxObjUnscaled() [1/3]

void maxObjUnscaled ( VectorBase< R > &  vec) const

Returns unscaled objective vector for maximization problem.

Referenced by SPxLPBase< BP >::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 339 of file spxlpbase.h.

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

◆ maxRowObj() [2/3]

const R& maxRowObj ( int  i) const

Definition at line 345 of file spxlpbase.h.

◆ maxRowObj() [3/3]

const R& maxRowObj ( const SPxRowId id) const

Returns row objective function value of row with identifier id.

Definition at line 351 of file spxlpbase.h.

◆ maxRowObj_w()

R& maxRowObj_w ( int  i)
protected

Returns objective function value of row i.

Definition at line 2099 of file spxlpbase.h.

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

◆ minAbsNzo()

virtual R minAbsNzo ( bool  unscaled = true) const
virtual

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

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

◆ nCols()

◆ nNzos()

int nNzos ( ) const

Returns number of nonzeros in LP.

Definition at line 203 of file spxlpbase.h.

Referenced by Presol< BP >::getBasis(), and SPxLPBase< BP >::printProblemStatistics().

◆ 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 572 of file spxlpbase.h.

◆ number() [3/3]

int number ( const SPxId id) const

Returns the row or column number for identifier id.

Definition at line 578 of file spxlpbase.h.

◆ obj() [1/2]

◆ obj() [2/2]

R obj ( const SPxColId id) const

Returns objective value of column with identifier id.

Definition at line 457 of file spxlpbase.h.

◆ objOffset()

const R& objOffset ( ) const

Returns the objective function value offset.

Definition at line 560 of file spxlpbase.h.

◆ objUnscaled() [1/2]

R objUnscaled ( int  i) const

Returns unscaled objective value of column i.

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

◆ objUnscaled() [2/2]

R objUnscaled ( const SPxColId id) const

Returns unscaled objective value of column with identifier id.

◆ operator=() [1/2]

SPxLPBase<R>& operator= ( const SPxLPBase< R > &  old)

Assignment operator.

Definition at line 2867 of file spxlpbase.h.

◆ operator=() [2/2]

SPxLPBase<R>& operator= ( const SPxLPBase< S > &  old)

Assignment operator.

Definition at line 2888 of file spxlpbase.h.

◆ printProblemStatistics()

void printProblemStatistics ( std::ostream &  os)

prints problem statistics

Definition at line 1274 of file spxlpbase.h.

◆ 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 >, and SPxSolverBase< BP >.

Definition at line 1210 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::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 1231 of file spxlpbase.h.

◆ 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< BP >::clear(), and SPxLPBase< BP >::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< BP >::clear(), and SPxLPBase< BP >::read().

◆ removeCol() [1/2]

virtual void removeCol ( int  i)
virtual

Removes i 'th column.

Definition at line 1072 of file spxlpbase.h.

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

◆ removeCol() [2/2]

virtual void removeCol ( SPxColId  id)
virtual

Removes column with identifier id.

Definition at line 1081 of file spxlpbase.h.

◆ removeColRange()

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

Removes columns from start to end (including both).

Definition at line 1142 of file spxlpbase.h.

◆ 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 1091 of file spxlpbase.h.

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

◆ removeCols() [2/3]

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

Definition at line 1097 of file spxlpbase.h.

◆ 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 1122 of file spxlpbase.h.

◆ removeRow() [1/2]

virtual void removeRow ( int  i)
virtual

Removes i 'th row.

Definition at line 972 of file spxlpbase.h.

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

◆ removeRow() [2/2]

virtual void removeRow ( SPxRowId  id)
virtual

Removes row with identifier id.

Definition at line 981 of file spxlpbase.h.

◆ removeRowRange()

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

Removes rows from start to end (including both).

Definition at line 1042 of file spxlpbase.h.

◆ 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 991 of file spxlpbase.h.

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

◆ removeRows() [2/3]

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

Definition at line 997 of file spxlpbase.h.

◆ 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 1022 of file spxlpbase.h.

◆ rhs() [1/3]

◆ rhs() [2/3]

const R& rhs ( int  i) const

Returns right hand side of row number i.

Definition at line 266 of file spxlpbase.h.

◆ rhs() [3/3]

const R& rhs ( const SPxRowId id) const

Returns right hand side of row with identifier id.

Definition at line 273 of file spxlpbase.h.

◆ rhs_w()

R& rhs_w ( int  i)
protected

Returns right hand side of row i.

Definition at line 2087 of file spxlpbase.h.

◆ rhsUnscaled() [1/2]

R rhsUnscaled ( int  i) const

Returns unscaled right hand side of row number i.

Referenced by SPxLPBase< BP >::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 606 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::addRow(), SPxLPBase< BP >::addRows(), SPxSolverBase< BP >::coId(), and SPxSolverBase< BP >::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 330 of file spxlpbase.h.

◆ rowType() [1/2]

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

Returns the inequality type of the i'th LPRow.

Definition at line 366 of file spxlpbase.h.

◆ rowType() [2/2]

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

Returns the inequality type of the row with identifier key.

Definition at line 372 of file spxlpbase.h.

◆ 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 251 of file spxlpbase.h.

◆ rowVector_w()

◆ setOutstream()

void setOutstream ( SPxOut newOutstream)

Definition at line 153 of file spxlpbase.h.

◆ setScalingInfo()

void setScalingInfo ( bool  scaled)

set whether the LP is scaled or not

Definition at line 185 of file spxlpbase.h.

◆ setTolerances()

virtual void setTolerances ( std::shared_ptr< Tolerances tolerances)
virtual

set tolerances

Reimplemented in SPxSolverBase< R >, and SPxSolverBase< BP >.

Definition at line 173 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 1989 of file spxlpbase.h.

◆ tolerances()

const std::shared_ptr<Tolerances> tolerances ( ) const

returns current tolerances

Definition at line 167 of file spxlpbase.h.

Referenced by SPxLPBase< BP >::changeElement(), SPxLPBase< BP >::printProblemStatistics(), and SPxLPBase< BP >::setTolerances().

◆ unscaleLP()

void unscaleLP ( )

unscales the lp and clears basis

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

◆ upper() [1/3]

◆ upper() [2/3]

const R& upper ( int  i) const

Returns upper bound of column i.

Definition at line 506 of file spxlpbase.h.

◆ upper() [3/3]

const R& upper ( const SPxColId id) const

Returns upper bound of column with identifier id.

Definition at line 512 of file spxlpbase.h.

◆ upper_w()

R& upper_w ( int  i)
protected

Returns upper bound of column i.

Definition at line 2111 of file spxlpbase.h.

◆ upperUnscaled() [1/2]

R upperUnscaled ( int  i) const

Returns unscaled upper bound of column i.

Referenced by SPxLPBase< BP >::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 1255 of file spxlpbase.h.

◆ 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< BP >::readFile(), and SPxLPBase< BP >::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< BP >::readFile(), and SPxLPBase< BP >::writeFileLPBase().

Friends And Related Function Documentation

◆ SPxLPBase

friend class SPxLPBase
friend

Definition at line 109 of file spxlpbase.h.

Member Data Documentation

◆ _isScaled

bool _isScaled
private

true, if scaling has been performed

Definition at line 140 of file spxlpbase.h.

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

◆ _tolerances

◆ lp_scaler

◆ offset

R offset
private

offset computed, e.g., in simplification step

Definition at line 139 of file spxlpbase.h.

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

◆ SPxBasisBase< R >

friend SPxBasisBase< R >
private

Definition at line 110 of file spxlpbase.h.

◆ SPxEquiliSC< R >

friend SPxEquiliSC< R >
private

Definition at line 112 of file spxlpbase.h.

◆ SPxGeometSC< R >

friend SPxGeometSC< R >
private

Definition at line 114 of file spxlpbase.h.

◆ SPxLeastSqSC< R >

friend SPxLeastSqSC< R >
private

Definition at line 113 of file spxlpbase.h.

◆ SPxMainSM< R >

friend SPxMainSM< R >
private

Definition at line 115 of file spxlpbase.h.

◆ spxout

SPxOut* spxout

Definition at line 149 of file spxlpbase.h.

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

◆ SPxScaler< R >

friend SPxScaler< R >
private

Definition at line 111 of file spxlpbase.h.

◆ thesense

SPxSense thesense
private

optimization sense.

Definition at line 138 of file spxlpbase.h.

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