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...
 
template<>
void unscaleLP ()
 
template<>
void computePrimalActivity (const VectorBase< Real > &primal, VectorBase< Real > &activity, const bool unscaled) const
 
template<>
void computeDualActivity (const VectorBase< Real > &dual, VectorBase< Real > &activity, const bool unscaled) const
 
template<>
Real maxAbsNzo (bool unscaled) const
 
template<>
Real minAbsNzo (bool unscaled) const
 
template<>
void getObjUnscaled (VectorBase< Real > &pobj) const
 
template<>
void getRowVectorUnscaled (int i, DSVectorBase< Real > &vec) const
 
template<>
void getRhsUnscaled (VectorBase< Real > &vec) const
 
template<>
Real rhsUnscaled (int i) const
 
template<>
Real rhsUnscaled (const SPxRowId &id) const
 
template<>
void getLhsUnscaled (VectorBase< Real > &vec) const
 
template<>
Real lhsUnscaled (int i) const
 
template<>
Real lhsUnscaled (const SPxRowId &id) const
 
template<>
void getColVectorUnscaled (int i, DSVectorBase< Real > &vec) const
 
template<>
void getColVectorUnscaled (const SPxColId &id, DSVectorBase< Real > &vec) const
 
template<>
Real objUnscaled (int i) const
 
template<>
Real objUnscaled (const SPxColId &id) const
 
template<>
void maxObjUnscaled (VectorBase< Real > &vec) const
 
template<>
Real maxObjUnscaled (int i) const
 
template<>
Real maxObjUnscaled (const SPxColId &id) const
 
template<>
void getUpperUnscaled (DVector &vec) const
 
template<>
Real upperUnscaled (int i) const
 
template<>
Real upperUnscaled (const SPxColId &id) const
 
template<>
void getLowerUnscaled (DVector &vec) const
 
template<>
Real lowerUnscaled (int i) const
 
template<>
Real lowerUnscaled (const SPxColId &id) const
 
template<>
void changeMaxObj (const VectorBase< Real > &newObj, bool scale)
 
template<>
void changeLower (const VectorBase< Real > &newLower, bool scale)
 
template<>
void changeUpper (const VectorBase< Real > &newUpper, bool scale)
 
template<>
void changeLhs (const VectorBase< Real > &newLhs, bool scale)
 
template<>
void changeRhs (const VectorBase< Real > &newRhs, bool scale)
 
template<>
void changeElement (int i, int j, const Real &val, bool scale)
 
template<>
bool readLPF (std::istream &p_input, NameSet *p_rnames, NameSet *p_cnames, DIdxSet *p_intvars)
 
template<>
bool readMPS (std::istream &p_input, NameSet *p_rnames, NameSet *p_cnames, DIdxSet *p_intvars)
 
template<>
void writeLPF (std::ostream &p_output, const NameSet *p_rnames, const NameSet *p_cnames, const DIdxSet *p_intvars) const
 
template<>
void writeMPS (std::ostream &p_output, const NameSet *p_rnames, const NameSet *p_cnames, const DIdxSet *p_intvars) const
 
template<>
void buildDualProblem (SPxLPBase< Real > &dualLP, SPxRowId primalRowIds[], SPxColId primalColIds[], SPxRowId dualRowIds[], SPxColId dualColIds[], int *nprimalrows, int *nprimalcols, int *ndualrows, int *ndualcols)
 
template<>
void computePrimalActivity (const VectorBase< Rational > &primal, VectorBase< Rational > &activity, const bool unscaled) const
 
template<>
void computeDualActivity (const VectorBase< Rational > &dual, VectorBase< Rational > &activity, const bool unscaled) const
 
template<>
Rational maxAbsNzo (bool) const
 
template<>
Rational minAbsNzo (bool) const
 
template<>
bool readLPF (std::istream &p_input, NameSet *p_rnames, NameSet *p_cnames, DIdxSet *p_intvars)
 Read LP in "CPLEX LP File Format". More...
 
template<>
bool readMPS (std::istream &p_input, NameSet *p_rnames, NameSet *p_cnames, DIdxSet *p_intvars)
 
template<>
void writeLPF (std::ostream &p_output, const NameSet *p_rnames, const NameSet *p_cnames, const DIdxSet *p_intvars) const
 Write LP in LP Format. More...
 
template<>
void writeMPS (std::ostream &p_output, const NameSet *p_rnames, const NameSet *p_cnames, const DIdxSet *p_intvars) const
 Write LP in MPS format. More...
 
template<>
void buildDualProblem (SPxLPBase< Rational > &dualLP, SPxRowId primalRowIds[], SPxColId primalColIds[], SPxRowId dualRowIds[], SPxColId dualColIds[], int *nprimalrows, int *nprimalcols, int *ndualrows, int *ndualcols)
 Building the dual problem from a given LP. More...
 
template<>
void unscaleLP ()
 
template<>
void computePrimalActivity (const VectorBase< Real > &primal, VectorBase< Real > &activity, const bool unscaled) const
 
template<>
void computeDualActivity (const VectorBase< Real > &dual, VectorBase< Real > &activity, const bool unscaled) const
 
template<>
Real maxAbsNzo (bool unscaled) const
 
template<>
Real minAbsNzo (bool unscaled) const
 
template<>
void getObjUnscaled (VectorBase< Real > &pobj) const
 Gets unscaled objective vector. More...
 
template<>
void getRowVectorUnscaled (int i, DSVectorBase< Real > &vec) const
 Gets unscaled row vector of row i. More...
 
template<>
void getRhsUnscaled (VectorBase< Real > &vec) const
 Gets unscaled right hand side vector. More...
 
template<>
Real rhsUnscaled (int i) const
 Returns unscaled right hand side of row number i. More...
 
template<>
Real rhsUnscaled (const SPxRowId &id) const
 Returns unscaled right hand side of row with identifier id. More...
 
template<>
void getLhsUnscaled (VectorBase< Real > &vec) const
 Returns unscaled left hand side vector. More...
 
template<>
Real lhsUnscaled (int i) const
 Returns unscaled left hand side of row number i. More...
 
template<>
Real lhsUnscaled (const SPxRowId &id) const
 Returns left hand side of row with identifier id. More...
 
template<>
void getColVectorUnscaled (int i, DSVectorBase< Real > &vec) const
 Gets column vector of column i. More...
 
template<>
void getColVectorUnscaled (const SPxColId &id, DSVectorBase< Real > &vec) const
 Gets column vector of column with identifier id. More...
 
template<>
Real objUnscaled (int i) const
 Returns unscaled objective value of column i. More...
 
template<>
Real objUnscaled (const SPxColId &id) const
 Returns unscaled objective value of column with identifier id. More...
 
template<>
void maxObjUnscaled (VectorBase< Real > &vec) const
 Returns unscaled objective vector for maximization problem. More...
 
template<>
Real maxObjUnscaled (int i) const
 Returns unscaled objective value of column i for maximization problem. More...
 
template<>
Real maxObjUnscaled (const SPxColId &id) const
 Returns unscaled objective value of column with identifier id for maximization problem. More...
 
template<>
void getUpperUnscaled (DVector &vec) const
 Returns unscaled upper bound vector. More...
 
template<>
Real upperUnscaled (int i) const
 Returns unscaled upper bound of column i. More...
 
template<>
Real upperUnscaled (const SPxColId &id) const
 Returns unscaled upper bound of column with identifier id. More...
 
template<>
void getLowerUnscaled (DVector &vec) const
 Returns unscaled lower bound vector. More...
 
template<>
Real lowerUnscaled (int i) const
 Returns unscaled lower bound of column i. More...
 
template<>
Real lowerUnscaled (const SPxColId &id) const
 Returns unscaled lower bound of column with identifier id. More...
 
template<>
void changeMaxObj (const VectorBase< Real > &newObj, bool scale)
 Changes objective vector to newObj. More...
 
template<>
void changeLower (const VectorBase< Real > &newLower, bool scale)
 Changes vector of lower bounds to newLower. More...
 
template<>
void changeUpper (const VectorBase< Real > &newUpper, bool scale)
 Changes vector of upper bounds to newUpper. More...
 
template<>
void changeLhs (const VectorBase< Real > &newLhs, bool scale)
 Changes left hand side vector for constraints to newLhs. More...
 
template<>
void changeRhs (const VectorBase< Real > &newRhs, bool scale)
 Changes right hand side vector for constraints to newRhs. More...
 
template<>
void changeElement (int i, int j, const Real &val, bool scale)
 Changes LP element (i, j) to val. scale determines whether the new data should be scaled. More...
 
template<>
bool readLPF (std::istream &p_input, NameSet *p_rnames, NameSet *p_cnames, DIdxSet *p_intvars)
 Read LP in "CPLEX LP File Format". More...
 
template<>
bool readMPS (std::istream &p_input, NameSet *p_rnames, NameSet *p_cnames, DIdxSet *p_intvars)
 
template<>
void writeLPF (std::ostream &p_output, const NameSet *p_rnames, const NameSet *p_cnames, const DIdxSet *p_intvars) const
 Write LP in LP Format. More...
 
template<>
void writeMPS (std::ostream &p_output, const NameSet *p_rnames, const NameSet *p_cnames, const DIdxSet *p_intvars) const
 Write LP in MPS format. More...
 
template<>
void buildDualProblem (SPxLPBase< Real > &dualLP, SPxRowId primalRowIds[], SPxColId primalColIds[], SPxRowId dualRowIds[], SPxColId dualColIds[], int *nprimalrows, int *nprimalcols, int *ndualrows, int *ndualcols)
 Building the dual problem from a given LP. 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< Real > &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< Real > &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< Real > &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< Real > &vec) const
 Gets column vector of column i. More...
 
void getColVectorUnscaled (const SPxColId &id, DSVectorBase< Real > &vec) const
 Gets column vector of column with identifier id. More...
 
void getObjUnscaled (VectorBase< Real > &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< Real > &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 (DVector &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 (DVector &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 writeFile (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...
 
virtual void changeObjOffset (const R &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 LPRowSet. 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

Data
SPxSense thesense
 optimization sense. More...
 
offset
 offset computed, e.g., in simplification step More...
 
bool _isScaled
 true, if scaling has been performed More...
 
SPxScalerlp_scaler
 points to the scaler if the lp has been scaled, to 0 otherwise More...
 

Friends

template<class S >
class SPxLPBase
 
class SPxBasis
 
class SPxScaler
 
class SPxEquiliSC
 
class SPxLeastSqSC
 
class SPxGeometSC
 
class SPxMainSM
 

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

Member Enumeration Documentation

◆ SPxSense

enum SPxSense

Optimization sense.

Enumerator
MAXIMIZE 
MINIMIZE 

Definition at line 97 of file spxlpbase.h.

Constructor & Destructor Documentation

◆ SPxLPBase() [1/3]

SPxLPBase ( )

Default constructor.

Definition at line 2721 of file spxlpbase.h.

◆ ~SPxLPBase()

virtual ~SPxLPBase ( )
virtual

Destructor.

Definition at line 2729 of file spxlpbase.h.

◆ SPxLPBase() [2/3]

SPxLPBase ( const SPxLPBase< R > &  old)

Copy constructor.

Definition at line 2733 of file spxlpbase.h.

◆ SPxLPBase() [3/3]

SPxLPBase ( const SPxLPBase< S > &  old)

Copy constructor.

Definition at line 2747 of file spxlpbase.h.

Member Function Documentation

◆ addCol() [1/4]

◆ 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 763 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 771 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 806 of file spxlpbase.h.

◆ addCols() [1/3]

◆ 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 820 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 916 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 1880 of file spxlpbase.h.

Referenced by SoPlex::_performOptIRStable().

◆ added2Set()

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

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

Referenced by SoPlex::_performOptIRStable().

◆ addRow() [1/4]

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

◆ addRow() [2/4]

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

Definition at line 591 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 599 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 636 of file spxlpbase.h.

◆ addRows() [1/3]

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

◆ buildDualProblem() [1/4]

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 SoPlex::_formDecompComplementaryProblem(), SoPlex::_solveDecompositionDualSimplex(), SPxLPBase< Real >::operator=(), SPxLPBase< Real >::subDualActivity(), and SoPlex::writeDualFileReal().

◆ buildDualProblem() [2/4]

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

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.

Definition at line 2499 of file spxlpbase_rational.cpp.

◆ buildDualProblem() [3/4]

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

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.

Definition at line 2795 of file spxlpbase_real.cpp.

◆ buildDualProblem() [4/4]

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

◆ 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.

Definition at line 1485 of file spxlpbase.h.

Referenced by SoPlex::_changeBoundsReal(), SoPlex::_lift(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SPxLPBase< Real >::changeBounds(), SoPlex::changeBoundsRational(), SoPlex::changeBoundsReal(), and SPxMainSM::simplifyCols().

◆ 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.

Definition at line 1494 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 1503 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.

Definition at line 1511 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.

Definition at line 1701 of file spxlpbase.h.

Referenced by SoPlex::_changeColReal(), SPxLPBase< Real >::changeCol(), SoPlex::changeColRational(), and SoPlex::changeColReal().

◆ 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.

Definition at line 1744 of file spxlpbase.h.

◆ changeElement() [1/5]

void changeElement ( int  i,
int  j,
const Real val,
bool  scale 
)

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

Definition at line 535 of file spxlpbase_real.cpp.

◆ changeElement() [2/5]

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

◆ changeElement() [3/5]

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

Changes LP element (i, j) to val.

Definition at line 1793 of file spxlpbase.h.

◆ changeElement() [4/5]

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.

Definition at line 1824 of file spxlpbase.h.

◆ changeElement() [5/5]

void changeElement ( int  i,
int  j,
const Real val,
bool  scale 
)

◆ changeLhs() [1/6]

void changeLhs ( const VectorBase< Real > &  newLhs,
bool  scale 
)

Changes left hand side vector for constraints to newLhs.

Definition at line 499 of file spxlpbase_real.cpp.

◆ changeLhs() [2/6]

◆ changeLhs() [3/6]

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.

Definition at line 1526 of file spxlpbase.h.

◆ changeLhs() [4/6]

void changeLhs ( int  i,
const S *  newLhs 
)

Changes i 'th left hand side value to newLhs.

Definition at line 1542 of file spxlpbase.h.

◆ changeLhs() [5/6]

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.

Definition at line 1549 of file spxlpbase.h.

◆ changeLhs() [6/6]

void changeLhs ( const VectorBase< Real > &  newLhs,
bool  scale 
)

◆ changeLower() [1/6]

void changeLower ( const VectorBase< Real > &  newLower,
bool  scale 
)

Changes vector of lower bounds to newLower.

Definition at line 460 of file spxlpbase_real.cpp.

◆ changeLower() [2/6]

◆ changeLower() [3/6]

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

Definition at line 1418 of file spxlpbase.h.

◆ changeLower() [4/6]

void changeLower ( int  i,
const S *  newLower 
)

changes i 'th lower bound to newLower.

Definition at line 1434 of file spxlpbase.h.

◆ changeLower() [5/6]

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

Definition at line 1441 of file spxlpbase.h.

◆ changeLower() [6/6]

void changeLower ( const VectorBase< Real > &  newLower,
bool  scale 
)

◆ changeMaxObj() [1/6]

void changeMaxObj ( const VectorBase< Real > &  newObj,
bool  scale 
)

Changes objective vector to newObj.

Definition at line 442 of file spxlpbase_real.cpp.

◆ changeMaxObj() [2/6]

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

◆ changeMaxObj() [3/6]

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

Definition at line 1380 of file spxlpbase.h.

◆ changeMaxObj() [4/6]

void changeMaxObj ( int  i,
const S *  newVal 
)

changes i 'th objective vector element to newVal.

Definition at line 1396 of file spxlpbase.h.

◆ changeMaxObj() [5/6]

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.

Definition at line 1403 of file spxlpbase.h.

◆ changeMaxObj() [6/6]

void changeMaxObj ( const VectorBase< Real > &  newObj,
bool  scale 
)

◆ changeObj() [1/4]

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

◆ 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

Definition at line 1344 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 1354 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.

Definition at line 1365 of file spxlpbase.h.

◆ changeObjOffset()

◆ changeRange() [1/4]

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

◆ 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.

Definition at line 1594 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 1603 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.

Definition at line 1611 of file spxlpbase.h.

◆ changeRhs() [1/5]

void changeRhs ( const VectorBase< Real > &  newRhs,
bool  scale 
)

Changes right hand side vector for constraints to newRhs.

Definition at line 517 of file spxlpbase_real.cpp.

◆ changeRhs() [2/5]

◆ changeRhs() [3/5]

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.

Definition at line 1564 of file spxlpbase.h.

◆ changeRhs() [4/5]

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.

Definition at line 1579 of file spxlpbase.h.

◆ changeRhs() [5/5]

void changeRhs ( const VectorBase< Real > &  newRhs,
bool  scale 
)

◆ 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.

Definition at line 1652 of file spxlpbase.h.

Referenced by SoPlex::_changeRowReal(), SoPlex::_getCompatibleColumns(), SPxLPBase< Real >::changeRow(), SoPlex::changeRowRational(), and SoPlex::changeRowReal().

◆ 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.

Definition at line 1695 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.

Definition at line 1617 of file spxlpbase.h.

Referenced by SPxLPBase< Real >::changeRow(), SPxLPBase< Real >::changeRowObj(), and SPxMainSM::handleRowObjectives().

◆ 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.

Definition at line 1629 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.

Definition at line 1640 of file spxlpbase.h.

◆ changeSense()

virtual void changeSense ( SPxSense  sns)
virtual

Changes optimization sense to sns.

Reimplemented in SPxSolver.

Definition at line 1830 of file spxlpbase.h.

Referenced by SPxLPBase< Real >::buildDualProblem(), and SoPlex::setIntParam().

◆ changeUpper() [1/6]

void changeUpper ( const VectorBase< Real > &  newUpper,
bool  scale 
)

Changes vector of upper bounds to newUpper.

Definition at line 480 of file spxlpbase_real.cpp.

◆ changeUpper() [2/6]

◆ changeUpper() [3/6]

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.

Definition at line 1456 of file spxlpbase.h.

◆ changeUpper() [4/6]

void changeUpper ( int  i,
const S *  newUpper 
)

Changes i 'th upper bound to newUpper.

Definition at line 1472 of file spxlpbase.h.

◆ changeUpper() [5/6]

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.

Definition at line 1479 of file spxlpbase.h.

◆ changeUpper() [6/6]

void changeUpper ( const VectorBase< Real > &  newUpper,
bool  scale 
)

◆ cId()

◆ clear()

virtual void clear ( )
virtual

◆ clearRowObjs()

virtual void clearRowObjs ( )
virtual

Clears row objective function values for all rows.

Reimplemented in SPxSolver.

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

◆ colVector_w()

◆ computeDualActivity() [1/4]

void computeDualActivity ( const VectorBase< Rational > &  dual,
VectorBase< Rational > &  activity,
const bool  unscaled 
) const

Definition at line 76 of file spxlpbase_rational.cpp.

◆ computeDualActivity() [2/4]

void computeDualActivity ( const VectorBase< Real > &  dual,
VectorBase< Real > &  activity,
const bool  unscaled 
) const

Definition at line 96 of file spxlpbase_real.cpp.

◆ computeDualActivity() [3/4]

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< Real >::addPrimalActivity(), and SPxLPBase< Real >::operator=().

◆ computeDualActivity() [4/4]

void computeDualActivity ( const VectorBase< Real > &  dual,
VectorBase< Real > &  activity,
const bool  unscaled 
) const

◆ computePrimalActivity() [1/4]

void computePrimalActivity ( const VectorBase< Rational > &  primal,
VectorBase< Rational > &  activity,
const bool  unscaled 
) const

Definition at line 37 of file spxlpbase_rational.cpp.

◆ computePrimalActivity() [2/4]

void computePrimalActivity ( const VectorBase< Real > &  primal,
VectorBase< Real > &  activity,
const bool  unscaled 
) const

Definition at line 47 of file spxlpbase_real.cpp.

◆ computePrimalActivity() [3/4]

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 SoPlex::_factorizeColumnRational(), SoPlex::_findViolatedRows(), SoPlex::_performOptIRStable(), SoPlex::_reconstructSolutionRational(), SoPlex::_untransformFeasibility(), SPxLPBase< Real >::changeObjOffset(), SoPlex::getDecompRowViolation(), SoPlex::getRowViolationRational(), SoPlex::getRowViolationReal(), and SPxLPBase< Real >::operator=().

◆ computePrimalActivity() [4/4]

void computePrimalActivity ( const VectorBase< Real > &  primal,
VectorBase< Real > &  activity,
const bool  unscaled 
) const

◆ doAddCol() [1/2]

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

Definition at line 2481 of file spxlpbase.h.

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

◆ doAddCols()

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

Definition at line 2601 of file spxlpbase.h.

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

◆ doAddRow() [1/2]

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

Definition at line 2251 of file spxlpbase.h.

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

◆ doAddRow() [2/2]

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

Definition at line 2308 of file spxlpbase.h.

◆ doAddRows()

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

Definition at line 2366 of file spxlpbase.h.

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

◆ doRemoveCol()

virtual void doRemoveCol ( int  j)
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 2106 of file spxlpbase.h.

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

◆ doRemoveCols()

virtual void doRemoveCols ( int  perm[])
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 2147 of file spxlpbase.h.

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

◆ doRemoveRow()

virtual void doRemoveRow ( int  j)
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 2045 of file spxlpbase.h.

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

◆ doRemoveRows()

virtual void doRemoveRows ( int  perm[])
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 2083 of file spxlpbase.h.

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

◆ getCol() [1/2]

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

Gets i 'th column.

Definition at line 339 of file spxlpbase.h.

Referenced by SPxLPBase< Real >::getCol(), SoPlex::getColRational(), and SPxLPBase< Real >::getCols().

◆ getCol() [2/2]

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

Gets column with identifier id.

Definition at line 348 of file spxlpbase.h.

◆ getCols()

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

Gets columns start, ..., end.

Definition at line 354 of file spxlpbase.h.

Referenced by SoPlex::getColsRational().

◆ getColVectorUnscaled() [1/6]

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

Gets column vector of column i.

Definition at line 302 of file spxlpbase_real.cpp.

◆ getColVectorUnscaled() [2/6]

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

Gets column vector of column with identifier id.

Definition at line 314 of file spxlpbase_real.cpp.

◆ getColVectorUnscaled() [3/6]

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

◆ getColVectorUnscaled() [4/6]

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

Gets column vector of column with identifier id.

◆ getColVectorUnscaled() [5/6]

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

◆ getColVectorUnscaled() [6/6]

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

◆ getLhsUnscaled() [1/3]

void getLhsUnscaled ( VectorBase< Real > &  vec) const

Returns unscaled left hand side vector.

Definition at line 272 of file spxlpbase_real.cpp.

◆ getLhsUnscaled() [2/3]

void getLhsUnscaled ( VectorBase< Real > &  vec) const

◆ getLhsUnscaled() [3/3]

void getLhsUnscaled ( VectorBase< Real > &  vec) const

◆ getLowerUnscaled() [1/3]

void getLowerUnscaled ( DVector vec) const

Returns unscaled lower bound vector.

Definition at line 412 of file spxlpbase_real.cpp.

◆ getLowerUnscaled() [2/3]

void getLowerUnscaled ( DVector vec) const

◆ getLowerUnscaled() [3/3]

void getLowerUnscaled ( DVector vec) const

◆ getObj()

void getObj ( VectorBase< R > &  pobj) const

◆ getObjUnscaled() [1/3]

void getObjUnscaled ( VectorBase< Real > &  pobj) const

Gets unscaled objective vector.

Definition at line 212 of file spxlpbase_real.cpp.

◆ getObjUnscaled() [2/3]

void getObjUnscaled ( VectorBase< Real > &  pobj) const

Gets unscaled objective vector.

Referenced by SPxLPBase< Real >::colVector(), SoPlex::getObjReal(), and SPxLPBase< Real >::operator=().

◆ getObjUnscaled() [3/3]

void getObjUnscaled ( VectorBase< Real > &  pobj) const

◆ getRhs()

void getRhs ( VectorBase< R > &  vec) const

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

Definition at line 240 of file spxlpbase.h.

◆ getRhsUnscaled() [1/3]

void getRhsUnscaled ( VectorBase< Real > &  vec) const

Gets unscaled right hand side vector.

Definition at line 242 of file spxlpbase_real.cpp.

◆ getRhsUnscaled() [2/3]

void getRhsUnscaled ( VectorBase< Real > &  vec) const

◆ getRhsUnscaled() [3/3]

void getRhsUnscaled ( VectorBase< Real > &  vec) const

◆ getRow() [1/2]

◆ getRow() [2/2]

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

Gets row with identifier id.

Definition at line 191 of file spxlpbase.h.

◆ getRowObj()

void getRowObj ( VectorBase< R > &  prowobj) const

Gets row objective function vector.

Definition at line 273 of file spxlpbase.h.

◆ getRows()

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

Gets rows start, ... end.

Definition at line 197 of file spxlpbase.h.

Referenced by SoPlex::getRowsRational().

◆ getRowVectorUnscaled() [1/3]

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

Gets unscaled row vector of row i.

Referenced by SoPlex::_checkScaling(), SPxLPBase< Real >::operator=(), and SPxLPBase< Real >::rowVector().

◆ getRowVectorUnscaled() [2/3]

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

Gets unscaled row vector of row i.

Definition at line 230 of file spxlpbase_real.cpp.

◆ getRowVectorUnscaled() [3/3]

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

◆ getUpperUnscaled() [1/3]

void getUpperUnscaled ( DVector vec) const

Returns unscaled upper bound vector.

Definition at line 382 of file spxlpbase_real.cpp.

◆ getUpperUnscaled() [2/3]

void getUpperUnscaled ( DVector vec) const

◆ getUpperUnscaled() [3/3]

void getUpperUnscaled ( DVector vec) const

◆ has() [1/3]

bool has ( const SPxRowId id) const

Returns the row number of the row with identifier id.

Definition at line 547 of file spxlpbase.h.

Referenced by SPxBasis::removedCol(), and SPxBasis::removedRow().

◆ has() [2/3]

bool has ( const SPxColId id) const

Returns the column number of the column with identifier id.

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

◆ isConsistent()

◆ isScaled()

bool isScaled ( ) const

Returns true if and only if the LP is scaled.

Definition at line 140 of file spxlpbase.h.

Referenced by SoPlex::_addColReal(), SoPlex::_addColsReal(), SoPlex::_addRowReal(), SoPlex::_addRowsReal(), SoPlex::_changeBoundsReal(), SoPlex::_changeColReal(), SoPlex::_changeElementReal(), SoPlex::_changeLhsReal(), SoPlex::_changeLowerReal(), SoPlex::_changeRangeReal(), SoPlex::_changeRhsReal(), SoPlex::_changeRowReal(), SoPlex::_changeUpperReal(), SoPlex::_checkBasisScaling(), SoPlex::_checkScaling(), SoPlex::_decompResolveWithoutPreprocessing(), SoPlex::_optimizeReal(), SoPlex::_preprocessAndSolveReal(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_storeSolutionReal(), SoPlex::changeObjReal(), SoPlex::coefReal(), SoPlex::getBasisInverseColReal(), SoPlex::getBasisInverseRowReal(), SoPlex::getBasisInverseTimesVecReal(), SPxScaler::getCoefUnscaled(), SPxScaler::getColUnscaled(), SPxScaler::getLhsUnscaled(), SPxScaler::getLowerUnscaled(), SPxScaler::getMaxObjUnscaled(), SPxScaler::getRhsUnscaled(), SPxScaler::getRowUnscaled(), SoPlex::getRowVectorReal(), SPxScaler::getUpperUnscaled(), SPxScaler::lhsUnscaled(), SPxScaler::lowerUnscaled(), SPxScaler::maxObjUnscaled(), SoPlex::multBasis(), SoPlex::multBasisTranspose(), SPxScaler::rhsUnscaled(), SPxScaler::scaleElement(), SPxScaler::scaleLhs(), SPxScaler::scaleLower(), SPxScaler::scaleObj(), SPxScaler::scaleRhs(), SPxScaler::scaleUpper(), SPxScaler::unscale(), SPxScaler::unscaleDual(), SPxScaler::unscaleDualray(), SPxScaler::unscalePrimal(), SPxScaler::unscalePrimalray(), SPxScaler::unscaleRedCost(), SPxScaler::unscaleSlacks(), SPxScaler::upperUnscaled(), and SoPlex::writeFileReal().

◆ lhs() [1/3]

const VectorBase<R>& lhs ( ) const

Returns left hand side vector.

Definition at line 255 of file spxlpbase.h.

Referenced by SoPlex::_checkScaling(), SoPlex::_completeRangeTypesRational(), SoPlex::_deleteAndUpdateRowsComplementaryProblem(), SoPlex::_findViolatedRows(), SoPlex::_formDecompComplementaryProblem(), SoPlex::_identifyComplementaryDualFixedPrimalVars(), SoPlex::_recomputeRangeTypesRational(), SoPlex::_recomputeRangeTypesReal(), SoPlex::_restoreLPReal(), SoPlex::_setComplementaryDualOriginalObjective(), SoPlex::_storeLPReal(), SoPlex::_transformEquality(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformEquality(), SoPlex::_untransformFeasibility(), SoPlex::_updateComplementaryDualFixedPrimalVars(), SoPlex::_updateComplementaryDualSlackColCoeff(), SoPlex::_updateDecompComplementaryDualProblem(), SoPlex::_updateDecompComplementaryPrimalProblem(), SPxMainSM::aggregateVars(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SPxSolver::calculateProblemRanges(), SPxSolver::changeLhs(), SPxLPBase< Real >::changeLhs(), SoPlex::changeLhsRational(), SoPlex::changeLhsReal(), SPxSolver::changeRange(), SoPlex::changeRangeRational(), SoPlex::changeRhsRational(), SoPlex::changeRhsReal(), SPxSolver::changeRhsStatus(), SPxMainSM::checkSolution(), SPxSolver::computeEnterCoPrhs4Row(), SPxSolver::computeFrhs(), SPxLPBase< Real >::doAddRow(), SPxLPBase< Real >::doAddRows(), SPxBasis::dualRowStatus(), SPxMainSM::duplicateRows(), SPxMainSM::fixColumn(), SPxBoundFlippingRT::flipAndUpdate(), SPxMainSM::FreeZeroObjVariablePS::FreeZeroObjVariablePS(), SoPlex::getDecompRowViolation(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SoPlex::getOriginalProblemBasisRowStatus(), SoPlex::getOriginalProblemStatistics(), SoPlex::getOrigVarFixedDirection(), SPxLPBase< Real >::getRow(), SPxLPBase< Real >::getRows(), SPxSolver::getSlacks(), SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), SPxSolver::isBasisValid(), SoPlex::lhsRational(), SoPlex::lhsRealInternal(), soplex::LPFwriteRows(), SPxMainSM::multiaggregation(), SPxSolver::nonbasicValue(), SPxLPBase< Real >::printProblemStatistics(), SPxSolver::qualConstraintViolation(), SPxMainSM::removeEmpty(), SPxMainSM::removeRowSingleton(), SPxBoundFlippingRT::selectEnter(), SPxBoundFlippingRT::selectLeave(), SPxSolver::setLeaveBound4Row(), SPxSolver::setPrimalBounds(), SPxWeightST::setPrimalStatus(), SPxSumST::setupWeights(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SPxSolver::solve(), SPxSolver::test(), SPxMainSM::trivialHeuristic(), SPxScaler::unscale(), SPxSolver::unShift(), and SPxSolver::varStatusToBasisStatusRow().

◆ lhs() [2/3]

const R& lhs ( int  i) const

Returns left hand side of row number i.

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

◆ lhs_w()

R& lhs_w ( int  i)
protected

Returns left hand side of row i.

Definition at line 1997 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling(), and SPxScaler::unscale().

◆ lhsUnscaled() [1/6]

Real lhsUnscaled ( int  i) const

Returns unscaled left hand side of row number i.

Definition at line 282 of file spxlpbase_real.cpp.

◆ lhsUnscaled() [2/6]

Real lhsUnscaled ( const SPxRowId id) const

Returns left hand side of row with identifier id.

Definition at line 294 of file spxlpbase_real.cpp.

◆ lhsUnscaled() [3/6]

R lhsUnscaled ( int  i) const

◆ lhsUnscaled() [4/6]

R lhsUnscaled ( const SPxRowId id) const

Returns left hand side of row with identifier id.

◆ lhsUnscaled() [5/6]

Real lhsUnscaled ( int  i) const

◆ lhsUnscaled() [6/6]

Real lhsUnscaled ( const SPxRowId id) const

◆ lower() [1/3]

const VectorBase<R>& lower ( ) const

Returns (internal and possibly scaled) lower bound vector.

Definition at line 488 of file spxlpbase.h.

Referenced by SoPlex::_checkScaling(), SoPlex::_completeRangeTypesRational(), SoPlex::_getCompatibleBoundCons(), SoPlex::_recomputeRangeTypesRational(), SoPlex::_recomputeRangeTypesReal(), SoPlex::_removeComplementaryDualFixedPrimalVars(), SoPlex::_setComplementaryDualOriginalObjective(), SoPlex::_storeLPReal(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformFeasibility(), SoPlex::_updateComplementaryDualFixedPrimalVars(), SoPlex::_updateComplementaryPrimalFixedPrimalVars(), SPxMainSM::aggregateVars(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SPxSolver::calculateProblemRanges(), SoPlex::changeBoundsRational(), SPxSolver::changeLower(), SPxLPBase< Real >::changeLower(), SoPlex::changeLowerRational(), SoPlex::changeLowerReal(), SoPlex::changeUpperRational(), SoPlex::changeUpperReal(), SPxSolver::changeUpperStatus(), SPxMainSM::computeMinMaxResidualActivity(), SPxLPBase< Real >::doAddCol(), SPxLPBase< Real >::doAddCols(), SPxMainSM::duplicateCols(), SPxMainSM::FixBoundsPS::FixBoundsPS(), SPxMainSM::fixColumn(), SPxBoundFlippingRT::flipAndUpdate(), SPxWeightST::generate(), SPxLPBase< Real >::getCol(), SPxLPBase< Real >::getCols(), SoPlex::getDecompBoundViolation(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals2(), SoPlex::getOriginalProblemStatistics(), SPxMainSM::handleExtremes(), SPxSolver::isBasisValid(), SoPlex::lowerRational(), SoPlex::lowerRealInternal(), soplex::LPFwriteBounds(), SPxMainSM::multiaggregation(), SPxSolver::nonbasicValue(), soplex::primalColStatus(), SPxLPBase< Real >::printProblemStatistics(), SPxMainSM::propagatePseudoobj(), SPxSolver::qualBoundViolation(), SPxMainSM::removeEmpty(), SPxMainSM::removeRowSingleton(), SPxBoundFlippingRT::selectEnter(), SPxBoundFlippingRT::selectLeave(), SPxSumST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SPxSolver::solve(), SPxMainSM::trivialHeuristic(), SPxScaler::unscale(), SPxSolver::unShift(), SPxSolver::varStatusToBasisStatusCol(), and SPxBasis::writeBasis().

◆ lower() [2/3]

const R& lower ( int  i) const

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

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

◆ lower_w()

R& lower_w ( int  i)
protected

Returns lower bound of column i.

Definition at line 2021 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling(), and SPxScaler::unscale().

◆ lowerUnscaled() [1/6]

Real lowerUnscaled ( int  i) const

Returns unscaled lower bound of column i.

Definition at line 422 of file spxlpbase_real.cpp.

◆ lowerUnscaled() [2/6]

Real lowerUnscaled ( const SPxColId id) const

Returns unscaled lower bound of column with identifier id.

Definition at line 434 of file spxlpbase_real.cpp.

◆ lowerUnscaled() [3/6]

R lowerUnscaled ( int  i) const

◆ lowerUnscaled() [4/6]

R lowerUnscaled ( const SPxColId id) const

Returns unscaled lower bound of column with identifier id.

◆ lowerUnscaled() [5/6]

Real lowerUnscaled ( int  i) const

◆ lowerUnscaled() [6/6]

Real lowerUnscaled ( const SPxColId id) const

◆ lpcolset()

const LPColSetBase<R>* lpcolset ( ) const
protected

Returns the LP as an LPColSetBase.

Definition at line 2039 of file spxlpbase.h.

◆ lprowset()

const LPRowSetBase<R>* lprowset ( ) const
protected

Returns the LP as an LPRowSetBase.

Definition at line 2033 of file spxlpbase.h.

◆ maxAbsNzo() [1/4]

Rational maxAbsNzo ( bool  ) const

Definition at line 115 of file spxlpbase_rational.cpp.

◆ maxAbsNzo() [2/4]

Real maxAbsNzo ( bool  unscaled) const

Definition at line 145 of file spxlpbase_real.cpp.

◆ maxAbsNzo() [3/4]

virtual R maxAbsNzo ( bool  unscaled = true) const
virtual

◆ maxAbsNzo() [4/4]

Real maxAbsNzo ( bool  unscaled) const

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

Referenced by SoPlex::_checkOriginalProblemOptimality(), SoPlex::_computeReducedProbObjCoeff(), SoPlex::_performOptIRStable(), SoPlex::_setComplementaryPrimalOriginalObjective(), SoPlex::_solveDecompositionDualSimplex(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_updateDecompComplementaryDualProblem(), SoPlex::areLPsInSync(), SPxSolver::changeLowerStatus(), SPxLPBase< Real >::changeMaxObj(), SPxSolver::changeUpperStatus(), SPxWeightPR::computeCP(), SPxSolver::computeEnterCoPrhs4Col(), SPxSolver::computeFrhs(), SPxSolver::computeLeaveCoPrhs4Col(), SPxWeightPR::computeRP(), SPxMainSM::duplicateCols(), SPxWeightST::generate(), SPxSolver::getDegeneracyLevel(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getRedCost(), SPxWeightPR::load(), soplex::LPFwriteObjective(), SPxLPBase< Real >::maxObj(), SoPlex::maxObjRational(), SoPlex::maxObjRealInternal(), SPxMainSM::multiaggregation(), SPxSolver::nonbasicValue(), SPxLPBase< Real >::obj(), SPxSolver::performSolutionPolishing(), soplex::primalColStatus(), SPxMainSM::propagatePseudoobj(), SPxMainSM::removeEmpty(), SPxSolver::setDualColBounds(), SPxSolver::setRedCost(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxSolver::test(), SPxMainSM::trivialHeuristic(), SPxSolver::ungetEnterVal(), SPxSolver::unShift(), and SPxSolver::varStatusToBasisStatusCol().

◆ maxObj() [2/3]

const R& maxObj ( int  i) const

Returns objective value of column i for maximization problem.

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

◆ maxObj_w()

R& maxObj_w ( int  i)
protected

Returns objective value of column i for maximization problem.

Definition at line 2009 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling(), and SPxScaler::unscale().

◆ maxObjUnscaled() [1/9]

void maxObjUnscaled ( VectorBase< Real > &  vec) const

Returns unscaled objective vector for maximization problem.

Definition at line 352 of file spxlpbase_real.cpp.

◆ maxObjUnscaled() [2/9]

Real maxObjUnscaled ( int  i) const

Returns unscaled objective value of column i for maximization problem.

Definition at line 362 of file spxlpbase_real.cpp.

◆ maxObjUnscaled() [3/9]

Real maxObjUnscaled ( const SPxColId id) const

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

Definition at line 374 of file spxlpbase_real.cpp.

◆ maxObjUnscaled() [4/9]

void maxObjUnscaled ( VectorBase< Real > &  vec) const

Returns unscaled objective vector for maximization problem.

Referenced by SPxLPBase< Real >::maxObj(), SoPlex::maxObjReal(), and SPxLPBase< Real >::operator=().

◆ maxObjUnscaled() [5/9]

R maxObjUnscaled ( int  i) const

Returns unscaled objective value of column i for maximization problem.

◆ maxObjUnscaled() [6/9]

R maxObjUnscaled ( const SPxColId id) const

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

◆ maxObjUnscaled() [7/9]

void maxObjUnscaled ( VectorBase< Real > &  vec) const

◆ maxObjUnscaled() [8/9]

Real maxObjUnscaled ( int  i) const

◆ maxObjUnscaled() [9/9]

Real maxObjUnscaled ( const SPxColId id) const

◆ maxRowObj() [1/3]

◆ maxRowObj() [2/3]

const R& maxRowObj ( int  i) const

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

◆ maxRowObj_w()

R& maxRowObj_w ( int  i)
protected

Returns objective function value of row i.

Definition at line 2003 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling(), SPxLPBase< Real >::doAddRow(), SPxLPBase< Real >::doAddRows(), and SPxScaler::unscale().

◆ minAbsNzo() [1/4]

Rational minAbsNzo ( bool  ) const

Definition at line 133 of file spxlpbase_rational.cpp.

◆ minAbsNzo() [2/4]

◆ minAbsNzo() [3/4]

Real minAbsNzo ( bool  unscaled) const

Definition at line 178 of file spxlpbase_real.cpp.

◆ minAbsNzo() [4/4]

Real minAbsNzo ( bool  unscaled) const

◆ nCols()

int nCols ( ) const

Returns number of columns in LP.

Definition at line 158 of file spxlpbase.h.

Referenced by SoPlex::_checkOriginalProblemOptimality(), SoPlex::_checkScaling(), SoPlex::_decompResolveWithoutPreprocessing(), SoPlex::_decompSimplifyAndSolve(), SoPlex::_evaluateSolutionDecomp(), SoPlex::_findViolatedRows(), SoPlex::_formDecompComplementaryProblem(), SoPlex::_formDecompReducedProblem(), SoPlex::_getCompatibleColumns(), SoPlex::_getZeroDualMultiplierIndices(), SoPlex::_identifyComplementaryDualFixedPrimalVars(), SoPlex::_identifyComplementaryPrimalFixedPrimalVars(), SoPlex::_preprocessAndSolveReal(), SoPlex::_removeComplementaryDualFixedPrimalVars(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_setComplementaryDualOriginalObjective(), SoPlex::_setComplementaryPrimalOriginalObjective(), SoPlex::_solveDecompositionDualSimplex(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_storeLPReal(), SoPlex::_storeSolutionReal(), SoPlex::_updateComplementaryDualFixedPrimalVars(), SoPlex::_updateDecompComplementaryDualProblem(), SoPlex::_updateDecompComplementaryPrimalProblem(), SoPlex::_updateDecompReducedProblem(), SoPlex::_updateDecompReducedProblemViol(), SoPlex::_writeOriginalProblemBasis(), SPxLPBase< Real >::addCol(), SPxLPBase< Real >::addCols(), SPxLPBase< Real >::addDualActivity(), SPxBasis::addedCols(), SPxLPBase< Real >::addPrimalActivity(), SPxLPBase< Real >::addRow(), SPxLPBase< Real >::addRows(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SPxSolver::calculateProblemRanges(), SoPlex::checkBasisDualFeasibility(), SPxSolver::computeFrhsXtra(), SPxBasis::Desc::Desc(), SPxLPBase< Real >::doAddCol(), SPxLPBase< Real >::doAddCols(), SPxLPBase< Real >::doAddRow(), SPxLPBase< Real >::doAddRows(), SPxLPBase< Real >::doRemoveCol(), SPxLPBase< Real >::doRemoveRows(), SPxBasis::dump(), SPxMainSM::duplicateCols(), SPxMainSM::duplicateRows(), SPxWeightST::generate(), SPxSolver::getBasis(), SPxSolver::getBasisColStatus(), SPxScaler::getCoefUnscaled(), SPxScaler::getColMaxAbsUnscaled(), SPxScaler::getColMinAbsUnscaled(), soplex::getColName(), SPxScaler::getColUnscaled(), SoPlex::getDecompBoundViolation(), SoPlex::getDecompRowViolation(), SPxSolver::getDegeneracyLevel(), SPxSolver::getDual(), SoPlex::getOriginalProblemBasisColStatus(), SoPlex::getOriginalProblemStatistics(), SPxSolver::getPrimal(), SPxSolver::getRedCost(), SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), soplex::initPrefs(), SPxSolver::isBasisValid(), SPxWeightPR::isConsistent(), SPxBasis::isConsistent(), SPxLPBase< Real >::isConsistent(), SPxBasis::isDescValid(), SPxWeightPR::load(), SPxBasis::loadDesc(), SPxScaler::lowerUnscaled(), soplex::LPFwriteBounds(), soplex::LPFwriteGenerals(), soplex::LPFwriteSVector(), SPxScaler::maxColRatio(), SPxScaler::maxObjUnscaled(), soplex::maxPrescaledRatio(), SPxMainSM::multiaggregation(), SPxLPBase< Real >::nNzos(), SPxSolver::nonbasicValue(), SoPlex::numColsRational(), SoPlex::numColsReal(), SPxSolver::performSolutionPolishing(), SoPlex::printDecompDisplayLine(), SPxLPBase< Real >::printProblemStatistics(), SPxMainSM::propagatePseudoobj(), SPxSolver::qualBoundViolation(), SPxSolver::qualConstraintViolation(), SPxSolver::qualSlackViolation(), SPxBasis::readBasis(), SPxBasis::reDim(), SPxMainSM::removeCol(), SPxLPBase< Real >::removeColRange(), SoPlex::removeColRational(), SoPlex::removeColReal(), SPxLPBase< Real >::removeCols(), SoPlex::removeColsRational(), SoPlex::removeColsReal(), SPxBasis::removedCol(), SPxMainSM::removeEmpty(), SPxBasis::restoreInitialBasis(), SPxLeastSqSC::scale(), SPxGeometSC::scale(), SPxScaler::scaleElement(), SPxScaler::scaleLower(), SPxScaler::scaleObj(), SPxScaler::scaleUpper(), SPxFastRT::selectEnter(), SPxFastRT::selectLeave(), SoPlex::setBasis(), SPxSolver::setBasis(), SPxSolver::setDual(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SoPlex::setIntegralityInformation(), SPxSolver::setIntegralityInformation(), SPxScaler::setup(), SPxSumST::setupWeights(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxSolver::solve(), SPxLPBase< Real >::subDualActivity(), SPxSolver::terminate(), SPxMainSM::trivialHeuristic(), SPxScaler::unscale(), SPxSolver::unShift(), SPxScaler::upperUnscaled(), and SPxBasis::writeBasis().

◆ nNzos()

◆ nRows()

int nRows ( ) const

Returns number of rows in LP.

Definition at line 152 of file spxlpbase.h.

Referenced by SoPlex::_checkBasisScaling(), SoPlex::_checkScaling(), SoPlex::_decompResolveWithoutPreprocessing(), SoPlex::_decompSimplifyAndSolve(), SoPlex::_evaluateSolutionDecomp(), SoPlex::_findViolatedRows(), SoPlex::_formDecompComplementaryProblem(), SoPlex::_formDecompReducedProblem(), SoPlex::_getCompatibleColumns(), SoPlex::_preprocessAndSolveReal(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_restoreLPReal(), SoPlex::_solveDecompositionDualSimplex(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_storeSolutionReal(), SoPlex::_updateDecompComplementaryDualProblem(), SoPlex::_updateDecompComplementaryPrimalProblem(), SoPlex::_writeOriginalProblemBasis(), SPxLPBase< Real >::addCol(), SPxLPBase< Real >::addCols(), SPxLPBase< Real >::addDualActivity(), SPxBasis::addedRows(), SPxLPBase< Real >::addPrimalActivity(), SPxLPBase< Real >::addRow(), SPxLPBase< Real >::addRows(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SPxSolver::calculateProblemRanges(), SPxSolver::changeLhs(), SPxSolver::changeRange(), SPxSolver::changeRhs(), SPxMainSM::checkSolution(), SPxSolver::computeFrhs(), SPxBasis::Desc::Desc(), SPxLPBase< Real >::doAddCol(), SPxLPBase< Real >::doAddCols(), SPxLPBase< Real >::doAddRow(), SPxLPBase< Real >::doAddRows(), SPxLPBase< Real >::doRemoveCols(), SPxLPBase< Real >::doRemoveRow(), SPxBasis::dump(), SPxMainSM::duplicateCols(), SPxMainSM::duplicateRows(), SPxWeightST::generate(), SPxSolver::getBasis(), SPxSolver::getBasisRowStatus(), SPxScaler::getCoefUnscaled(), SoPlex::getDecompRowViolation(), SPxSolver::getDegeneracyLevel(), SPxSolver::getDual(), SoPlex::getOriginalProblemBasisRowStatus(), SoPlex::getOriginalProblemStatistics(), SPxScaler::getRowMaxAbsUnscaled(), SPxScaler::getRowMinAbsUnscaled(), SPxScaler::getRowUnscaled(), SPxSolver::getSlacks(), SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), soplex::initPrefs(), SPxSolver::isBasisValid(), SPxWeightPR::isConsistent(), SPxBasis::isConsistent(), SPxLPBase< Real >::isConsistent(), SPxBasis::isDescValid(), SPxScaler::lhsUnscaled(), SPxWeightPR::load(), SPxBasis::loadDesc(), soplex::LPFgetRowName(), soplex::LPFwriteRows(), soplex::maxPrescaledRatio(), SPxScaler::maxRowRatio(), soplex::MPSgetRowName(), SPxMainSM::multiaggregation(), SPxSolver::nonbasicValue(), SoPlex::numRowsRational(), SoPlex::numRowsReal(), SPxSolver::performSolutionPolishing(), SPxLPBase< Real >::printProblemStatistics(), SPxSolver::qualConstraintViolation(), SPxSolver::qualSlackViolation(), SPxBasis::readBasis(), SPxBasis::reDim(), SPxBasis::removedRow(), SPxMainSM::removeEmpty(), SPxMainSM::removeRow(), SPxLPBase< Real >::removeRowRange(), SoPlex::removeRowRational(), SoPlex::removeRowReal(), SPxLPBase< Real >::removeRows(), SoPlex::removeRowsRational(), SoPlex::removeRowsReal(), SPxBasis::restoreInitialBasis(), SPxScaler::rhsUnscaled(), SPxLeastSqSC::scale(), SPxGeometSC::scale(), SPxScaler::scaleElement(), SPxScaler::scaleLhs(), SPxScaler::scaleRhs(), SoPlex::setBasis(), SPxSolver::setBasis(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SPxScaler::setup(), SPxSumST::setupWeights(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SPxSolver::solve(), SPxLPBase< Real >::subDualActivity(), SPxSolver::terminate(), SPxScaler::unscale(), SPxSolver::unShift(), and SPxBasis::writeBasis().

◆ number() [1/3]

int number ( const SPxRowId id) const

Returns the row number of the row with identifier id.

Definition at line 527 of file spxlpbase.h.

Referenced by SoPlex::_findViolatedRows(), SoPlex::_formDecompComplementaryProblem(), SoPlex::_getCompatibleColumns(), SoPlex::_getZeroDualMultiplierIndices(), SoPlex::_identifyComplementaryDualFixedPrimalVars(), SoPlex::_identifyComplementaryPrimalFixedPrimalVars(), SoPlex::_removeComplementaryDualFixedPrimalVars(), SoPlex::_setComplementaryDualOriginalObjective(), SoPlex::_setComplementaryPrimalOriginalObjective(), SoPlex::_updateComplementaryDualFixedPrimalVars(), SoPlex::_updateComplementaryDualSlackColCoeff(), SoPlex::_updateComplementaryPrimalFixedPrimalVars(), SoPlex::_updateDecompComplementaryDualProblem(), SoPlex::_updateDecompComplementaryPrimalProblem(), SoPlex::_updateDecompReducedProblem(), SPxSolver::changeBounds(), SPxLPBase< Real >::changeBounds(), SPxLPBase< Real >::changeCol(), SPxLPBase< Real >::changeElement(), SPxLPBase< Real >::changeLhs(), SPxLPBase< Real >::changeLower(), SPxLPBase< Real >::changeMaxObj(), SPxLPBase< Real >::changeObj(), SPxSolver::changeRange(), SPxLPBase< Real >::changeRange(), SPxLPBase< Real >::changeRhs(), SPxLPBase< Real >::changeRow(), SPxLPBase< Real >::changeRowObj(), SPxLPBase< Real >::changeUpper(), SoPlex::checkBasisDualFeasibility(), SPxSolver::computeDualfarkas4Row(), SPxSolver::computeEnterCoPrhs(), SPxSolver::computeEnterCoPrhs4Col(), SPxSolver::computeEnterCoPrhs4Row(), SPxSolver::computeLeaveCoPrhs(), SPxSolver::computeLeaveCoPrhs4Col(), SPxSolver::computeLeaveCoPrhs4Row(), SPxWeightPR::computeLeavePenalty(), SPxSolver::computePrimalray4Col(), SPxBasis::dump(), SPxSolver::enter(), SPxBoundFlippingRT::flipAndUpdate(), SPxWeightST::generate(), SoPlex::getBasisInd(), SoPlex::getBasisInverseColReal(), SoPlex::getBasisInverseRowReal(), SoPlex::getBasisInverseTimesVecReal(), SPxLPBase< Real >::getCol(), SoPlex::getCompSlackVarCoeff(), SPxSolver::getDual(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SoPlex::getOriginalProblemBasisColStatus(), SoPlex::getOriginalProblemBasisRowStatus(), SoPlex::getOrigVarFixedDirection(), SPxSolver::getPrimal(), SPxSolver::getRedCost(), SPxLPBase< Real >::getRow(), SPxSolver::getSlacks(), SPxLPBase< Real >::maxObj(), SoPlex::multBasis(), SoPlex::multBasisTranspose(), SPxLPBase< Real >::obj(), SPxSolver::performSolutionPolishing(), SPxSolver::rejectEnter(), SPxLPBase< Real >::removeCol(), SPxLPBase< Real >::removeCols(), SPxLPBase< Real >::removeRow(), SPxLPBase< Real >::removeRows(), SPxParMultPR::selectEnter(), SPxFastRT::selectEnter(), SPxFastRT::selectLeave(), SPxBoundFlippingRT::selectLeave(), SPxSolver::setDual(), soplex::setDualStatus(), SPxSolver::setEnterBound4Col(), SPxSolver::setEnterBound4Row(), SPxSolver::setEnterBounds(), SPxSolver::setLeaveBound4Col(), SPxSolver::setLeaveBound4Row(), SPxSolver::setLeaveBounds(), SPxSolver::setPrimal(), SPxWeightST::setPrimalStatus(), SPxSolver::setRedCost(), SPxSolver::setSlacks(), SPxSolver::solve(), SPxSolver::ungetEnterVal(), and SPxSolver::unShift().

◆ number() [2/3]

int number ( const SPxColId id) const

Returns the column number of the column with identifier id.

Definition at line 533 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 539 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 418 of file spxlpbase.h.

◆ objOffset()

const R& objOffset ( ) const

Returns the objective function value offset.

Definition at line 521 of file spxlpbase.h.

Referenced by SoPlex::printDecompDisplayLine(), and SPxSolver::value().

◆ objUnscaled() [1/6]

Real objUnscaled ( int  i) const

Returns unscaled objective value of column i.

Definition at line 322 of file spxlpbase_real.cpp.

◆ objUnscaled() [2/6]

Real objUnscaled ( const SPxColId id) const

Returns unscaled objective value of column with identifier id.

Definition at line 344 of file spxlpbase_real.cpp.

◆ objUnscaled() [3/6]

R objUnscaled ( int  i) const

Returns unscaled objective value of column i.

Referenced by SoPlex::_checkScaling(), SPxLPBase< Real >::obj(), SoPlex::objReal(), and SPxLPBase< Real >::operator=().

◆ objUnscaled() [4/6]

R objUnscaled ( const SPxColId id) const

Returns unscaled objective value of column with identifier id.

◆ objUnscaled() [5/6]

Real objUnscaled ( int  i) const

◆ objUnscaled() [6/6]

Real objUnscaled ( const SPxColId id) const

◆ operator=() [1/2]

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

Assignment operator.

Definition at line 2760 of file spxlpbase.h.

◆ operator=() [2/2]

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

Assignment operator.

Definition at line 2780 of file spxlpbase.h.

◆ printProblemStatistics()

void printProblemStatistics ( std::ostream &  os)

prints problem statistics

Definition at line 1235 of file spxlpbase.h.

Referenced by SoPlex::printStatistics().

◆ 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 SPxSolver.

Definition at line 1171 of file spxlpbase.h.

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

Referenced by SoPlex::_readFileRational(), and SoPlex::_readFileReal().

◆ readLPF() [1/4]

bool readLPF ( std::istream &  p_input,
NameSet p_rnames,
NameSet p_cnames,
DIdxSet p_intvars 
)

Read LP in "CPLEX LP File Format".

The specification is taken from the ILOG CPLEX 7.0 Reference Manual, Appendix E, Page 527.

This routine should read (most?) valid LP format files. What it will not do, is find all cases where a file is ill formed. If this happens it may complain and read nothing or read "something".

Problem: A line ending in '+' or '-' followed by a line starting with a number, will be regarded as an error.

The reader will accept the keyword INT[egers] as a synonym for GEN[erals] which is an undocumented feature in CPLEX.

A difference to the CPLEX reader, is that no name for the objective row is required.

The manual says the maximum allowed line length is 255 characters, but CPLEX does not complain if the lines are longer.

Returns
true if the file was read correctly

< row names.

< column names.

< the set of columns read.

< the set of rows read.

< reusable empty column.

< last assembled row.

< last assembled vector (from row).

Parameters
p_inputinput stream.
p_rnamesrow names.
p_cnamescolumn names.
p_intvarsinteger variables.

Definition at line 542 of file spxlpbase_rational.cpp.

◆ readLPF() [2/4]

bool readLPF ( std::istream &  p_input,
NameSet p_rnames,
NameSet p_cnames,
DIdxSet p_intvars 
)

Read LP in "CPLEX LP File Format".

The specification is taken from the ILOG CPLEX 7.0 Reference Manual, Appendix E, Page 527.

This routine should read (most?) valid LP format files. What it will not do, is find all cases where a file is ill formed. If this happens it may complain and read nothing or read "something".

Problem: A line ending in '+' or '-' followed by a line starting with a number, will be regarded as an error.

The reader will accept the keyword INT[egers] as a synonym for GEN[erals] which is an undocumented feature in CPLEX.

A difference to the CPLEX reader, is that no name for the objective row is required.

The manual says the maximum allowed line length is 255 characters, but CPLEX does not complain if the lines are longer.

Returns
true if the file was read correctly

< row names.

< column names.

< the set of columns read.

< the set of rows read.

< reusable empty column.

< last assembled row.

< last assembled vector (from row).

Parameters
p_inputinput stream.
p_rnamesrow names.
p_cnamescolumn names.
p_intvarsinteger variables.

Definition at line 937 of file spxlpbase_real.cpp.

◆ readLPF() [3/4]

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< Real >::clear(), SPxLPBase< Real >::operator=(), and SPxLPBase< Real >::read().

◆ readLPF() [4/4]

bool readLPF ( std::istream &  p_input,
NameSet p_rnames,
NameSet p_cnames,
DIdxSet p_intvars 
)

◆ readMPS() [1/4]

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< Real >::clear(), SPxLPBase< Real >::operator=(), and SPxLPBase< Real >::read().

◆ readMPS() [2/4]

bool readMPS ( std::istream &  p_input,
NameSet p_rnames,
NameSet p_cnames,
DIdxSet p_intvars 
)
Parameters
p_inputinput stream.
p_rnamesrow names.
p_cnamescolumn names.
p_intvarsinteger variables.

Definition at line 1746 of file spxlpbase_rational.cpp.

◆ readMPS() [3/4]

bool readMPS ( std::istream &  p_input,
NameSet p_rnames,
NameSet p_cnames,
DIdxSet p_intvars 
)
Parameters
p_inputinput stream.
p_rnamesrow names.
p_cnamescolumn names.
p_intvarsinteger variables.

Definition at line 2118 of file spxlpbase_real.cpp.

◆ readMPS() [4/4]

bool readMPS ( std::istream &  p_input,
NameSet p_rnames,
NameSet p_cnames,
DIdxSet p_intvars 
)

◆ removeCol() [1/2]

◆ removeCol() [2/2]

virtual void removeCol ( SPxColId  id)
virtual

Removes column with identifier id.

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

Referenced by SoPlex::_project(), and SoPlex::_untransformEquality().

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

Referenced by SoPlex::_removeColsReal(), SoPlex::_removeComplementaryDualFixedPrimalVars(), SoPlex::_updateDecompComplementaryDualProblem(), SPxMainSM::duplicateCols(), SPxLPBase< Real >::removeColRange(), SPxLPBase< Real >::removeCols(), SoPlex::removeColsRational(), and SoPlex::removeColsReal().

◆ removeCols() [2/3]

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

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

◆ removeRow() [1/2]

◆ removeRow() [2/2]

virtual void removeRow ( SPxRowId  id)
virtual

Removes row with identifier id.

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

Referenced by SoPlex::_project().

◆ 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 LPRow has been moved to due to this removal. Note that perm must point to an array of at least nRows() ints.

Definition at line 952 of file spxlpbase.h.

Referenced by SoPlex::_formDecompReducedProblem(), SoPlex::_removeRowsReal(), SoPlex::_updateDecompComplementaryPrimalProblem(), SPxMainSM::duplicateRows(), SPxLPBase< Real >::removeRowRange(), SPxLPBase< Real >::removeRows(), SoPlex::removeRowsRational(), and SoPlex::removeRowsReal().

◆ removeRows() [2/3]

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

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

◆ rhs() [1/3]

const VectorBase<R>& rhs ( ) const

Returns right hand side vector.

Definition at line 221 of file spxlpbase.h.

Referenced by SoPlex::_checkScaling(), SoPlex::_completeRangeTypesRational(), SoPlex::_deleteAndUpdateRowsComplementaryProblem(), SoPlex::_findViolatedRows(), SoPlex::_formDecompComplementaryProblem(), SoPlex::_identifyComplementaryDualFixedPrimalVars(), SoPlex::_recomputeRangeTypesRational(), SoPlex::_recomputeRangeTypesReal(), SoPlex::_restoreLPReal(), SoPlex::_setComplementaryDualOriginalObjective(), SoPlex::_storeLPReal(), SoPlex::_transformEquality(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformEquality(), SoPlex::_untransformFeasibility(), SoPlex::_updateComplementaryDualFixedPrimalVars(), SoPlex::_updateComplementaryDualSlackColCoeff(), SoPlex::_updateDecompComplementaryDualProblem(), SoPlex::_updateDecompComplementaryPrimalProblem(), SPxMainSM::aggregateVars(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SPxSolver::calculateProblemRanges(), SoPlex::changeLhsRational(), SoPlex::changeLhsReal(), SPxSolver::changeLhsStatus(), SPxSolver::changeRange(), SoPlex::changeRangeRational(), SPxSolver::changeRhs(), SPxLPBase< Real >::changeRhs(), SoPlex::changeRhsRational(), SoPlex::changeRhsReal(), SPxMainSM::checkSolution(), SPxSolver::computeEnterCoPrhs4Row(), SPxSolver::computeFrhs(), SPxLPBase< Real >::doAddRow(), SPxLPBase< Real >::doAddRows(), SPxBasis::dualRowStatus(), SPxMainSM::duplicateRows(), SPxMainSM::fixColumn(), SPxBoundFlippingRT::flipAndUpdate(), SPxMainSM::FreeZeroObjVariablePS::FreeZeroObjVariablePS(), SoPlex::getDecompRowViolation(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SoPlex::getOriginalProblemBasisRowStatus(), SoPlex::getOriginalProblemStatistics(), SoPlex::getOrigVarFixedDirection(), SPxLPBase< Real >::getRow(), SPxLPBase< Real >::getRows(), SPxSolver::getSlacks(), SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), SPxSolver::isBasisValid(), soplex::LPFwriteRows(), SPxMainSM::multiaggregation(), SPxSolver::nonbasicValue(), SPxLPBase< Real >::printProblemStatistics(), SPxSolver::qualConstraintViolation(), SPxMainSM::removeEmpty(), SPxMainSM::removeRowSingleton(), SoPlex::rhsRational(), SoPlex::rhsRealInternal(), SPxBoundFlippingRT::selectEnter(), SPxBoundFlippingRT::selectLeave(), SPxSolver::setLeaveBound4Row(), SPxSolver::setPrimalBounds(), SPxWeightST::setPrimalStatus(), SPxSumST::setupWeights(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SPxSolver::solve(), SPxSolver::test(), SPxMainSM::trivialHeuristic(), SPxScaler::unscale(), SPxSolver::unShift(), and SPxSolver::varStatusToBasisStatusRow().

◆ rhs() [2/3]

const R& rhs ( int  i) const

Returns right hand side of row number i.

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

◆ rhs_w()

R& rhs_w ( int  i)
protected

Returns right hand side of row i.

Definition at line 1991 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling(), and SPxScaler::unscale().

◆ rhsUnscaled() [1/6]

R rhsUnscaled ( int  i) const

◆ rhsUnscaled() [2/6]

Real rhsUnscaled ( int  i) const

Returns unscaled right hand side of row number i.

Definition at line 252 of file spxlpbase_real.cpp.

◆ rhsUnscaled() [3/6]

R rhsUnscaled ( const SPxRowId id) const

Returns unscaled right hand side of row with identifier id.

◆ rhsUnscaled() [4/6]

Real rhsUnscaled ( const SPxRowId id) const

Returns unscaled right hand side of row with identifier id.

Definition at line 264 of file spxlpbase_real.cpp.

◆ rhsUnscaled() [5/6]

Real rhsUnscaled ( int  i) const

◆ rhsUnscaled() [6/6]

Real rhsUnscaled ( const SPxRowId id) const

◆ rId()

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

◆ rowType() [1/2]

◆ rowType() [2/2]

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

Returns the inequality type of the row with identifier key.

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

◆ rowVector_w()

◆ setOutstream()

void setOutstream ( SPxOut newOutstream)

◆ setScalingInfo()

void setScalingInfo ( bool  scaled)

set whether the LP is scaled or not

Definition at line 146 of file spxlpbase.h.

Referenced by SoPlex::_preprocessAndSolveReal(), SPxScaler::applyScaling(), and SPxGeometSC::scale().

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

Referenced by SoPlex::_performOptIRStable(), and SoPlex::_reconstructSolutionRational().

◆ unscaleLP() [1/3]

void unscaleLP ( )

Definition at line 36 of file spxlpbase_real.cpp.

◆ unscaleLP() [2/3]

◆ unscaleLP() [3/3]

void unscaleLP ( )

◆ upper() [1/3]

const VectorBase<R>& upper ( ) const

Returns upper bound vector.

Definition at line 461 of file spxlpbase.h.

Referenced by SoPlex::_checkScaling(), SoPlex::_completeRangeTypesRational(), SoPlex::_getCompatibleBoundCons(), SoPlex::_recomputeRangeTypesRational(), SoPlex::_recomputeRangeTypesReal(), SoPlex::_removeComplementaryDualFixedPrimalVars(), SoPlex::_setComplementaryDualOriginalObjective(), SoPlex::_storeLPReal(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformFeasibility(), SoPlex::_updateComplementaryDualFixedPrimalVars(), SoPlex::_updateComplementaryPrimalFixedPrimalVars(), SPxMainSM::aggregateVars(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SoPlex::changeBoundsRational(), SoPlex::changeLowerRational(), SoPlex::changeLowerReal(), SPxSolver::changeLowerStatus(), SPxSolver::changeUpper(), SPxLPBase< Real >::changeUpper(), SoPlex::changeUpperRational(), SoPlex::changeUpperReal(), SPxMainSM::computeMinMaxResidualActivity(), SPxLPBase< Real >::doAddCol(), SPxLPBase< Real >::doAddCols(), SPxMainSM::duplicateCols(), SPxMainSM::FixBoundsPS::FixBoundsPS(), SPxMainSM::fixColumn(), SPxBoundFlippingRT::flipAndUpdate(), SPxWeightST::generate(), SPxLPBase< Real >::getCol(), SPxLPBase< Real >::getCols(), SoPlex::getDecompBoundViolation(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals2(), SoPlex::getOriginalProblemStatistics(), SPxMainSM::handleExtremes(), SPxSolver::isBasisValid(), soplex::LPFwriteBounds(), SPxMainSM::multiaggregation(), SPxSolver::nonbasicValue(), soplex::primalColStatus(), SPxLPBase< Real >::printProblemStatistics(), SPxMainSM::propagatePseudoobj(), SPxSolver::qualBoundViolation(), SPxMainSM::removeEmpty(), SPxMainSM::removeRowSingleton(), SPxBoundFlippingRT::selectEnter(), SPxBoundFlippingRT::selectLeave(), SPxSumST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SPxSolver::solve(), SPxMainSM::trivialHeuristic(), SPxScaler::unscale(), SPxSolver::unShift(), SoPlex::upperRational(), SoPlex::upperRealInternal(), SPxSolver::varStatusToBasisStatusCol(), and SPxBasis::writeBasis().

◆ upper() [2/3]

const R& upper ( int  i) const

Returns upper bound of column i.

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

◆ upper_w()

R& upper_w ( int  i)
protected

Returns upper bound of column i.

Definition at line 2015 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling(), and SPxScaler::unscale().

◆ upperUnscaled() [1/6]

Real upperUnscaled ( int  i) const

Returns unscaled upper bound of column i.

Definition at line 392 of file spxlpbase_real.cpp.

◆ upperUnscaled() [2/6]

Real upperUnscaled ( const SPxColId id) const

Returns unscaled upper bound of column with identifier id.

Definition at line 404 of file spxlpbase_real.cpp.

◆ upperUnscaled() [3/6]

R upperUnscaled ( int  i) const

◆ upperUnscaled() [4/6]

R upperUnscaled ( const SPxColId id) const

Returns unscaled upper bound of column with identifier id.

◆ upperUnscaled() [5/6]

Real upperUnscaled ( int  i) const

◆ upperUnscaled() [6/6]

Real upperUnscaled ( const SPxColId id) const

◆ writeFile()

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

◆ writeLPF() [1/4]

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< Real >::operator=(), SPxLPBase< Real >::readFile(), and SPxLPBase< Real >::writeFile().

◆ writeLPF() [2/4]

void writeLPF ( std::ostream &  p_output,
const NameSet p_rnames,
const NameSet p_cnames,
const DIdxSet p_intvars 
) const

Write LP in LP Format.

Parameters
p_outputoutput stream
p_rnamesrow names
p_cnamescolumn names
p_intvarsinteger variables

Definition at line 2191 of file spxlpbase_rational.cpp.

◆ writeLPF() [3/4]

void writeLPF ( std::ostream &  p_output,
const NameSet p_rnames,
const NameSet p_cnames,
const DIdxSet p_intvars 
) const

Write LP in LP Format.

Parameters
p_outputoutput stream
p_rnamesrow names
p_cnamescolumn names
p_intvarsinteger variables

Definition at line 2500 of file spxlpbase_real.cpp.

◆ writeLPF() [4/4]

void writeLPF ( std::ostream &  p_output,
const NameSet p_rnames,
const NameSet p_cnames,
const DIdxSet p_intvars 
) const

◆ writeMPS() [1/4]

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

◆ writeMPS() [2/4]

void writeMPS ( std::ostream &  p_output,
const NameSet p_rnames,
const NameSet p_cnames,
const DIdxSet p_intvars 
) const

Write LP in MPS format.

Note
There will always be a BOUNDS section, even if there are no bounds.
Parameters
p_outputoutput stream.
p_rnamesrow names.
p_cnamescolumn names.
p_intvarsinteger variables.

Definition at line 2303 of file spxlpbase_rational.cpp.

◆ writeMPS() [3/4]

void writeMPS ( std::ostream &  p_output,
const NameSet p_rnames,
const NameSet p_cnames,
const DIdxSet p_intvars 
) const

Write LP in MPS format.

Note
There will always be a BOUNDS section, even if there are no bounds.
Parameters
p_outputoutput stream.
p_rnamesrow names.
p_cnamescolumn names.
p_intvarsinteger variables.

Definition at line 2602 of file spxlpbase_real.cpp.

◆ writeMPS() [4/4]

void writeMPS ( std::ostream &  p_output,
const NameSet p_rnames,
const NameSet p_cnames,
const DIdxSet p_intvars 
) const

Friends And Related Function Documentation

◆ SPxBasis

friend class SPxBasis
friend

Definition at line 83 of file spxlpbase.h.

◆ SPxEquiliSC

friend class SPxEquiliSC
friend

Definition at line 85 of file spxlpbase.h.

◆ SPxGeometSC

friend class SPxGeometSC
friend

Definition at line 87 of file spxlpbase.h.

◆ SPxLeastSqSC

friend class SPxLeastSqSC
friend

Definition at line 86 of file spxlpbase.h.

◆ SPxLPBase

friend class SPxLPBase
friend

Definition at line 82 of file spxlpbase.h.

◆ SPxMainSM

friend class SPxMainSM
friend

Definition at line 88 of file spxlpbase.h.

◆ SPxScaler

friend class SPxScaler
friend

Definition at line 84 of file spxlpbase.h.

Member Data Documentation

◆ _isScaled

bool _isScaled
private

true, if scaling has been performed

Definition at line 113 of file spxlpbase.h.

Referenced by SPxLPBase< Real >::isScaled(), SPxLPBase< Real >::operator=(), and SPxScaler::unscale().

◆ lp_scaler

◆ offset

R offset
private

offset computed, e.g., in simplification step

Definition at line 112 of file spxlpbase.h.

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

◆ spxout

SPxOut* spxout

Definition at line 122 of file spxlpbase.h.

Referenced by SPxLPBase< Real >::operator=(), and SPxMainSM::simplify().

◆ thesense

SPxSense thesense
private

optimization sense.

Definition at line 111 of file spxlpbase.h.

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