Scippy

SoPlex

Sequential object-oriented simPlex

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>

Inheritance diagram for SPxLPBase< R >:

Public Types

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

Public Member Functions

void setOutstream (SPxOut &newOutstream)
 
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<>
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...
 
Inquiry
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...
 
minAbsNzo () const
 Absolute smallest non-zero element in LP. More...
 
maxAbsNzo () const
 Absolute biggest non-zero element in 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...
 
const VectorBase< R > & rhs () const
 Returns right hand side vector. More...
 
const R & rhs (int i) const
 
const R & rhs (const SPxRowId &id) const
 Returns 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
 
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...
 
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 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...
 
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...
 
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...
 
const VectorBase< R > & lower () const
 Returns lower bound vector. More...
 
const R & lower (int i) const
 Returns lower bound of column i. More...
 
const R & lower (const SPxColId &id) const
 Returns 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...
 
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)
 
virtual void addRow (const R &lhsValue, const SVectorBase< R > &rowVec, const R &rhsValue)
 
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)
 Adds row to LPRowSetBase. More...
 
virtual void addRows (const LPRowSetBase< R > &pset)
 
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)
 adds all LPRowBases of pset to LPRowSetBase. More...
 
virtual void addCol (const LPColBase< R > &col)
 
virtual void addCol (const R &objValue, const R &lowerValue, const SVectorBase< R > &colVec, const R &upperValue)
 
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)
 Adds col to LPColSetVBase. More...
 
virtual void addCols (const LPColSetBase< R > &pset)
 
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)
 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)
 Changes objective vector to newObj. More...
 
virtual void changeObj (int i, const R &newVal)
 changes i 'th objective vector element to newVal. 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)
 Changes objective value of column with identifier id to newVal. More...
 
virtual void changeMaxObj (const VectorBase< R > &newObj)
 Changes objective vector to newObj. More...
 
virtual void changeMaxObj (int i, const R &newVal)
 changes i 'th objective vector element to newVal. 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)
 Changes objective value of column with identifier id to newVal. More...
 
virtual void changeLower (const VectorBase< R > &newLower)
 Changes vector of lower bounds to newLower. More...
 
virtual void changeLower (int i, const R &newLower)
 changes i 'th lower bound to newLower. 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)
 changes lower bound of column with identifier id to newLower. More...
 
virtual void changeUpper (const VectorBase< R > &newUpper)
 Changes vector of upper bounds to newUpper. More...
 
virtual void changeUpper (int i, const R &newUpper)
 Changes i 'th upper bound to newUpper. 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)
 Changes upper bound of column with identifier id to newLower. More...
 
virtual void changeBounds (const VectorBase< R > &newLower, const VectorBase< R > &newUpper)
 Changes variable bounds to newLower and newUpper. More...
 
virtual void changeBounds (int i, const R &newLower, const R &newUpper)
 Changes bounds of column i to newLower and newUpper. 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)
 Changes bounds of column with identifier id. More...
 
virtual void changeLhs (const VectorBase< R > &newLhs)
 Changes left hand side vector for constraints to newLhs. More...
 
virtual void changeLhs (int i, const R &newLhs)
 Changes i 'th left hand side value to newLhs. 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)
 Changes left hand side value for row with identifier id. More...
 
virtual void changeRhs (const VectorBase< R > &newRhs)
 Changes right hand side vector for constraints to newRhs. More...
 
virtual void changeRhs (int i, const R &newRhs)
 Changes i 'th right hand side value to newRhs. More...
 
virtual void changeRhs (SPxRowId id, const R &newRhs)
 Changes right hand side value for row with identifier id. More...
 
virtual void changeRange (const VectorBase< R > &newLhs, const VectorBase< R > &newRhs)
 Changes left and right hand side vectors. More...
 
virtual void changeRange (int i, const R &newLhs, const R &newRhs)
 Changes left and right hand side of row i. 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)
 Changes left and right hand side of row with identifier id. More...
 
virtual void changeRowObj (const VectorBase< R > &newRowObj)
 Changes row objective function vector to newRowObj. More...
 
virtual void changeRowObj (int i, const R &newRowObj)
 Changes i 'th row objective function value to newRowObj. More...
 
virtual void changeRowObj (SPxRowId id, const R &newRowObj)
 Changes row objective function value for row with identifier id. More...
 
virtual void clearRowObjs ()
 Clears row objective function values for all rows. More...
 
virtual void changeRow (int n, const LPRowBase< R > &newRow)
 Replaces i 'th row of LP with newRow. More...
 
virtual void changeRow (SPxRowId id, const LPRowBase< R > &newRow)
 Replaces row with identifier id with newRow. More...
 
virtual void changeCol (int n, const LPColBase< R > &newCol)
 Replaces i 'th column of LP with newCol. More...
 
virtual void changeCol (SPxColId id, const LPColBase< R > &newCol)
 Replaces column with identifier id with newCol. More...
 
virtual void changeElement (int i, int j, const R &val)
 Changes LP element (i, j) to val. 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)
 Changes LP element identified by (rid, cid) to val. 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
 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
 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...
 
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)
 Called after the last n rows have just been added. More...
 
virtual void addedCols (int)
 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)
 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)
 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)
 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)
 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)
 
void add (DataKey &newkey, const R &obj, const R &newlower, const SVectorBase< R > &newcolVector, const R &newupper)
 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)
 
SVectorBase< R > & create (DataKey &newkey, int nonzeros=0, const R &obj=1, const R &newlow=0, const R &newup=1)
 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)
 
void doAddRow (const R &lhsValue, const SVectorBase< R > &rowVec, const R &rhsValue)
 
void doAddRows (const LPRowSetBase< R > &set)
 
void doAddCol (const LPColBase< R > &col)
 
void doAddCol (const R &objValue, const R &lowerValue, const SVectorBase< R > &colVec, const R &upperValue)
 
void doAddCols (const LPColSetBase< R > &set)
 

Private Attributes

Data
SPxSense thesense
 optimization sense. More...
 
offset
 offset computed, e.g., in simplification step More...
 

Friends

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

Additional Inherited Members

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

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 retreived with method spxSense().

Further, equality constraints are modelled 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 76 of file spxlpbase.h.

Member Enumeration Documentation

enum SPxSense

Optimization sense.

Enumerator
MAXIMIZE 
MINIMIZE 

Definition at line 92 of file spxlpbase.h.

Constructor & Destructor Documentation

SPxLPBase ( )

Default constructor.

Definition at line 2350 of file spxlpbase.h.

virtual ~SPxLPBase ( )
virtual

Destructor.

Definition at line 2358 of file spxlpbase.h.

SPxLPBase ( const SPxLPBase< R > &  old)

Copy constructor.

Definition at line 2362 of file spxlpbase.h.

SPxLPBase ( const SPxLPBase< S > &  old)

Copy constructor.

Definition at line 2374 of file spxlpbase.h.

Member Function Documentation

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

Definition at line 656 of file spxlpbase.h.

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

Definition at line 663 of file spxlpbase.h.

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

Adds col to LPColSetVBase.

Definition at line 695 of file spxlpbase.h.

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

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

Adds all LPColBases of set to LPColSetBase.

Definition at line 797 of file spxlpbase.h.

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

Referenced by SoPlex::_performOptIRStable().

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

Definition at line 1970 of file spxlpbase.h.

virtual void addedCols ( int  )
protectedvirtual
virtual void addedRows ( int  )
protectedvirtual
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 1655 of file spxlpbase.h.

Referenced by SoPlex::_performOptIRStable().

virtual void addRow ( const LPRowBase< R > &  row)
virtual
virtual void addRow ( const R &  lhsValue,
const SVectorBase< R > &  rowVec,
const R &  rhsValue 
)
virtual

Definition at line 494 of file spxlpbase.h.

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

Definition at line 501 of file spxlpbase.h.

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

Adds row to LPRowSetBase.

Definition at line 536 of file spxlpbase.h.

virtual void addRows ( const LPRowSetBase< R > &  pset)
virtual
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 550 of file spxlpbase.h.

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

adds all LPRowBases of pset to LPRowSetBase.

Definition at line 640 of file spxlpbase.h.

virtual void changeBounds ( const VectorBase< R > &  newLower,
const VectorBase< R > &  newUpper 
)
virtual
virtual void changeBounds ( int  i,
const R &  newLower,
const R &  newUpper 
)
virtual

Changes bounds of column i to newLower and newUpper.

Reimplemented in SPxSolver.

Definition at line 1318 of file spxlpbase.h.

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

Changes bounds of column i to newLower and newUpper.

Definition at line 1328 of file spxlpbase.h.

virtual void changeBounds ( SPxColId  id,
const R &  newLower,
const R &  newUpper 
)
virtual

Changes bounds of column with identifier id.

Reimplemented in SPxSolver.

Definition at line 1336 of file spxlpbase.h.

virtual void changeCol ( int  n,
const LPColBase< R > &  newCol 
)
virtual

Replaces i 'th column of LP with newCol.

Definition at line 1494 of file spxlpbase.h.

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

virtual void changeCol ( SPxColId  id,
const LPColBase< R > &  newCol 
)
virtual

Replaces column with identifier id with newCol.

Definition at line 1526 of file spxlpbase.h.

virtual void changeElement ( int  i,
int  j,
const R &  val 
)
virtual

Changes LP element (i, j) to val.

Reimplemented in SPxSolver.

Definition at line 1532 of file spxlpbase.h.

Referenced by SoPlex::_changeElementReal(), SoPlex::_lift(), SPxLPBase< Real >::changeElement(), SoPlex::changeElementRational(), and SoPlex::changeElementReal().

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

Changes LP element (i, j) to val.

Definition at line 1564 of file spxlpbase.h.

virtual void changeElement ( SPxRowId  rid,
SPxColId  cid,
const R &  val 
)
virtual

Changes LP element identified by (rid, cid) to val.

Reimplemented in SPxSolver.

Definition at line 1595 of file spxlpbase.h.

virtual void changeLhs ( int  i,
const R &  newLhs 
)
virtual

Changes i 'th left hand side value to newLhs.

Reimplemented in SPxSolver.

Definition at line 1350 of file spxlpbase.h.

void changeLhs ( int  i,
const S *  newLhs 
)

Changes i 'th left hand side value to newLhs.

Definition at line 1358 of file spxlpbase.h.

virtual void changeLhs ( SPxRowId  id,
const R &  newLhs 
)
virtual

Changes left hand side value for row with identifier id.

Reimplemented in SPxSolver.

Definition at line 1365 of file spxlpbase.h.

virtual void changeLower ( int  i,
const R &  newLower 
)
virtual

changes i 'th lower bound to newLower.

Reimplemented in SPxSolver.

Definition at line 1256 of file spxlpbase.h.

void changeLower ( int  i,
const S *  newLower 
)

changes i 'th lower bound to newLower.

Definition at line 1265 of file spxlpbase.h.

virtual void changeLower ( SPxColId  id,
const R &  newLower 
)
virtual

changes lower bound of column with identifier id to newLower.

Reimplemented in SPxSolver.

Definition at line 1272 of file spxlpbase.h.

virtual void changeMaxObj ( const VectorBase< R > &  newObj)
virtual
virtual void changeMaxObj ( int  i,
const R &  newVal 
)
virtual

changes i 'th objective vector element to newVal.

Reimplemented in SPxSolver.

Definition at line 1226 of file spxlpbase.h.

void changeMaxObj ( int  i,
const S *  newVal 
)

changes i 'th objective vector element to newVal.

Definition at line 1234 of file spxlpbase.h.

virtual void changeMaxObj ( SPxColId  id,
const R &  newVal 
)
virtual

Changes objective value of column with identifier id to newVal.

Reimplemented in SPxSolver.

Definition at line 1241 of file spxlpbase.h.

virtual void changeObj ( int  i,
const R &  newVal 
)
virtual

changes i 'th objective vector element to newVal.

Reimplemented in SPxSolver.

Definition at line 1193 of file spxlpbase.h.

void changeObj ( int  i,
const S *  newVal 
)

changes i 'th objective vector element to newVal.

Definition at line 1203 of file spxlpbase.h.

virtual void changeObj ( SPxColId  id,
const R &  newVal 
)
virtual

Changes objective value of column with identifier id to newVal.

Reimplemented in SPxSolver.

Definition at line 1212 of file spxlpbase.h.

virtual void changeObjOffset ( const R &  o)
virtual
virtual void changeRange ( const VectorBase< R > &  newLhs,
const VectorBase< R > &  newRhs 
)
virtual
virtual void changeRange ( int  i,
const R &  newLhs,
const R &  newRhs 
)
virtual

Changes left and right hand side of row i.

Reimplemented in SPxSolver.

Definition at line 1401 of file spxlpbase.h.

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

Changes left and right hand side of row i.

Definition at line 1411 of file spxlpbase.h.

virtual void changeRange ( SPxRowId  id,
const R &  newLhs,
const R &  newRhs 
)
virtual

Changes left and right hand side of row with identifier id.

Reimplemented in SPxSolver.

Definition at line 1419 of file spxlpbase.h.

virtual void changeRhs ( int  i,
const R &  newRhs 
)
virtual

Changes i 'th right hand side value to newRhs.

Reimplemented in SPxSolver.

Definition at line 1379 of file spxlpbase.h.

virtual void changeRhs ( SPxRowId  id,
const R &  newRhs 
)
virtual

Changes right hand side value for row with identifier id.

Reimplemented in SPxSolver.

Definition at line 1386 of file spxlpbase.h.

virtual void changeRow ( int  n,
const LPRowBase< R > &  newRow 
)
virtual

Replaces i 'th row of LP with newRow.

Definition at line 1456 of file spxlpbase.h.

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

virtual void changeRow ( SPxRowId  id,
const LPRowBase< R > &  newRow 
)
virtual

Replaces row with identifier id with newRow.

Definition at line 1488 of file spxlpbase.h.

virtual void changeRowObj ( const VectorBase< R > &  newRowObj)
virtual

Changes row objective function vector to newRowObj.

Definition at line 1425 of file spxlpbase.h.

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

virtual void changeRowObj ( int  i,
const R &  newRowObj 
)
virtual

Changes i 'th row objective function value to newRowObj.

Reimplemented in SPxSolver.

Definition at line 1435 of file spxlpbase.h.

virtual void changeRowObj ( SPxRowId  id,
const R &  newRowObj 
)
virtual

Changes row objective function value for row with identifier id.

Reimplemented in SPxSolver.

Definition at line 1444 of file spxlpbase.h.

virtual void changeSense ( SPxSense  sns)
virtual

Changes optimization sense to sns.

Definition at line 1601 of file spxlpbase.h.

Referenced by SoPlex::setIntParam().

virtual void changeUpper ( int  i,
const R &  newUpper 
)
virtual

Changes i 'th upper bound to newUpper.

Reimplemented in SPxSolver.

Definition at line 1287 of file spxlpbase.h.

void changeUpper ( int  i,
const S *  newUpper 
)

Changes i 'th upper bound to newUpper.

Definition at line 1296 of file spxlpbase.h.

virtual void changeUpper ( SPxColId  id,
const R &  newUpper 
)
virtual

Changes upper bound of column with identifier id to newLower.

Reimplemented in SPxSolver.

Definition at line 1303 of file spxlpbase.h.

SPxColId cId ( int  n) const
virtual void clear ( )
virtual
virtual void clearRowObjs ( )
virtual

Clears row objective function values for all rows.

Reimplemented in SPxSolver.

Definition at line 1450 of file spxlpbase.h.

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

Returns column vector of column with identifier id.

Definition at line 347 of file spxlpbase.h.

virtual void computeDualActivity ( const VectorBase< R > &  dual,
VectorBase< R > &  activity 
) 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

Definition at line 1673 of file spxlpbase.h.

virtual void computePrimalActivity ( const VectorBase< R > &  primal,
VectorBase< R > &  activity 
) 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

Definition at line 1619 of file spxlpbase.h.

Referenced by SoPlex::_factorizeColumnRational(), SoPlex::_performOptIRStable(), SoPlex::_reconstructSolutionRational(), SoPlex::_untransformFeasibility(), SoPlex::getRowViolationRational(), and SoPlex::getRowViolationReal().

void doAddCol ( const LPColBase< R > &  col)
private

Definition at line 2191 of file spxlpbase.h.

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

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

Definition at line 2225 of file spxlpbase.h.

void doAddCols ( const LPColSetBase< R > &  set)
private

Definition at line 2257 of file spxlpbase.h.

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

void doAddRow ( const LPRowBase< R > &  row)
private

Definition at line 2042 of file spxlpbase.h.

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

void doAddRow ( const R &  lhsValue,
const SVectorBase< R > &  rowVec,
const R &  rhsValue 
)
private

Definition at line 2074 of file spxlpbase.h.

void doAddRows ( const LPRowSetBase< R > &  set)
private

Definition at line 2104 of file spxlpbase.h.

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

virtual void doRemoveCol ( int  j)
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 1910 of file spxlpbase.h.

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

virtual void doRemoveCols ( int  perm[])
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 1939 of file spxlpbase.h.

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

virtual void doRemoveRow ( int  j)
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 1860 of file spxlpbase.h.

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

virtual void doRemoveRows ( int  perm[])
protectedvirtual

Internal helper method.

Reimplemented in SPxSolver.

Definition at line 1888 of file spxlpbase.h.

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

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

Gets i 'th column.

Definition at line 316 of file spxlpbase.h.

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

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

Gets column with identifier id.

Definition at line 326 of file spxlpbase.h.

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

Gets columns start, ..., end.

Definition at line 332 of file spxlpbase.h.

Referenced by SoPlex::getColsRational(), and SoPlex::getColsReal().

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

Gets i 'th row.

Definition at line 188 of file spxlpbase.h.

Referenced by SPxLPBase< Real >::getRow(), SoPlex::getRowRational(), and SoPlex::getRowReal().

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

Gets row with identifier id.

Definition at line 197 of file spxlpbase.h.

void getRowObj ( VectorBase< R > &  prowobj) const

Gets row objective function vector.

Definition at line 260 of file spxlpbase.h.

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

Gets rows start, ... end.

Definition at line 203 of file spxlpbase.h.

Referenced by SoPlex::getRowsRational(), and SoPlex::getRowsReal().

const R& lhs ( int  i) const

Definition at line 248 of file spxlpbase.h.

const R& lhs ( const SPxRowId id) const

Returns left hand side of row with identifier id.

Definition at line 254 of file spxlpbase.h.

R& lhs_w ( int  i)
protected

Returns left hand side of row i.

Definition at line 1812 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling().

const R& lower ( int  i) const

Returns lower bound of column i.

Definition at line 426 of file spxlpbase.h.

const R& lower ( const SPxColId id) const

Returns lower bound of column with identifier id.

Definition at line 432 of file spxlpbase.h.

R& lower_w ( int  i)
protected

Returns lower bound of column i.

Definition at line 1836 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling().

const LPColSetBase<R>* lpcolset ( ) const
protected

Returns the LP as an LPColSetBase.

Definition at line 1854 of file spxlpbase.h.

const LPRowSetBase<R>* lprowset ( ) const
protected

Returns the LP as an LPRowSetBase.

Definition at line 1848 of file spxlpbase.h.

R maxAbsNzo ( ) const
const R& maxObj ( int  i) const

Returns objective value of column i for maximization problem.

Definition at line 390 of file spxlpbase.h.

const R& maxObj ( const SPxColId id) const

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

Definition at line 396 of file spxlpbase.h.

R& maxObj_w ( int  i)
protected

Returns objective value of column i for maximization problem.

Definition at line 1824 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling().

const R& maxRowObj ( int  i) const

Definition at line 292 of file spxlpbase.h.

const R& maxRowObj ( const SPxRowId id) const

Returns row objective function value of row with identifier id.

Definition at line 298 of file spxlpbase.h.

R& maxRowObj_w ( int  i)
protected

Returns objective function value of row i.

Definition at line 1818 of file spxlpbase.h.

R minAbsNzo ( ) const
int nCols ( ) const

Returns number of columns in LP.

Definition at line 133 of file spxlpbase.h.

Referenced by SoPlex::_evaluateSolutionReal(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_storeLPReal(), SoPlex::_storeSolutionReal(), SPxLPBase< Real >::addCol(), SPxLPBase< Real >::addCols(), SPxLPBase< Real >::addDualActivity(), SPxBasis::addedCols(), SPxLPBase< Real >::addPrimalActivity(), SPxLPBase< Real >::addRow(), SPxLPBase< Real >::addRows(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SPxLPBase< Real >::computeDualActivity(), SPxLPBase< Real >::computePrimalActivity(), 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(), SoPlexLegacy::getBasis(), SoPlexLegacy::getColName(), soplex::getColName(), SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), soplex::initPrefs(), SPxWeightPR::isConsistent(), SPxBasis::isConsistent(), SPxLPBase< Real >::isConsistent(), SPxBasis::isDescValid(), SPxWeightPR::load(), SPxBasis::loadDesc(), soplex::LPFwriteBounds(), soplex::LPFwriteGenerals(), soplex::LPFwriteSVector(), SPxLPBase< Real >::maxAbsNzo(), SPxScaler::maxColRatio(), SPxLPBase< Real >::minAbsNzo(), SPxLPBase< Real >::nNzos(), SoPlex::numColsRational(), SoPlex::numColsReal(), SoPlexLegacy::objValue(), SPxLPBase< Real >::printProblemStatistics(), SoPlexLegacy::qualBoundViolation(), SoPlexLegacy::qualConstraintViolation(), 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(), SoPlexLegacy::setBasis(), SoPlex::setBasis(), SPxScaler::setup(), SPxSteepPR::setupPrefsX(), SPxSumST::setupWeights(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SoPlexLegacy::solve(), SPxLPBase< Real >::subDualActivity(), SoPlexLegacy::unsimplify(), SPxBasis::writeBasis(), and SoPlexLegacy::writeBasisFile().

int nNzos ( ) const
int nRows ( ) const

Returns number of rows in LP.

Definition at line 127 of file spxlpbase.h.

Referenced by SoPlex::_evaluateSolutionReal(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_restoreLPReal(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_storeSolutionReal(), SPxLPBase< Real >::addCol(), SPxLPBase< Real >::addCols(), SPxLPBase< Real >::addDualActivity(), SPxBasis::addedRows(), SPxLPBase< Real >::addPrimalActivity(), SPxLPBase< Real >::addRow(), SPxLPBase< Real >::addRows(), SPxScaler::applyScaling(), SoPlex::areLPsInSync(), SPxLPBase< Real >::computeDualActivity(), SPxLPBase< Real >::computePrimalActivity(), 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(), SoPlexLegacy::getBasis(), SoPlexLegacy::getRowName(), SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), soplex::initPrefs(), SPxWeightPR::isConsistent(), SPxBasis::isConsistent(), SPxLPBase< Real >::isConsistent(), SPxBasis::isDescValid(), SPxWeightPR::load(), SPxBasis::loadDesc(), soplex::LPFgetRowName(), soplex::LPFwriteRows(), SPxScaler::maxRowRatio(), soplex::MPSgetRowName(), SoPlex::numRowsRational(), SoPlex::numRowsReal(), SPxLPBase< Real >::printProblemStatistics(), SoPlexLegacy::qualConstraintViolation(), 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(), SoPlexLegacy::setBasis(), SoPlex::setBasis(), SPxScaler::setup(), SPxSteepPR::setupPrefsX(), SPxSumST::setupWeights(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SoPlexLegacy::solve(), SPxLPBase< Real >::subDualActivity(), SoPlexLegacy::unsimplify(), SPxBasis::writeBasis(), and SoPlexLegacy::writeBasisFile().

int number ( const SPxColId id) const

Returns the column number of the column with identifier id.

Definition at line 456 of file spxlpbase.h.

int number ( const SPxId id) const

Returns the row or column number for identifier id.

Definition at line 462 of file spxlpbase.h.

R obj ( const SPxColId id) const

Returns objective value of column with identifier id.

Definition at line 371 of file spxlpbase.h.

const R& objOffset ( ) const

Returns the objective function value offset.

Definition at line 444 of file spxlpbase.h.

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

Assignment operator.

Definition at line 2385 of file spxlpbase.h.

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

Assignment operator.

Definition at line 2402 of file spxlpbase.h.

void printProblemStatistics ( std::ostream &  os)

prints problem statistics

Definition at line 1097 of file spxlpbase.h.

Referenced by SoPlex::printStatistics().

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

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

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

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 387 of file spxlpbase_real.cpp.

References DSVectorBase< R >::add(), NameSet::add(), LPRowSetBase< R >::add(), DIdxSet::addIdx(), NameSet::clear(), SVectorBase< R >::clear(), soplex::EQ(), NameSet::has(), SVectorBase< R >::index(), soplex::infinity, LPColSetBase< R >::lower(), LPColSetBase< R >::lower_w(), LPF_MAX_LINE_LEN, soplex::LPFhasKeyword(), soplex::LPFhasRowName(), soplex::LPFisColName(), soplex::LPFisFree(), soplex::LPFisInfinity(), soplex::LPFisSense(), soplex::LPFisSpace(), soplex::LPFisValue(), soplex::LPFreadColName(), soplex::LPFreadInfinity(), soplex::LPFreadSense(), soplex::LPFreadValue(), LPColSetBase< R >::maxObj_w(), MSG_DEBUG, MSG_ERROR, MSG_INFO2, MSG_WARNING, soplex::NE(), LPRowSetBase< R >::num(), SVectorBase< R >::number(), SVectorBase< R >::remove(), LPRowBase< R >::setLhs(), LPRowBase< R >::setRhs(), LPRowBase< R >::setRowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), soplex::spx_free(), soplex::spxAbs(), LPColSetBase< R >::upper(), LPColSetBase< R >::upper_w(), SVectorBase< R >::value(), and NameSet::~NameSet().

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 418 of file spxlpbase_rational.cpp.

References DSVectorBase< R >::add(), NameSet::add(), LPRowSetBase< R >::add(), DIdxSet::addIdx(), NameSet::clear(), SVectorBase< R >::clear(), SPxLPBase< R >::clear(), NameSet::has(), SVectorBase< R >::index(), soplex::infinity, LPColSetBase< R >::lower(), LPColSetBase< R >::lower_w(), LPF_MAX_LINE_LEN, soplex::LPFhasKeyword(), soplex::LPFhasRowName(), soplex::LPFisColName(), soplex::LPFisFree(), soplex::LPFisInfinity(), soplex::LPFisSense(), soplex::LPFisSpace(), soplex::LPFisValue(), soplex::LPFreadColName(), soplex::LPFreadInfinity(), soplex::LPFreadSense(), soplex::LPFreadValue(), LPColSetBase< R >::maxObj_w(), MSG_DEBUG, MSG_ERROR, MSG_INFO2, MSG_WARNING, LPRowSetBase< R >::num(), SVectorBase< R >::number(), SVectorBase< R >::remove(), LPRowBase< R >::setLhs(), LPRowBase< R >::setRhs(), LPRowBase< R >::setRowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), soplex::spx_free(), soplex::spxAbs(), LPColSetBase< R >::upper(), LPColSetBase< R >::upper_w(), SVectorBase< R >::value(), and NameSet::~NameSet().

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

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

virtual void removeCol ( SPxColId  id)
virtual

Removes column with identifier id.

Definition at line 919 of file spxlpbase.h.

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

Removes columns from start to end (including both).

Definition at line 980 of file spxlpbase.h.

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

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

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

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

Definition at line 935 of file spxlpbase.h.

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

virtual void removeRow ( int  i)
virtual
virtual void removeRow ( SPxRowId  id)
virtual

Removes row with identifier id.

Definition at line 822 of file spxlpbase.h.

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

Removes rows from start to end (including both).

Definition at line 883 of file spxlpbase.h.

Referenced by SoPlex::_project().

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

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

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

Definition at line 838 of file spxlpbase.h.

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

const R& rhs ( int  i) const

Definition at line 230 of file spxlpbase.h.

const R& rhs ( const SPxRowId id) const

Returns right hand side of row with identifier id.

Definition at line 236 of file spxlpbase.h.

R& rhs_w ( int  i)
protected

Returns right hand side of row i.

Definition at line 1806 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling().

R rowObj ( const SPxRowId id) const

Returns row objective function value of row with identifier id.

Definition at line 277 of file spxlpbase.h.

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

Returns the inequality type of the i'th LPRow.

Definition at line 304 of file spxlpbase.h.

Referenced by SoPlex::rowTypeRational(), and SoPlex::rowTypeReal().

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

Returns the inequality type of the row with identifier key.

Definition at line 310 of file spxlpbase.h.

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

Gets row vector of row with identifier id.

Definition at line 218 of file spxlpbase.h.

void setOutstream ( SPxOut newOutstream)

Definition at line 118 of file spxlpbase.h.

Referenced by SoPlex::_ensureRationalLP(), SoPlexLegacy::solve(), and SoPlex::SoPlex().

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

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

const R& upper ( int  i) const

Returns upper bound of column i.

Definition at line 408 of file spxlpbase.h.

const R& upper ( const SPxColId id) const

Returns upper bound of column with identifier id.

Definition at line 414 of file spxlpbase.h.

R& upper_w ( int  i)
protected

Returns upper bound of column i.

Definition at line 1830 of file spxlpbase.h.

Referenced by SPxScaler::applyScaling().

virtual void writeFile ( const char *  filename,
const NameSet rowNames = 0,
const NameSet colNames = 0,
const DIdxSet p_intvars = 0 
) const
virtual
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 >::readFile(), and SPxLPBase< Real >::writeFile().

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 1873 of file spxlpbase_real.cpp.

References soplex::LPFwriteBounds(), soplex::LPFwriteGenerals(), soplex::LPFwriteObjective(), and soplex::LPFwriteRows().

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 1993 of file spxlpbase_rational.cpp.

References soplex::LPFwriteBounds(), soplex::LPFwriteGenerals(), soplex::LPFwriteObjective(), and soplex::LPFwriteRows().

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

Writes a file in MPS format to out.

Referenced by SPxLPBase< Real >::readFile(), and SPxLPBase< Real >::writeFile().

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 1974 of file spxlpbase_real.cpp.

References soplex::getColName(), SVectorBase< R >::index(), soplex::infinity, soplex::isNotZero(), soplex::isZero(), soplex::MPSgetRHS(), soplex::MPSgetRowName(), soplex::MPSwriteRecord(), MSG_WARNING, IdxSet::number(), IdxSet::size(), SVectorBase< R >::size(), and SVectorBase< R >::value().

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 2100 of file spxlpbase_rational.cpp.

References soplex::getColName(), SVectorBase< R >::index(), soplex::infinity, soplex::MPSgetRHS(), soplex::MPSgetRowName(), soplex::MPSwriteRecord(), MSG_WARNING, IdxSet::number(), IdxSet::size(), SVectorBase< R >::size(), and SVectorBase< R >::value().

Friends And Related Function Documentation

friend class SPxBasis
friend

Definition at line 79 of file spxlpbase.h.

friend class SPxEquiliSC
friend

Definition at line 81 of file spxlpbase.h.

friend class SPxGeometSC
friend

Definition at line 82 of file spxlpbase.h.

friend class SPxLPBase
friend

Definition at line 78 of file spxlpbase.h.

friend class SPxMainSM
friend

Definition at line 83 of file spxlpbase.h.

friend class SPxScaler
friend

Definition at line 80 of file spxlpbase.h.

Member Data Documentation

R offset
private

offset computed, e.g., in simplification step

Definition at line 107 of file spxlpbase.h.

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

SPxSense thesense
private

optimization sense.

Definition at line 106 of file spxlpbase.h.

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