Scippy

SoPlex

Sequential object-oriented simPlex

Preconfigured SoPlex LP-solver. More...

#include <soplex.h>

Classes

class  Settings
 class of parameter settings More...
 
class  Statistics
 

Public Member Functions

 SoPlex ()
 default constructor More...
 
SoPlexoperator= (const SoPlex &rhs)
 assignment operator More...
 
 SoPlex (const SoPlex &rhs)
 copy constructor More...
 
virtual ~SoPlex ()
 destructor More...
 
int numRowsReal () const
 message handler More...
 
int numColsReal () const
 returns number of columns More...
 
int numNonzerosReal () const
 returns number of nonzeros More...
 
Real minAbsNonzeroReal () const
 returns smallest non-zero element in absolute value More...
 
Real maxAbsNonzeroReal () const
 returns biggest non-zero element in absolute value More...
 
void getRowReal (int i, LPRowReal &lprow) const
 gets row i More...
 
void getRowsReal (int start, int end, LPRowSetReal &lprowset) const
 gets rows start, ..., end. More...
 
const SVectorRealrowVectorReal (int i) const
 returns vector of row i More...
 
const VectorRealrhsReal () const
 returns right-hand side vector More...
 
Real rhsReal (int i) const
 returns right-hand side of row i More...
 
const VectorReallhsReal () const
 returns left-hand side vector More...
 
Real lhsReal (int i) const
 returns left-hand side of row i More...
 
LPRowReal::Type rowTypeReal (int i) const
 returns inequality type of row i More...
 
void getColReal (int i, LPColReal &lpcol) const
 gets column i More...
 
void getColsReal (int start, int end, LPColSetReal &lpcolset) const
 gets columns start, ..., end More...
 
const SVectorRealcolVectorReal (int i) const
 returns vector of column i More...
 
const VectorRealupperReal () const
 returns upper bound vector More...
 
Real upperReal (int i) const
 returns upper bound of column i More...
 
const VectorReallowerReal () const
 returns lower bound vector More...
 
Real lowerReal (int i) const
 returns lower bound of column i More...
 
void getObjReal (VectorReal &obj) const
 gets objective function vector More...
 
Real objReal (int i) const
 returns objective value of column i More...
 
const VectorRealmaxObjReal () const
 returns objective function vector after transformation to a maximization problem; since this is how it is stored internally, this is generally faster More...
 
Real maxObjReal (int i) const
 returns objective value of column i after transformation to a maximization problem; since this is how it is stored internally, this is generally faster More...
 
void getNdualNorms (int &nnormsRow, int &nnormsCol) const
 gets number of available dual norms More...
 
bool getDualNorms (int &nnormsRow, int &nnormsCol, Real *norms) const
 gets steepest edge norms and returns false if they are not available More...
 
bool setDualNorms (int nnormsRow, int nnormsCol, Real *norms)
 sets steepest edge norms and returns false if that's not possible More...
 
int numRowsRational () const
 returns number of rows More...
 
int numColsRational () const
 returns number of columns More...
 
int numNonzerosRational () const
 returns number of nonzeros More...
 
Rational minAbsNonzeroRational () const
 returns smallest non-zero element in absolute value More...
 
Rational maxAbsNonzeroRational () const
 returns biggest non-zero element in absolute value More...
 
void getRowRational (int i, LPRowRational &lprow) const
 gets row i More...
 
void getRowsRational (int start, int end, LPRowSetRational &lprowset) const
 gets rows start, ..., end. More...
 
const SVectorRationalrowVectorRational (int i) const
 returns vector of row i More...
 
const VectorRationalrhsRational () const
 returns right-hand side vector More...
 
const RationalrhsRational (int i) const
 returns right-hand side of row i More...
 
const VectorRationallhsRational () const
 returns left-hand side vector More...
 
const RationallhsRational (int i) const
 returns left-hand side of row i More...
 
LPRowRational::Type rowTypeRational (int i) const
 returns inequality type of row i More...
 
void getColRational (int i, LPColRational &lpcol) const
 gets column i More...
 
void getColsRational (int start, int end, LPColSetRational &lpcolset) const
 gets columns start, ..., end More...
 
const SVectorRationalcolVectorRational (int i) const
 returns vector of column i More...
 
const VectorRationalupperRational () const
 returns upper bound vector More...
 
const RationalupperRational (int i) const
 returns upper bound of column i More...
 
const VectorRationallowerRational () const
 returns lower bound vector More...
 
const RationallowerRational (int i) const
 returns lower bound of column i More...
 
void getObjRational (VectorRational &obj) const
 gets objective function vector More...
 
void getObjRational (int i, Rational &obj) const
 gets objective value of column i More...
 
Rational objRational (int i) const
 returns objective value of column i More...
 
const VectorRationalmaxObjRational () const
 returns objective function vector after transformation to a maximization problem; since this is how it is stored internally, this is generally faster More...
 
const RationalmaxObjRational (int i) const
 returns objective value of column i after transformation to a maximization problem; since this is how it is stored internally, this is generally faster More...
 
void addRowReal (const LPRowReal &lprow)
 adds a single row More...
 
void addRowsReal (const LPRowSetReal &lprowset)
 adds multiple rows More...
 
void addColReal (const LPCol &lpcol)
 adds a single column More...
 
void addColsReal (const LPColSetReal &lpcolset)
 adds multiple columns More...
 
void changeRowReal (int i, const LPRowReal &lprow)
 replaces row i with lprow More...
 
void changeLhsReal (const VectorReal &lhs)
 changes left-hand side vector for constraints to lhs More...
 
void changeLhsReal (int i, const Real &lhs)
 changes left-hand side of row i to lhs More...
 
void changeRhsReal (const VectorReal &rhs)
 changes right-hand side vector to rhs More...
 
void changeRhsReal (int i, const Real &rhs)
 changes right-hand side of row i to rhs More...
 
void changeRangeReal (const VectorReal &lhs, const VectorReal &rhs)
 changes left- and right-hand side vectors More...
 
void changeRangeReal (int i, const Real &lhs, const Real &rhs)
 changes left- and right-hand side of row i More...
 
void changeColReal (int i, const LPColReal &lpcol)
 replaces column i with lpcol More...
 
void changeLowerReal (const VectorReal &lower)
 changes vector of lower bounds to lower More...
 
void changeLowerReal (int i, const Real &lower)
 changes lower bound of column i to lower More...
 
void changeUpperReal (const VectorReal &upper)
 changes vector of upper bounds to upper More...
 
void changeUpperReal (int i, const Real &upper)
 changes i 'th upper bound to upper More...
 
void changeBoundsReal (const VectorReal &lower, const VectorReal &upper)
 changes vectors of column bounds to lower and upper More...
 
void changeBoundsReal (int i, const Real &lower, const Real &upper)
 changes bounds of column i to lower and upper More...
 
void changeObjReal (const VectorReal &obj)
 changes objective function vector to obj More...
 
void changeObjReal (int i, const Real &obj)
 changes objective coefficient of column i to obj More...
 
void changeElementReal (int i, int j, const Real &val)
 changes matrix entry in row i and column j to val More...
 
void removeRowReal (int i)
 removes row i More...
 
void removeRowsReal (int perm[])
 removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where row i has been moved to; note that perm must point to an array of size at least numRowsReal() More...
 
void removeRowsReal (int idx[], int n, int perm[]=0)
 remove all rows with indices in array idx of size n; an array perm of size numRowsReal() may be passed as buffer memory More...
 
void removeRowRangeReal (int start, int end, int perm[]=0)
 removes rows start to end including both; an array perm of size numRowsReal() may be passed as buffer memory More...
 
void removeColReal (int i)
 removes column i More...
 
void removeColsReal (int perm[])
 removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where column i has been moved to; note that perm must point to an array of size at least numColsReal() More...
 
void removeColsReal (int idx[], int n, int perm[]=0)
 remove all columns with indices in array idx of size n; an array perm of size numColsReal() may be passed as buffer memory More...
 
void removeColRangeReal (int start, int end, int perm[]=0)
 removes columns start to end including both; an array perm of size numColsReal() may be passed as buffer memory More...
 
void clearLPReal ()
 clears the LP More...
 
void syncLPReal ()
 synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, if sync mode is manual More...
 
void addRowRational (const LPRowRational &lprow)
 adds a single row More...
 
void addRowsRational (const LPRowSetRational &lprowset)
 adds multiple rows More...
 
void addColRational (const LPColRational &lpcol)
 adds a single column More...
 
void addColsRational (const LPColSetRational &lpcolset)
 adds multiple columns More...
 
void changeRowRational (int i, const LPRowRational &lprow)
 replaces row i with lprow More...
 
void changeLhsRational (const VectorRational &lhs)
 changes left-hand side vector for constraints to lhs More...
 
void changeLhsRational (int i, const Rational &lhs)
 changes left-hand side of row i to lhs More...
 
void changeRhsRational (const VectorRational &rhs)
 changes right-hand side vector to rhs More...
 
void changeRhsRational (int i, const Rational &rhs)
 changes right-hand side of row i to rhs More...
 
void changeRangeRational (const VectorRational &lhs, const VectorRational &rhs)
 changes left- and right-hand side vectors More...
 
void changeRangeRational (int i, const Rational &lhs, const Rational &rhs)
 changes left- and right-hand side of row i More...
 
void changeColRational (int i, const LPColRational &lpcol)
 replaces column i with lpcol More...
 
void changeLowerRational (const VectorRational &lower)
 changes vector of lower bounds to lower More...
 
void changeLowerRational (int i, const Rational &lower)
 changes lower bound of column i to lower More...
 
void changeUpperRational (const VectorRational &upper)
 changes vector of upper bounds to upper More...
 
void changeUpperRational (int i, const Rational &upper)
 changes i 'th upper bound to upper More...
 
void changeBoundsRational (const VectorRational &lower, const VectorRational &upper)
 changes vectors of column bounds to lower and upper More...
 
void changeBoundsRational (int i, const Rational &lower, const Rational &upper)
 changes bounds of column i to lower and upper More...
 
void changeObjRational (const VectorRational &obj)
 changes objective function vector to obj More...
 
void changeObjRational (int i, const Rational &obj)
 changes objective coefficient of column i to obj More...
 
void changeElementRational (int i, int j, const Rational &val)
 changes matrix entry in row i and column j to val More...
 
void removeRowRational (int i)
 removes row i More...
 
void removeRowsRational (int perm[])
 removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where row i has been moved to; note that perm must point to an array of size at least numRowsRational() More...
 
void removeRowsRational (int idx[], int n, int perm[]=0)
 remove all rows with indices in array idx of size n; an array perm of size numRowsRational() may be passed as buffer memory More...
 
void removeRowRangeRational (int start, int end, int perm[]=0)
 removes rows start to end including both; an array perm of size numRowsRational() may be passed as buffer memory More...
 
void removeColRational (int i)
 removes column i More...
 
void removeColsRational (int perm[])
 removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where column i has been moved to; note that perm must point to an array of size at least numColsRational() More...
 
void removeColsRational (int idx[], int n, int perm[]=0)
 remove all columns with indices in array idx of size n; an array perm of size numColsRational() may be passed as buffer memory More...
 
void removeColRangeRational (int start, int end, int perm[]=0)
 removes columns start to end including both; an array perm of size numColsRational() may be passed as buffer memory More...
 
void clearLPRational ()
 clears the LP More...
 
void syncLPRational ()
 synchronizes rational LP with real LP, i.e., copies real LP to rational LP, if sync mode is manual More...
 
SPxSolver::Status solve ()
 solves the LP More...
 
SPxSolver::Status status () const
 returns the current solver status More...
 
bool hasPrimal () const
 is a primal feasible solution available? More...
 
bool hasPrimalRay () const
 is a primal unbounded ray available? More...
 
bool hasDual () const
 is a dual feasible solution available? More...
 
bool hasDualFarkas () const
 is Farkas proof of infeasibility available? More...
 
Real objValueReal ()
 returns the objective value if a primal solution is available More...
 
bool getPrimalReal (VectorReal &vector)
 gets the primal solution vector if available; returns true on success More...
 
bool getSlacksReal (VectorReal &vector)
 gets the vector of slack values if available; returns true on success More...
 
bool getPrimalRayReal (VectorReal &vector)
 gets the primal ray if available; returns true on success More...
 
bool getDualReal (VectorReal &vector)
 gets the dual solution vector if available; returns true on success More...
 
bool getRedCostReal (VectorReal &vector)
 gets the vector of reduced cost values if available; returns true on success More...
 
bool getDualFarkasReal (VectorReal &vector)
 gets the Farkas proof if available; returns true on success More...
 
bool getBoundViolationReal (Real &maxviol, Real &sumviol)
 gets violation of bounds; returns true on success More...
 
bool getRowViolationReal (Real &maxviol, Real &sumviol)
 gets violation of constraints; returns true on success More...
 
bool getRedCostViolationReal (Real &maxviol, Real &sumviol)
 gets violation of reduced costs; returns true on success More...
 
bool getDualViolationReal (Real &maxviol, Real &sumviol)
 gets violation of dual multipliers; returns true on success More...
 
Rational objValueRational ()
 returns the objective value if a primal solution is available More...
 
bool getPrimalRational (VectorRational &vector)
 gets the primal solution vector if available; returns true on success More...
 
bool getSlacksRational (VectorRational &vector)
 gets the vector of slack values if available; returns true on success More...
 
bool getPrimalRayRational (VectorRational &vector)
 gets the primal ray if LP is unbounded; returns true on success More...
 
bool getDualRational (VectorRational &vector)
 gets the dual solution vector if available; returns true on success More...
 
bool getRedCostRational (VectorRational &vector)
 gets the vector of reduced cost values if available; returns true on success More...
 
bool getDualFarkasRational (VectorRational &vector)
 gets the Farkas proof if LP is infeasible; returns true on success More...
 
bool getBoundViolationRational (Rational &maxviol, Rational &sumviol)
 gets violation of bounds; returns true on success More...
 
bool getRowViolationRational (Rational &maxviol, Rational &sumviol)
 gets violation of constraints; returns true on success More...
 
bool getRedCostViolationRational (Rational &maxviol, Rational &sumviol)
 gets violation of reduced costs; returns true on success More...
 
bool getDualViolationRational (Rational &maxviol, Rational &sumviol)
 gets violation of dual multipliers; returns true on success More...
 
int totalSizePrimalRational (const int base=2)
 get size of primal solution More...
 
int totalSizeDualRational (const int base=2)
 get size of dual solution More...
 
int dlcmSizePrimalRational (const int base=2)
 get size of least common multiple of denominators in primal solution More...
 
int dlcmSizeDualRational (const int base=2)
 get size of least common multiple of denominators in dual solution More...
 
int dmaxSizePrimalRational (const int base=2)
 get size of largest denominator in primal solution More...
 
int dmaxSizeDualRational (const int base=2)
 get size of largest denominator in dual solution More...
 
bool hasBasis () const
 is an advanced starting basis available? More...
 
SPxBasis::SPxStatus basisStatus () const
 returns the current basis status More...
 
SPxSolver::VarStatus basisRowStatus (int row) const
 returns basis status for a single row More...
 
SPxSolver::VarStatus basisColStatus (int col) const
 returns basis status for a single column More...
 
void getBasis (SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[]) const
 gets current basis via arrays of statuses More...
 
void getBasisInd (int *bind) const
 gets the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m More...
 
bool getEstimatedCondition (Real &condition)
 computes an estimated condition number for the current basis matrix using the power method; returns true on success More...
 
bool getExactCondition (Real &condition)
 computes the exact condition number for the current basis matrix using the power method; returns true on success More...
 
bool getBasisInverseRowReal (int r, Real *coef, int *inds=NULL, int *ninds=NULL)
 computes row r of basis inverse; returns true on success More...
 
bool getBasisInverseColReal (int c, Real *coef, int *inds=NULL, int *ninds=NULL)
 computes column c of basis inverse; returns true on success More...
 
bool getBasisInverseTimesVecReal (Real *rhs, Real *sol)
 computes dense solution of basis matrix B * sol = rhs; returns true on success More...
 
void setBasis (SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[])
 sets starting basis via arrays of statuses More...
 
void clearBasis ()
 clears starting basis More...
 
int numIterations () const
 number of iterations since last call to solve More...
 
Real solveTime () const
 time spent in last call to solve More...
 
std::string statisticString () const
 statistical information in form of a string More...
 
const char * getStarterName ()
 name of starter More...
 
const char * getSimplifierName ()
 name of simplifier More...
 
const char * getScalerName ()
 name of scaling method More...
 
const char * getPricerName ()
 name of currently loaded pricer More...
 
const char * getRatiotesterName ()
 name of currently loaded ratiotester More...
 
bool readFile (const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
 reads LP file in LP or MPS format according to READMODE parameter; gets row names, column names, and integer variables if desired; returns true on success More...
 
bool writeFileReal (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0) const
 writes real LP to file; LP or MPS format is chosen from the extension in filename; if rowNames and colNames are NULL, default names are used; if intVars is not NULL, the variables contained in it are marked as integer; returns true on success More...
 
bool writeFileRational (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0) const
 writes rational LP to file; LP or MPS format is chosen from the extension in filename; if rowNames and colNames are NULL, default names are used; if intVars is not NULL, the variables contained in it are marked as integer; returns true on success More...
 
bool readBasisFile (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0)
 reads basis information from filename and returns true on success; if rowNames and colNames are NULL, default names are assumed; returns true on success More...
 
bool writeBasisFile (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const bool cpxFormat=false) const
 writes basis information to filename; if rowNames and colNames are NULL, default names are used; returns true on success More...
 
void writeStateReal (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const bool cpxFormat=false) const
 writes internal LP, basis information, and parameter settings; if rowNames and colNames are NULL, default names are used More...
 
void writeStateRational (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const bool cpxFormat=false) const
 writes internal LP, basis information, and parameter settings; if rowNames and colNames are NULL, default names are used More...
 
void printSolutionStatistics (std::ostream &os)
 prints solution statistics More...
 
void printSolvingStatistics (std::ostream &os)
 prints statistics on solving process More...
 
void printShortStatistics (std::ostream &os)
 prints short statistics More...
 
void printStatistics (std::ostream &os)
 prints complete statistics More...
 
void printStatus (std::ostream &os, SPxSolver::Status status)
 prints status More...
 
void printVersion () const
 prints version and compilation options More...
 
bool areLPsInSync (const bool checkVecVals=true, const bool checkMatVals=false, const bool quiet=false) const
 checks if real LP and rational LP are in sync; dimensions will always be compared, vector and matrix values only if the respective parameter is set to true. If quiet is set to true the function will only display which vectors are different. More...
 

Private Member Functions

void _ensureDSVectorRationalMemory (DSVectorRational &vec, const int newmax) const
 extends sparse vector to hold newmax entries if and only if it holds no more free entries More...
 
void _idxToPerm (int *idx, int idxSize, int *perm, int permSize) const
 creates a permutation for removing rows/columns from an array of indices More...
 
void _rangeToPerm (int start, int end, int *perm, int permSize) const
 creates a permutation for removing rows/columns from a range of indices More...
 
bool _isConsistent () const
 checks consistency More...
 
bool _isSolveStopped (bool &stoppedTime, bool &stoppedIter) const
 should solving process be stopped? More...
 
RangeType _rangeTypeReal (const Real &lower, const Real &upper) const
 determines RangeType from real bounds More...
 
RangeType _rangeTypeRational (const Rational &lower, const Rational &upper) const
 determines RangeType from rational bounds More...
 
RangeType _switchRangeType (const RangeType &rangeType) const
 switches RANGETYPE_LOWER to RANGETYPE_UPPER and vice versa More...
 
bool _lowerFinite (const RangeType &rangeType) const
 checks whether RangeType corresponds to finite lower bound More...
 
bool _upperFinite (const RangeType &rangeType) const
 checks whether RangeType corresponds to finite upper bound More...
 
void _addRowReal (const LPRowReal &lprow)
 adds a single row to the real LP and adjusts basis More...
 
void _addRowReal (Real lhs, const SVectorReal &lprow, Real rhs)
 adds a single row to the real LP and adjusts basis More...
 
void _addRowsReal (const LPRowSetReal &lprowset)
 adds multiple rows to the real LP and adjusts basis More...
 
void _addColReal (const LPColReal &lpcol)
 adds a single column to the real LP and adjusts basis More...
 
void _addColReal (Real obj, Real lower, const SVectorReal &lpcol, Real upper)
 adds a single column to the real LP and adjusts basis More...
 
void _addColsReal (const LPColSetReal &lpcolset)
 adds multiple columns to the real LP and adjusts basis More...
 
void _changeRowReal (int i, const LPRowReal &lprow)
 replaces row i with lprow and adjusts basis More...
 
void _changeLhsReal (const VectorReal &lhs)
 changes left-hand side vector for constraints to lhs and adjusts basis More...
 
void _changeLhsReal (int i, const Real &lhs)
 changes left-hand side of row i to lhs and adjusts basis More...
 
void _changeRhsReal (const VectorReal &rhs)
 changes right-hand side vector to rhs and adjusts basis More...
 
void _changeRhsReal (int i, const Real &rhs)
 changes right-hand side of row i to rhs and adjusts basis More...
 
void _changeRangeReal (const VectorReal &lhs, const VectorReal &rhs)
 changes left- and right-hand side vectors and adjusts basis More...
 
void _changeRangeReal (int i, const Real &lhs, const Real &rhs)
 changes left- and right-hand side of row i and adjusts basis More...
 
void _changeColReal (int i, const LPColReal &lpcol)
 replaces column i with lpcol and adjusts basis More...
 
void _changeLowerReal (const VectorReal &lower)
 changes vector of lower bounds to lower and adjusts basis More...
 
void _changeLowerReal (int i, const Real &lower)
 changes lower bound of column i to lower and adjusts basis More...
 
void _changeUpperReal (const VectorReal &upper)
 changes vector of upper bounds to upper and adjusts basis More...
 
void _changeUpperReal (int i, const Real &upper)
 changes i 'th upper bound to upper and adjusts basis More...
 
void _changeBoundsReal (const VectorReal &lower, const VectorReal &upper)
 changes vectors of column bounds to lower and upper and adjusts basis More...
 
void _changeBoundsReal (int i, const Real &lower, const Real &upper)
 changes bounds of column i to lower and upper and adjusts basis More...
 
void _changeElementReal (int i, int j, const Real &val)
 changes matrix entry in row i and column j to val and adjusts basis More...
 
void _removeRowReal (int i)
 removes row i and adjusts basis More...
 
void _removeRowsReal (int perm[])
 removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where row i has been moved to; note that perm must point to an array of size at least numRowsReal() More...
 
void _removeRowsReal (int idx[], int n, int perm[])
 remove all rows with indices in array idx of size n; an array perm of size numRowsReal() may be passed as buffer memory More...
 
void _removeRowRangeReal (int start, int end, int perm[])
 removes rows start to end including both; an array perm of size numRowsReal() may be passed as buffer memory More...
 
void _removeColReal (int i)
 removes column i More...
 
void _removeColsReal (int perm[])
 removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where column i has been moved to; note that perm must point to an array of size at least numColsReal() More...
 
void _removeColsReal (int idx[], int n, int perm[])
 remove all columns with indices in array idx of size n; an array perm of size numColsReal() may be passed as buffer memory More...
 
void _removeColRangeReal (int start, int end, int perm[])
 removes columns start to end including both; an array perm of size numColsReal() may be passed as buffer memory More...
 
void _invalidateSolution ()
 invalidates solution More...
 
void _enableSimplifierAndScaler ()
 enables simplifier and scaler according to current parameters More...
 
void _disableSimplifierAndScaler ()
 disables simplifier and scaler More...
 
void _ensureRationalLP ()
 ensures that the rational LP is available; performs no sync More...
 
void _ensureRealLPLoaded ()
 ensures that the real LP and the basis are loaded in the solver; performs no sync More...
 
void _solveRealLPAndRecordStatistics ()
 call floating-point solver and update statistics on iterations etc. More...
 
bool _readFileReal (const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
 reads real LP in LP or MPS format from file and returns true on success; gets row names, column names, and integer variables if desired More...
 
bool _readFileRational (const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
 reads rational LP in LP or MPS format from file and returns true on success; gets row names, column names, and integer variables if desired More...
 
void _recomputeRangeTypesReal ()
 recomputes range types from scratch using real LP More...
 
void _recomputeRangeTypesRational ()
 recomputes range types from scratch using rational LP More...
 
void _syncLPReal (bool time=true)
 synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, without looking at the sync mode More...
 
void _syncLPRational (bool time=true)
 synchronizes rational LP with real LP, i.e., copies real LP to rational LP, without looking at the sync mode More...
 
void _syncRealSolution ()
 synchronizes real solution with rational solution, i.e., copies real solution to rational solution More...
 
void _syncRationalSolution ()
 synchronizes rational solution with real solution, i.e., copies (rounded) rational solution to real solution More...
 
const UnitVectorRational_unitVectorRational (const int i)
 returns pointer to a constant unit vector available until destruction of the SoPlex class More...
 
bool _parseSettingsLine (char *line, const int lineNumber)
 parses one line in a settings file and returns true on success; note that the string is modified More...
 
void _solveRational ()
 solves rational LP More...
 
void _performOptIRStable (SolRational &sol, bool acceptUnbounded, bool acceptInfeasible, int minRounds, bool &primalFeasible, bool &dualFeasible, bool &infeasible, bool &unbounded, bool &stopped, bool &stoppedIter, bool &error)
 solves current problem with iterative refinement and recovery mechanism More...
 
void _performUnboundedIRStable (SolRational &sol, bool &hasUnboundedRay, bool &stopped, bool &stoppedIter, bool &error)
 performs iterative refinement on the auxiliary problem for testing unboundedness More...
 
void _performFeasIRStable (SolRational &sol, bool &withDualFarkas, bool &stopped, bool &stoppedIter, bool &error)
 performs iterative refinement on the auxiliary problem for testing feasibility More...
 
void _lift ()
 reduces matrix coefficient in absolute value by the lifting procedure of Thiele et al. 2013 More...
 
void _project (SolRational &sol)
 undoes lifting More...
 
void _storeBasis ()
 store basis More...
 
void _restoreBasis ()
 restore basis More...
 
void _storeLPReal ()
 stores objective, bounds, and sides of real LP More...
 
void _restoreLPReal ()
 restores objective, bounds, and sides of real LP More...
 
void _transformEquality ()
 introduces slack variables to transform inequality constraints into equations for both rational and real LP, which should be in sync More...
 
void _untransformEquality (SolRational &sol)
 undoes transformation to equality form More...
 
void _transformUnbounded ()
 transforms LP to unboundedness problem by moving the objective function to the constraints, changing right-hand side and bounds to zero, and adding an auxiliary variable for the decrease in the objective function More...
 
void _untransformUnbounded (SolRational &sol, bool unbounded)
 undoes transformation to unboundedness problem More...
 
void _transformFeasibility ()
 transforms LP to feasibility problem by removing the objective function, shifting variables, and homogenizing the right-hand side More...
 
void _untransformFeasibility (SolRational &sol, bool infeasible)
 undoes transformation to feasibility problem More...
 
void _computeInfeasBox (SolRational &sol, bool transformed)
 
SPxSolver::Status _solveRealForRational (bool fromscratch, VectorReal &primal, VectorReal &dual, DataArray< SPxSolver::VarStatus > &basisStatusRows, DataArray< SPxSolver::VarStatus > &basisStatusCols, bool &returnedBasis)
 solves real LP during iterative refinement More...
 
SPxSolver::Status _solveRealStable (bool acceptUnbounded, bool acceptInfeasible, VectorReal &primal, VectorReal &dual, DataArray< SPxSolver::VarStatus > &basisStatusRows, DataArray< SPxSolver::VarStatus > &basisStatusCols, bool &returnedBasis, const bool forceNoSimplifier=false)
 solves real LP with recovery mechanism More...
 
void _factorizeColumnRational (SolRational &sol, DataArray< SPxSolver::VarStatus > &basisStatusRows, DataArray< SPxSolver::VarStatus > &basisStatusCols, bool &stoppedTime, bool &stoppedIter, bool &error, bool &optimal)
 factorizes rational basis matrix in column representation More...
 
bool _reconstructSolutionRational (SolRational &sol, DataArray< SPxSolver::VarStatus > &basisStatusRows, DataArray< SPxSolver::VarStatus > &basisStatusCols, const Rational &denomBoundSquared)
 attempts rational reconstruction of primal-dual solution More...
 
void _solveReal ()
 solves real LP More...
 
void _evaluateSolutionReal (SPxSimplifier::Result simplificationStatus)
 checks result of the solving process and solves again without preprocessing if necessary More...
 
void _preprocessAndSolveReal (bool applyPreprocessing)
 solves real LP with/without preprocessing More...
 
void _resolveWithoutPreprocessing (SPxSimplifier::Result simplificationStatus)
 loads original problem into solver and solves again after it has been solved to optimality with preprocessing More...
 
void _storeSolutionReal ()
 stores solution of the real LP; before calling this, the real LP must be loaded in the solver and solved (again) More...
 

Private Attributes

Statistics_statistics
 statistics since last call to solveReal() or solveRational() More...
 
Settings_currentSettings
 
Rational _rationalPosInfty
 
Rational _rationalNegInfty
 
Rational _rationalFeastol
 
Rational _rationalOpttol
 
Rational _rationalMaxscaleincr
 
SPxSolver _solver
 
SLUFactor _slufactor
 
SPxMainSM _simplifierMainSM
 
SPxEquiliSC _scalerUniequi
 
SPxEquiliSC _scalerBiequi
 
SPxGeometSC _scalerGeo1
 
SPxGeometSC _scalerGeo8
 
SPxWeightST _starterWeight
 
SPxSumST _starterSum
 
SPxVectorST _starterVector
 
SPxAutoPR _pricerAuto
 
SPxDantzigPR _pricerDantzig
 
SPxParMultPR _pricerParMult
 
SPxDevexPR _pricerDevex
 
SPxSteepPR _pricerQuickSteep
 
SPxSteepExPR _pricerSteep
 
SPxDefaultRT _ratiotesterTextbook
 
SPxHarrisRT _ratiotesterHarris
 
SPxFastRT _ratiotesterFast
 
SPxBoundFlippingRT _ratiotesterBoundFlipping
 
SPxLPReal_realLP
 
SPxSimplifier_simplifier
 
SPxScaler_scaler
 
SPxStarter_starter
 
bool _isRealLPLoaded
 
DVectorReal _manualLower
 
DVectorReal _manualUpper
 
DVectorReal _manualLhs
 
DVectorReal _manualRhs
 
DVectorReal _manualObj
 
SPxLPReal _manualRealLP
 
SPxSolver::Status _status
 
int _lastSolveMode
 
DataArray< SPxSolver::VarStatus_basisStatusRows
 
DataArray< SPxSolver::VarStatus_basisStatusCols
 
SolReal _solReal
 
SolRational _solRational
 
SolRational _workSol
 
bool _hasBasis
 
bool _hasSolReal
 
bool _hasSolRational
 
enum  BoolParam {
  LIFTING = 0, EQTRANS = 1, TESTDUALINF = 2, RATFAC = 3,
  ACCEPTCYCLING = 4, RATREC = 5, POWERSCALING = 6, RATFACJUMP = 7,
  FEASRELAX = 8, ROWBOUNDFLIPS = 9, BOOLPARAM_COUNT = 10
}
 boolean parameters More...
 
enum  IntParam {
  OBJSENSE = 0, REPRESENTATION = 1, ALGORITHM = 2, FACTOR_UPDATE_TYPE = 3,
  FACTOR_UPDATE_MAX = 4, ITERLIMIT = 5, REFLIMIT = 6, STALLREFLIMIT = 7,
  DISPLAYFREQ = 8, VERBOSITY = 9, SIMPLIFIER = 10, SCALER = 11,
  STARTER = 12, PRICER = 13, RATIOTESTER = 14, SYNCMODE = 15,
  READMODE = 16, SOLVEMODE = 17, CHECKMODE = 18, TIMER = 19,
  HYPER_PRICING = 20, RATFAC_MINSTALLS = 21, INTPARAM_COUNT = 22
}
 integer parameters More...
 
enum  { OBJSENSE_MINIMIZE = -1, OBJSENSE_MAXIMIZE = 1 }
 values for parameter OBJSENSE More...
 
enum  { REPRESENTATION_AUTO = 0, REPRESENTATION_COLUMN = 1, REPRESENTATION_ROW = 2 }
 values for parameter REPRESENTATION More...
 
enum  { ALGORITHM_PRIMAL = 0, ALGORITHM_DUAL = 1 }
 values for parameter ALGORITHM More...
 
enum  { FACTOR_UPDATE_TYPE_ETA = 0, FACTOR_UPDATE_TYPE_FT = 1 }
 values for parameter FACTOR_UPDATE_TYPE More...
 
enum  {
  VERBOSITY_ERROR = 0, VERBOSITY_WARNING = 1, VERBOSITY_DEBUG = 2, VERBOSITY_NORMAL = 3,
  VERBOSITY_HIGH = 4, VERBOSITY_FULL = 5
}
 values for parameter VERBOSITY More...
 
enum  { SIMPLIFIER_OFF = 0, SIMPLIFIER_AUTO = 1 }
 values for parameter SIMPLIFIER More...
 
enum  {
  SCALER_OFF = 0, SCALER_UNIEQUI = 1, SCALER_BIEQUI = 2, SCALER_GEO1 = 3,
  SCALER_GEO8 = 4
}
 values for parameter SCALER More...
 
enum  { STARTER_OFF = 0, STARTER_WEIGHT = 1, STARTER_SUM = 2, STARTER_VECTOR = 3 }
 values for parameter STARTER More...
 
enum  {
  PRICER_AUTO = 0, PRICER_DANTZIG = 1, PRICER_PARMULT = 2, PRICER_DEVEX = 3,
  PRICER_QUICKSTEEP = 4, PRICER_STEEP = 5
}
 values for parameter PRICER More...
 
enum  { RATIOTESTER_TEXTBOOK = 0, RATIOTESTER_HARRIS = 1, RATIOTESTER_FAST = 2, RATIOTESTER_BOUNDFLIPPING = 3 }
 values for parameter RATIOTESTER More...
 
enum  { SYNCMODE_ONLYREAL = 0, SYNCMODE_AUTO = 1, SYNCMODE_MANUAL = 2 }
 values for parameter SYNCMODE More...
 
enum  { READMODE_REAL = 0, READMODE_RATIONAL = 1 }
 values for parameter READMODE More...
 
enum  { SOLVEMODE_REAL = 0, SOLVEMODE_AUTO = 1, SOLVEMODE_RATIONAL = 2 }
 values for parameter SOLVEMODE More...
 
enum  { CHECKMODE_REAL = 0, CHECKMODE_AUTO = 1, CHECKMODE_RATIONAL = 2 }
 values for parameter CHECKMODE More...
 
enum  { TIMER_OFF = 0, TIMER_CPU = 1, TIMER_WALLCLOCK = 2 }
 values for parameter TIMER More...
 
enum  { HYPER_PRICING_OFF = 0, HYPER_PRICING_AUTO = 1, HYPER_PRICING_ON = 2 }
 values for parameter HYPER_PRICING More...
 
enum  RealParam {
  FEASTOL = 0, OPTTOL = 1, EPSILON_ZERO = 2, EPSILON_FACTORIZATION = 3,
  EPSILON_UPDATE = 4, EPSILON_PIVOT = 5, INFTY = 6, TIMELIMIT = 7,
  OBJLIMIT_LOWER = 8, OBJLIMIT_UPPER = 9, FPFEASTOL = 10, FPOPTTOL = 11,
  MAXSCALEINCR = 12, LIFTMINVAL = 13, LIFTMAXVAL = 14, SPARSITY_THRESHOLD = 15,
  REPRESENTATION_SWITCH = 16, RATREC_FREQ = 17, MINRED = 18, REALPARAM_COUNT = 19
}
 real parameters More...
 
SPxOut spxout
 
bool boolParam (const BoolParam param) const
 returns boolean parameter value More...
 
int intParam (const IntParam param) const
 returns integer parameter value More...
 
Real realParam (const RealParam param) const
 returns real parameter value More...
 
const Settingssettings () const
 returns current parameter settings More...
 
bool setBoolParam (const BoolParam param, const bool value, const bool quiet=false, const bool init=false)
 sets boolean parameter value; returns true on success More...
 
bool setIntParam (const IntParam param, const int value, const bool quiet=false, const bool init=false)
 sets integer parameter value; returns true on success More...
 
bool setRealParam (const RealParam param, const Real value, const bool quiet=false, const bool init=false)
 sets real parameter value; returns true on success More...
 
bool setSettings (const Settings &newSettings, const bool quiet=false, const bool init=false)
 sets parameter settings; returns true on success More...
 
void printUserSettings ()
 print non-default parameter values More...
 
bool saveSettingsFile (const char *filename, const bool onlyChanged=false) const
 writes settings file; returns true on success More...
 
bool loadSettingsFile (const char *filename)
 reads settings file; returns true on success More...
 
bool parseSettingsString (char *line)
 parses one setting string and returns true on success; note that string is modified More...
 
enum  RangeType {
  RANGETYPE_FREE = 0, RANGETYPE_LOWER = 1, RANGETYPE_UPPER = 2, RANGETYPE_BOXED = 3,
  RANGETYPE_FIXED = 4
}
 type of bounds and sides More...
 
SPxLPRational_rationalLP
 
LPColSetRational _slackCols
 
DVectorRational _unboundedLower
 
DVectorRational _unboundedUpper
 
DVectorRational _unboundedLhs
 
DVectorRational _unboundedRhs
 
DSVectorRational _tauColVector
 
DVectorRational _feasObj
 
DVectorRational _feasLhs
 
DVectorRational _feasRhs
 
DVectorRational _feasLower
 
DVectorRational _feasUpper
 
DVectorRational _modLower
 
DVectorRational _modUpper
 
DVectorRational _modLhs
 
DVectorRational _modRhs
 
DVectorRational _modObj
 
DSVectorRational _primalDualDiff
 
DataArray< SPxSolver::VarStatus_storedBasisStatusRows
 
DataArray< SPxSolver::VarStatus_storedBasisStatusCols
 
DataArray< UnitVectorRational * > _unitMatrixRational
 
bool _storedBasis
 
int _beforeLiftRows
 
int _beforeLiftCols
 
DataArray< RangeType_colTypes
 
DataArray< RangeType_rowTypes
 

Detailed Description

Preconfigured SoPlex LP-solver.

Definition at line 86 of file soplex.h.

Member Enumeration Documentation

anonymous enum

values for parameter OBJSENSE

Enumerator
OBJSENSE_MINIMIZE 

minimization

OBJSENSE_MAXIMIZE 

maximization

Definition at line 919 of file soplex.h.

anonymous enum

values for parameter RATIOTESTER

Enumerator
RATIOTESTER_TEXTBOOK 

textbook ratio test without stabilization

RATIOTESTER_HARRIS 

standard Harris ratio test

RATIOTESTER_FAST 

modified Harris ratio test

RATIOTESTER_BOUNDFLIPPING 

bound flipping ratio test for long steps in the dual simplex

Definition at line 1051 of file soplex.h.

anonymous enum

values for parameter SYNCMODE

Enumerator
SYNCMODE_ONLYREAL 

store only real LP

SYNCMODE_AUTO 

automatic sync of real and rational LP

SYNCMODE_MANUAL 

user sync of real and rational LP

Definition at line 1067 of file soplex.h.

anonymous enum

values for parameter READMODE

Enumerator
READMODE_REAL 

standard floating-point parsing

READMODE_RATIONAL 

rational parsing

Definition at line 1080 of file soplex.h.

anonymous enum

values for parameter SOLVEMODE

Enumerator
SOLVEMODE_REAL 

apply standard floating-point algorithm

SOLVEMODE_AUTO 

decide depending on tolerances whether to apply iterative refinement

SOLVEMODE_RATIONAL 

force iterative refinement

Definition at line 1090 of file soplex.h.

anonymous enum

values for parameter CHECKMODE

Enumerator
CHECKMODE_REAL 

floating-point check

CHECKMODE_AUTO 

decide according to READMODE

CHECKMODE_RATIONAL 

rational check

Definition at line 1103 of file soplex.h.

anonymous enum

values for parameter TIMER

Enumerator
TIMER_OFF 

disable timing

TIMER_CPU 

cpu or user time

TIMER_WALLCLOCK 

wallclock time

Definition at line 1116 of file soplex.h.

anonymous enum

values for parameter HYPER_PRICING

Enumerator
HYPER_PRICING_OFF 

never

HYPER_PRICING_AUTO 

decide according to problem size

HYPER_PRICING_ON 

always

Definition at line 1129 of file soplex.h.

anonymous enum

values for parameter REPRESENTATION

Enumerator
REPRESENTATION_AUTO 

automatic choice according to number of rows and columns

REPRESENTATION_COLUMN 

column representation Ax - s = 0, lower <= x <= upper, lhs <= s <= rhs

REPRESENTATION_ROW 

row representation (lower,lhs) <= (x,Ax) <= (upper,rhs)

Definition at line 929 of file soplex.h.

anonymous enum

values for parameter ALGORITHM

Enumerator
ALGORITHM_PRIMAL 

primal simplex algorithm, i.e., entering for column and leaving for row representation

ALGORITHM_DUAL 

dual simplex algorithm, i.e., leaving for column and entering for row representation

Definition at line 942 of file soplex.h.

anonymous enum

values for parameter FACTOR_UPDATE_TYPE

Enumerator
FACTOR_UPDATE_TYPE_ETA 

product form update

FACTOR_UPDATE_TYPE_FT 

Forrest-Tomlin type update.

Definition at line 952 of file soplex.h.

anonymous enum

values for parameter VERBOSITY

Enumerator
VERBOSITY_ERROR 

only error output

VERBOSITY_WARNING 

only error and warning output

VERBOSITY_DEBUG 

only error, warning, and debug output

VERBOSITY_NORMAL 

standard verbosity level

VERBOSITY_HIGH 

high verbosity level

VERBOSITY_FULL 

full verbosity level

Definition at line 962 of file soplex.h.

anonymous enum

values for parameter SIMPLIFIER

Enumerator
SIMPLIFIER_OFF 

no simplifier

SIMPLIFIER_AUTO 

automatic choice

Definition at line 984 of file soplex.h.

anonymous enum

values for parameter SCALER

Enumerator
SCALER_OFF 

no scaler

SCALER_UNIEQUI 

equilibrium scaling on rows or columns

SCALER_BIEQUI 

equilibrium scaling on rows and columns

SCALER_GEO1 

geometric mean scaling on rows and columns, max 1 round

SCALER_GEO8 

geometric mean scaling on rows and columns, max 8 rounds

Definition at line 994 of file soplex.h.

anonymous enum

values for parameter STARTER

Enumerator
STARTER_OFF 

slack basis

STARTER_WEIGHT 

greedy crash basis weighted by objective, bounds, and sides

STARTER_SUM 

crash basis from a greedy solution

STARTER_VECTOR 

generic solution-based crash basis

Definition at line 1013 of file soplex.h.

anonymous enum

values for parameter PRICER

Enumerator
PRICER_AUTO 

automatic pricer

PRICER_DANTZIG 

Dantzig pricer.

PRICER_PARMULT 

partial multiple pricer based on Dantzig pricing

PRICER_DEVEX 

devex pricer

PRICER_QUICKSTEEP 

steepest edge pricer with initialization to unit norms

PRICER_STEEP 

steepest edge pricer with exact initialization of norms

Definition at line 1029 of file soplex.h.

enum BoolParam

boolean parameters

Enumerator
LIFTING 

should lifting be used to reduce range of nonzero matrix coefficients?

EQTRANS 

should LP be transformed to equality form before a rational solve?

TESTDUALINF 

should dual infeasibility be tested in order to try to return a dual solution even if primal infeasible?

RATFAC 

should a rational factorization be performed after iterative refinement?

ACCEPTCYCLING 

should cycling solutions be accepted during iterative refinement?

RATREC 

apply rational reconstruction after each iterative refinement?

POWERSCALING 

round scaling factors for iterative refinement to powers of two?

RATFACJUMP 

continue iterative refinement with exact basic solution if not optimal?

FEASRELAX 

should feasibility be tested with relaxed bounds and sides?

ROWBOUNDFLIPS 

use bound flipping also for row representation?

BOOLPARAM_COUNT 

number of boolean parameters

Definition at line 809 of file soplex.h.

enum IntParam

integer parameters

Enumerator
OBJSENSE 

objective sense

REPRESENTATION 

type of computational form, i.e., column or row representation

ALGORITHM 

type of algorithm, i.e., primal or dual

FACTOR_UPDATE_TYPE 

type of LU update

FACTOR_UPDATE_MAX 

maximum number of updates without fresh factorization

ITERLIMIT 

iteration limit (-1 if unlimited)

REFLIMIT 

refinement limit (-1 if unlimited)

STALLREFLIMIT 

stalling refinement limit (-1 if unlimited)

DISPLAYFREQ 

display frequency

VERBOSITY 

verbosity level

SIMPLIFIER 

type of simplifier

SCALER 

type of scaler

STARTER 

type of starter used to create crash basis

PRICER 

type of pricer

RATIOTESTER 

type of ratio test

SYNCMODE 

mode for synchronizing real and rational LP

READMODE 

mode for reading LP files

SOLVEMODE 

mode for iterative refinement strategy

CHECKMODE 

mode for a posteriori feasibility checks

TIMER 

type of timer

HYPER_PRICING 

mode for hyper sparse pricing

RATFAC_MINSTALLS 

minimum number of stalling refinements since last pivot to trigger rational factorization

INTPARAM_COUNT 

number of integer parameters

Definition at line 846 of file soplex.h.

enum RangeType
private

type of bounds and sides

Enumerator
RANGETYPE_FREE 

both bounds are infinite

RANGETYPE_LOWER 

lower bound is finite, upper bound is infinite

RANGETYPE_UPPER 

upper bound is finite, lower bound is infinite

RANGETYPE_BOXED 

lower and upper bound finite, but different

RANGETYPE_FIXED 

lower bound equals upper bound

Definition at line 1401 of file soplex.h.

enum RealParam

real parameters

Enumerator
FEASTOL 

primal feasibility tolerance

OPTTOL 

dual feasibility tolerance

EPSILON_ZERO 

general zero tolerance

EPSILON_FACTORIZATION 

zero tolerance used in factorization

EPSILON_UPDATE 

zero tolerance used in update of the factorization

EPSILON_PIVOT 

pivot zero tolerance used in factorization

INFTY 

infinity threshold

TIMELIMIT 

time limit in seconds (INFTY if unlimited)

OBJLIMIT_LOWER 

lower limit on objective value

OBJLIMIT_UPPER 

upper limit on objective value

FPFEASTOL 

working tolerance for feasibility in floating-point solver during iterative refinement

FPOPTTOL 

working tolerance for optimality in floating-point solver during iterative refinement

MAXSCALEINCR 

maximum increase of scaling factors between refinements

LIFTMINVAL 

lower threshold in lifting (nonzero matrix coefficients with smaller absolute value will be reformulated)

LIFTMAXVAL 

upper threshold in lifting (nonzero matrix coefficients with larger absolute value will be reformulated)

SPARSITY_THRESHOLD 

sparse pricing threshold (#violations < dimension * SPARSITY_THRESHOLD activates sparse pricing)

REPRESENTATION_SWITCH 

threshold on number of rows vs. number of columns for switching from column to row representations in auto mode

RATREC_FREQ 

geometric frequency at which to apply rational reconstruction

MINRED 

minimal reduction (sum of removed rows/cols) to continue simplification

REALPARAM_COUNT 

number of real parameters

Definition at line 1142 of file soplex.h.

Constructor & Destructor Documentation

SoPlex ( const SoPlex rhs)

copy constructor

Todo:
improve performance by implementing a separate copy constructor

Definition at line 711 of file soplex.cpp.

References SoPlex::_currentSettings, SoPlex::_statistics, and soplex::spx_alloc().

Member Function Documentation

void _addColReal ( Real  obj,
Real  lower,
const SVectorReal lpcol,
Real  upper 
)
private
void _addRowReal ( const LPRowReal lprow)
private
void _addRowReal ( Real  lhs,
const SVectorReal lprow,
Real  rhs 
)
private
void _changeBoundsReal ( int  i,
const Real lower,
const Real upper 
)
private
void _changeElementReal ( int  i,
int  j,
const Real val 
)
private
void _changeRangeReal ( int  i,
const Real lhs,
const Real rhs 
)
private
void _computeInfeasBox ( SolRational sol,
bool  transformed 
)
private

computes radius of infeasibility box implied by an approximate Farkas' proof

Given constraints of the form $ lhs <= Ax <= rhs $, a farkas proof y should satisfy $ y^T A = 0 $ and $ y_+^T lhs - y_-^T rhs > 0 $, where $ y_+, y_- $ denote the positive and negative parts of $ y $. If $ y $ is approximate, it may not satisfy $ y^T A = 0 $ exactly, but the proof is still valid as long as the following holds for all potentially feasible $ x $:

\[ y^T Ax < (y_+^T lhs - y_-^T rhs) (*) \]

we may therefore calculate $ y^T A $ and $ y_+^T lhs - y_-^T rhs $ exactly and check if the upper and lower bounds on $ x $ imply that all feasible $ x $ satisfy (*), and if not then compute bounds on $ x $ to guarantee (*). The simplest way to do this is to compute

\[ B = (y_+^T lhs - y_-^T rhs) / \sum_i(|(y^T A)_i|) \]

noting that if every component of $ x $ has $ |x_i| < B $, then (*) holds.

$ B $ can be increased by iteratively including variable bounds smaller than $ B $. The speed of this method can be further improved by using interval arithmetic for all computations. For related information see Sec. 4 of Neumaier and Shcherbina, Mathematical Programming A, 2004.

Set transformed to true if this method is called after _transformFeasibility().

Todo:
this currently works only if all constraints are equations aggregate rows and sides using the multipliers of the Farkas ray

Definition at line 2828 of file solverational.cpp.

References SoPlex::_colTypes, SolBase< R >::_dualFarkas, SoPlex::_feasLhs, SoPlex::_feasLower, SoPlex::_feasRhs, SoPlex::_feasUpper, SoPlex::_lowerFinite(), SoPlex::_rationalLP, SoPlex::_rationalNegInfty, SoPlex::_rationalPosInfty, SoPlex::_upperFinite(), Rational::addProduct(), SSVectorBase< R >::clear(), SSVectorBase< R >::clearNum(), SolBase< R >::hasDualFarkas(), SSVectorBase< R >::index(), SSVectorBase< R >::isSetup(), SoPlex::lhsRational(), SoPlex::lowerRational(), MSG_DEBUG, MSG_INFO1, SoPlex::numColsRational(), SoPlex::numRowsRational(), soplex::rationalToString(), SSVectorBase< R >::reDim(), SoPlex::rhsRational(), SPxLPBase< R >::rowVector(), SSVectorBase< R >::setEpsilon(), SSVectorBase< R >::setup(), SSVectorBase< R >::setValue(), SSVectorBase< R >::size(), soplex::spxAbs(), SoPlex::spxout, Rational::subProduct(), SoPlex::upperRational(), and SSVectorBase< R >::value().

Referenced by SoPlex::_performFeasIRStable().

void _disableSimplifierAndScaler ( )
private

disables simplifier and scaler

Definition at line 7060 of file soplex.cpp.

References SoPlex::_scaler, and SoPlex::_simplifier.

Referenced by SoPlex::_preprocessAndSolveReal(), and SoPlex::_solveRealForRational().

void _ensureDSVectorRationalMemory ( DSVectorRational vec,
const int  newmax 
) const
private

extends sparse vector to hold newmax entries if and only if it holds no more free entries

Definition at line 6301 of file soplex.cpp.

References SVectorBase< R >::max(), DSVectorBase< R >::setMax(), and SVectorBase< R >::size().

Referenced by SoPlex::_performOptIRStable().

void _ensureRationalLP ( )
private

ensures that the rational LP is available; performs no sync

Definition at line 7069 of file soplex.cpp.

References SoPlex::_rationalLP, SPxLPBase< R >::setOutstream(), soplex::spx_alloc(), and SoPlex::spxout.

Referenced by SoPlex::_readFileRational(), SoPlex::_syncLPRational(), and SoPlex::setIntParam().

void _ensureRealLPLoaded ( )
private
void _factorizeColumnRational ( SolRational sol,
DataArray< SPxSolver::VarStatus > &  basisStatusRows,
DataArray< SPxSolver::VarStatus > &  basisStatusCols,
bool &  stoppedTime,
bool &  stoppedIter,
bool &  error,
bool &  optimal 
)
private

factorizes rational basis matrix in column representation

Definition at line 3489 of file solverational.cpp.

References SoPlex::_basisStatusCols, SoPlex::_basisStatusRows, SoPlex::_colTypes, SolBase< R >::_dual, SoPlex::_hasBasis, SolBase< R >::_hasDual, SolBase< R >::_hasPrimal, SoPlex::_isSolveStopped(), SolBase< R >::_primal, SoPlex::_rationalLP, SolBase< R >::_redCost, SoPlex::_rowTypes, SolBase< R >::_slacks, SoPlex::_statistics, SoPlex::_unitVectorRational(), SoPlex::_workSol, SPxSolver::BASIC, SoPlex::boolParam(), SoPlex::colVectorRational(), SPxLPBase< R >::computePrimalActivity(), SPxSolver::FIXED, DataArray< T >::get_ptr(), SLUFactorRational::getFactorCount(), SLUFactorRational::getFactorTime(), SLUFactorRational::getSolveTime(), SoPlex::INFTY, SoPlex::intParam(), SoPlex::lhsRational(), SLUFactorRational::load(), SoPlex::lowerRational(), SoPlex::Statistics::luFactorizationsRational, SoPlex::Statistics::luFactorizationTimeRational, SoPlex::Statistics::luSolveTimeRational, MSG_DEBUG, MSG_ERROR, MSG_INFO1, MSG_INFO2, VectorBase< R >::multAdd(), SoPlex::numColsRational(), SoPlex::numRowsRational(), SoPlex::objRational(), SoPlex::OBJSENSE, SoPlex::OBJSENSE_MAXIMIZE, SLinSolverRational::OK, SPxSolver::ON_LOWER, SPxSolver::ON_UPPER, SoPlex::RANGETYPE_FIXED, SoPlex::RATFACJUMP, SoPlex::Statistics::rationalTime, soplex::rationalToString(), SoPlex::realParam(), DVectorBase< R >::reDim(), SLUFactorRational::resetCounters(), SoPlex::rhsRational(), SLUFactorRational::setTimeLimit(), DataArray< T >::size(), SLUFactorRational::solveLeft(), SLUFactorRational::solveRight(), SoPlex::Statistics::solvingTime, SoPlex::spxout, Timer::start(), SLUFactorRational::status(), Timer::stop(), SLinSolverRational::TIME, Timer::time(), SoPlex::TIMELIMIT, SPxSolver::UNDEFINED, SoPlex::upperRational(), and SPxSolver::ZERO.

Referenced by SoPlex::_performOptIRStable().

void _idxToPerm ( int *  idx,
int  idxSize,
int *  perm,
int  permSize 
) const
private

creates a permutation for removing rows/columns from an array of indices

Definition at line 6311 of file soplex.cpp.

Referenced by SoPlex::removeColsRational(), SoPlex::removeColsReal(), SoPlex::removeRowsRational(), and SoPlex::removeRowsReal().

bool _parseSettingsLine ( char *  line,
const int  lineNumber 
)
private
void _performOptIRStable ( SolRational sol,
bool  acceptUnbounded,
bool  acceptInfeasible,
int  minRounds,
bool &  primalFeasible,
bool &  dualFeasible,
bool &  infeasible,
bool &  unbounded,
bool &  stopped,
bool &  stoppedIter,
bool &  error 
)
private

solves current problem with iterative refinement and recovery mechanism

Todo:
remove _modObj and use dualScale * sol._redCost directly

Definition at line 353 of file solverational.cpp.

References SoPlex::_basisStatusCols, SoPlex::_basisStatusRows, SoPlex::_colTypes, SolBase< R >::_dual, SolBase< R >::_dualFarkas, SolBase< R >::_dualObjVal, SoPlex::_ensureDSVectorRationalMemory(), SoPlex::_factorizeColumnRational(), SoPlex::_hasBasis, SolBase< R >::_hasDual, SolBase< R >::_hasDualFarkas, SolBase< R >::_hasPrimal, SoPlex::_isSolveStopped(), SoPlex::_lowerFinite(), SoPlex::_modLhs, SoPlex::_modLower, SoPlex::_modObj, SoPlex::_modRhs, SoPlex::_modUpper, SolBase< R >::_primal, SoPlex::_primalDualDiff, SolBase< R >::_primalObjVal, SoPlex::_rationalFeastol, SoPlex::_rationalLP, SoPlex::_rationalMaxscaleincr, SoPlex::_rationalNegInfty, SoPlex::_rationalOpttol, SoPlex::_rationalPosInfty, SoPlex::_realLP, SoPlex::_reconstructSolutionRational(), SolBase< R >::_redCost, SoPlex::_rowTypes, SoPlex::_slackCols, SolBase< R >::_slacks, SoPlex::_solver, SoPlex::_solveRealStable(), SoPlex::_statistics, SoPlex::_upperFinite(), SPxSolver::ABORT_ITER, SPxSolver::ABORT_TIME, DSVectorBase< R >::add(), SPxLPBase< R >::addDualActivity(), SPxLPBase< R >::addPrimalActivity(), SPxSolver::BASIC, SPxSolver::basis(), SoPlex::boolParam(), SPxSolver::changeLhs(), SPxSolver::changeLower(), SPxSolver::changeObj(), SPxSolver::changeRhs(), SPxSolver::changeRowObj(), SPxSolver::changeUpper(), SVectorBase< R >::clear(), SPxSolver::clearRowObjs(), LPColSetBase< R >::colVector(), SPxLPBase< R >::computePrimalActivity(), SPxBasis::desc(), SPxBasis::Desc::dump(), SoPlex::EQTRANS, SPxSolver::FIXED, SoPlex::FPFEASTOL, SoPlex::FPOPTTOL, SPxLPBase< R >::getObj(), SVectorBase< R >::index(), SPxSolver::INFEASIBLE, SoPlex::INFTY, SoPlex::intParam(), Rational::invert(), SoPlex::Statistics::iterations, SoPlex::lhsRational(), SoPlex::lowerRational(), SPxLPBase< R >::maxObj(), SPxLPBase< R >::maxRowObj(), MSG_DEBUG, MSG_INFO1, MSG_INFO2, MSG_WARNING, SPxBasis::NO_PROBLEM, LPColSetBase< R >::num(), SoPlex::numColsRational(), SoPlex::numRowsRational(), SPxLPBase< R >::obj(), SoPlex::OBJSENSE, SoPlex::OBJSENSE_MAXIMIZE, SoPlex::OBJSENSE_MINIMIZE, SPxSolver::ON_LOWER, SPxSolver::ON_UPPER, SPxSolver::OPTIMAL, SPxSolver::opttol(), SoPlex::Statistics::pivotRefinements, Rational::POSONE, SoPlex::POWERSCALING, Rational::powRound(), SoPlex::RANGETYPE_FIXED, SoPlex::RATFAC, SoPlex::RATFAC_MINSTALLS, SoPlex::RATFACJUMP, SoPlex::Statistics::rationalTime, soplex::rationalToString(), SoPlex::RATREC, SoPlex::RATREC_FREQ, SoPlex::realParam(), DVectorBase< R >::reDim(), SoPlex::Statistics::refinements, SPxBasis::REGULAR, SoPlex::rhsRational(), SPxSolver::setBasis(), SPxSolver::setFeastol(), SPxSolver::setOpttol(), SVectorBase< R >::size(), SoPlex::Statistics::solvingTime, soplex::spxAbs(), SoPlex::spxout, SoPlex::Statistics::stallRefinements, Timer::start(), SPxBasis::status(), Timer::stop(), SPxLPBase< R >::subDualActivity(), Timer::time(), SPxSolver::UNBOUNDED, SPxSolver::UNKNOWN, SoPlex::upperRational(), SVectorBase< R >::value(), and SPxSolver::ZERO.

Referenced by SoPlex::_performFeasIRStable(), SoPlex::_performUnboundedIRStable(), and SoPlex::_solveRational().

void _performUnboundedIRStable ( SolRational sol,
bool &  hasUnboundedRay,
bool &  stopped,
bool &  stoppedIter,
bool &  error 
)
private
void _rangeToPerm ( int  start,
int  end,
int *  perm,
int  permSize 
) const
private

creates a permutation for removing rows/columns from a range of indices

Definition at line 6332 of file soplex.cpp.

Referenced by SoPlex::removeColRangeRational(), SoPlex::removeColRangeReal(), SoPlex::removeRowRangeRational(), and SoPlex::removeRowRangeReal().

bool _reconstructSolutionRational ( SolRational sol,
DataArray< SPxSolver::VarStatus > &  basisStatusRows,
DataArray< SPxSolver::VarStatus > &  basisStatusCols,
const Rational denomBoundSquared 
)
private
void _removeColRangeReal ( int  start,
int  end,
int  perm[] 
)
private

removes columns start to end including both; an array perm of size numColsReal() may be passed as buffer memory

void _removeColsReal ( int  perm[])
private

removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where column i has been moved to; note that perm must point to an array of size at least numColsReal()

Definition at line 6969 of file soplex.cpp.

References SoPlex::_basisStatusCols, SoPlex::_hasBasis, SoPlex::_isRealLPLoaded, SoPlex::_realLP, SoPlex::_solver, SPxSolver::BASIC, SPxSolver::basis(), SPxBasis::NO_PROBLEM, SoPlex::numColsReal(), SPxLPBase< R >::removeCols(), and SPxBasis::status().

Referenced by SoPlex::removeColsRational(), and SoPlex::removeColsReal().

void _removeColsReal ( int  idx[],
int  n,
int  perm[] 
)
private

remove all columns with indices in array idx of size n; an array perm of size numColsReal() may be passed as buffer memory

void _removeRowRangeReal ( int  start,
int  end,
int  perm[] 
)
private

removes rows start to end including both; an array perm of size numRowsReal() may be passed as buffer memory

void _removeRowsReal ( int  perm[])
private

removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where row i has been moved to; note that perm must point to an array of size at least numRowsReal()

Definition at line 6909 of file soplex.cpp.

References SoPlex::_basisStatusRows, SoPlex::_hasBasis, SoPlex::_isRealLPLoaded, SoPlex::_realLP, SoPlex::_solver, SPxSolver::BASIC, SPxSolver::basis(), SPxBasis::NO_PROBLEM, SoPlex::numRowsReal(), SPxLPBase< R >::removeRows(), and SPxBasis::status().

Referenced by SoPlex::removeRowsRational(), and SoPlex::removeRowsReal().

void _removeRowsReal ( int  idx[],
int  n,
int  perm[] 
)
private

remove all rows with indices in array idx of size n; an array perm of size numRowsReal() may be passed as buffer memory

void _solveRational ( )
private

solves rational LP

Todo:
implement row objectives with row representation
Todo:
implement handling of row objectives in Cplex interface
Todo:
this should be stored already earlier, possible switch use solRational above and solFeas here
Todo:
set status to ABORT_VALUE if optimal solution exceeds objective limit

Definition at line 28 of file solverational.cpp.

References SoPlex::_basisStatusCols, SoPlex::_basisStatusRows, SolBase< R >::_dual, SoPlex::_hasBasis, SolBase< R >::_hasDual, SolBase< R >::_hasPrimalRay, SoPlex::_hasSolRational, SoPlex::_isRealLPLoaded, SoPlex::_isSolveStopped(), SoPlex::_lastSolveMode, SoPlex::_lift(), SoPlex::_performFeasIRStable(), SoPlex::_performOptIRStable(), SoPlex::_performUnboundedIRStable(), SolBase< R >::_primalRay, SoPlex::_project(), SoPlex::_realLP, SolBase< R >::_redCost, SoPlex::_restoreBasis(), SoPlex::_restoreLPReal(), SoPlex::_solRational, SoPlex::_solver, SoPlex::_statistics, SoPlex::_status, SoPlex::_storeBasis(), SoPlex::_storedBasis, SoPlex::_storeLPReal(), SoPlex::_transformEquality(), SoPlex::_untransformEquality(), SPxSolver::ABORT_ITER, SPxSolver::ABORT_TIME, SPxSolver::basis(), SoPlex::boolParam(), SoPlex::EQTRANS, SPxSolver::ERROR, SPxSolver::getBasis(), SolBase< R >::hasPrimalRay(), SPxSolver::INFEASIBLE, SoPlex::INFTY, SoPlex::intParam(), SoPlex::LIFTING, SPxSolver::loadLP(), MSG_INFO1, MSG_INFO2, SPxBasis::NO_PROBLEM, SoPlex::numColsReal(), SoPlex::numRowsReal(), SoPlex::OBJLIMIT_LOWER, SoPlex::OBJLIMIT_UPPER, SPxSolver::OPTIMAL, SoPlex::Statistics::preprocessingTime, SoPlex::RATIOTESTER, SoPlex::RATIOTESTER_FAST, SoPlex::realParam(), SoPlex::REPRESENTATION, SoPlex::REPRESENTATION_COLUMN, SPxSolver::setBasis(), SoPlex::setBoolParam(), SoPlex::setIntParam(), SPxSolver::setTerminationValue(), SoPlex::SOLVEMODE_RATIONAL, SoPlex::Statistics::solvingTime, soplex::spx_free(), SoPlex::spxout, Timer::start(), SPxBasis::status(), Timer::stop(), SoPlex::TESTDUALINF, and SPxSolver::UNBOUNDED.

Referenced by SoPlex::solve().

SPxSolver::Status _solveRealForRational ( bool  fromscratch,
VectorReal primal,
VectorReal dual,
DataArray< SPxSolver::VarStatus > &  basisStatusRows,
DataArray< SPxSolver::VarStatus > &  basisStatusCols,
bool &  returnedBasis 
)
private

solves real LP during iterative refinement

Todo:
move to private helper methods
Todo:
move to private helper methods
Todo:
catch exception

Definition at line 3055 of file solverational.cpp.

References SoPlex::_disableSimplifierAndScaler(), SoPlex::_enableSimplifierAndScaler(), SoPlex::_hasBasis, SoPlex::_isConsistent(), SoPlex::_scaler, SoPlex::_simplifier, SoPlex::_solver, SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_statistics, SPxSolver::ABORT_CYCLING, SPxSolver::ABORT_ITER, SPxSolver::ABORT_TIME, SPxSolver::ABORT_VALUE, SoPlex::ACCEPTCYCLING, SoPlex::boolParam(), VectorBase< R >::dim(), SPxSimplifier::DUAL_INFEASIBLE, SoPlex::EPSILON_ZERO, SPxSolver::ERROR, SoPlex::FPFEASTOL, SoPlex::FPOPTTOL, DataArray< T >::get_ptr(), SPxSimplifier::getBasis(), SPxSolver::getBasis(), SPxSolver::getDual(), SPxSolver::getDualfarkas(), SPxSolver::getPrimal(), SPxSolver::getRedCost(), SPxSolver::getSlacks(), SPxSimplifier::INFEASIBLE, SPxSolver::INFEASIBLE, SPxSolver::INForUNBD, SoPlex::intParam(), SPxSimplifier::isUnsimplified(), SPxSolver::loadLP(), MSG_INFO1, SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SoPlex::numColsRational(), SoPlex::numRowsRational(), SPxSimplifier::OKAY, SPxSolver::OPTIMAL, SoPlex::RATIOTESTER, SoPlex::RATIOTESTER_BOUNDFLIPPING, SoPlex::realParam(), SPxSolver::REGULAR, DataArray< T >::reSize(), SPxSolver::RUNNING, SPxScaler::scale(), SPxSolver::setBasis(), SPxSimplifier::simplify(), SPxSolver::SINGULAR, DataArray< T >::size(), soplex::spx_alloc(), soplex::spx_free(), SoPlex::spxout, Timer::start(), SPxSolver::status(), Timer::stop(), SoPlex::Statistics::syncTime, SPxSimplifier::UNBOUNDED, SPxSolver::UNBOUNDED, SPxSolver::UNKNOWN, SPxScaler::unscaleDual(), SPxScaler::unscalePrimal(), SPxScaler::unscaleRedCost(), SPxScaler::unscaleSlacks(), SPxSimplifier::unsimplifiedDual(), SPxSimplifier::unsimplifiedPrimal(), SPxSimplifier::unsimplify(), and SPxSimplifier::VANISHED.

Referenced by SoPlex::_solveRealStable().

void _solveRealLPAndRecordStatistics ( )
private

call floating-point solver and update statistics on iterations etc.

Definition at line 7109 of file soplex.cpp.

References SoPlex::_hasBasis, SoPlex::_slufactor, SoPlex::_solver, SoPlex::_statistics, SoPlex::_status, SoPlex::ALGORITHM, SoPlex::ALGORITHM_DUAL, SoPlex::ALGORITHM_PRIMAL, SoPlex::Statistics::boundflips, SPxSolver::boundFlips(), SPxSolver::COLUMN, SPxSolver::ENTER, SPxSolver::ERROR, SPxSolver::feastol(), SLUFactor::getFactorCount(), SLUFactor::getFactorTime(), SLUFactor::getSolveCount(), SLUFactor::getSolveTime(), SoPlex::HYPER_PRICING, SoPlex::HYPER_PRICING_AUTO, SoPlex::HYPER_PRICING_OFF, SoPlex::HYPER_PRICING_ON, SPxSolver::hyperPricing(), HYPERPRICINGTHRESHOLD, SoPlex::INFTY, SoPlex::intParam(), SoPlex::Statistics::iterations, SPxSolver::iterations(), SoPlex::Statistics::iterationsFromBasis, SoPlex::Statistics::iterationsPrimal, SoPlex::ITERLIMIT, SPxSolver::LEAVE, SoPlex::Statistics::luFactorizationsReal, SoPlex::Statistics::luFactorizationTimeReal, SoPlex::Statistics::luSolvesReal, SoPlex::Statistics::luSolveTimeReal, MSG_ERROR, SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SPxSolver::opttol(), SPxSolver::primalIterations(), SoPlex::realParam(), SPxSolver::rep(), SoPlex::REPRESENTATION, SoPlex::REPRESENTATION_AUTO, SoPlex::REPRESENTATION_COLUMN, SoPlex::REPRESENTATION_ROW, SoPlex::REPRESENTATION_SWITCH, SLUFactor::resetCounters(), SPxSolver::ROW, SPxSolver::setFeastol(), SPxSolver::setOpttol(), SPxSolver::setRep(), SPxSolver::setSparsePricingFactor(), SPxSolver::setTerminationIter(), SPxSolver::setTerminationTime(), SPxSolver::setType(), SoPlex::Statistics::simplexTime, SPxSolver::solve(), SoPlex::Statistics::solvingTime, SoPlex::SPARSITY_THRESHOLD, Timer::start(), Timer::stop(), Timer::time(), SoPlex::TIMELIMIT, SPxSolver::type(), and SPxException::what().

Referenced by SoPlex::_preprocessAndSolveReal(), and SoPlex::_solveRealForRational().

SoPlex::RangeType _switchRangeType ( const RangeType rangeType) const
private

switches RANGETYPE_LOWER to RANGETYPE_UPPER and vice versa

Definition at line 6429 of file soplex.cpp.

References SoPlex::RANGETYPE_LOWER, and SoPlex::RANGETYPE_UPPER.

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

void _syncLPReal ( bool  time = true)
private

synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, without looking at the sync mode

Todo:
try loading old basis

Definition at line 7310 of file soplex.cpp.

References SoPlex::_hasBasis, SoPlex::_isRealLPLoaded, SoPlex::_rationalLP, SoPlex::_realLP, SoPlex::_solver, SoPlex::_statistics, SPxSolver::loadLP(), Timer::start(), Timer::stop(), and SoPlex::Statistics::syncTime.

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

void _transformFeasibility ( )
private

transforms LP to feasibility problem by removing the objective function, shifting variables, and homogenizing the right-hand side

Todo:
exploit this case by returning without LP solving

Definition at line 2377 of file solverational.cpp.

References SoPlex::_basisStatusCols, SoPlex::_colTypes, SoPlex::_feasLhs, SoPlex::_feasLower, SoPlex::_feasObj, SoPlex::_feasRhs, SoPlex::_feasUpper, SoPlex::_hasBasis, SoPlex::_lowerFinite(), SoPlex::_rationalLP, SoPlex::_rationalNegInfty, SoPlex::_rationalPosInfty, SoPlex::_realLP, SoPlex::_rowTypes, SoPlex::_statistics, SoPlex::_tauColVector, SoPlex::_upperFinite(), DSVectorBase< R >::add(), SPxLPBase< R >::addCol(), DataArray< T >::append(), SPxLPBase< R >::changeBounds(), SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeMaxObj(), SPxLPBase< R >::changeRange(), SPxLPBase< R >::changeRhs(), SPxLPBase< R >::changeUpper(), SVectorBase< R >::clear(), SoPlex::colVectorRational(), SVectorBase< R >::index(), SoPlex::INFTY, SoPlex::intParam(), SPxLPBase< R >::lhs(), SoPlex::lhsRational(), SPxLPBase< R >::lower(), SoPlex::lowerRational(), SoPlex::lowerReal(), SPxLPBase< R >::maxObj(), MSG_DEBUG, MSG_INFO1, MSG_INFO3, Rational::NEGONE, SoPlex::numColsRational(), SoPlex::numRowsRational(), SoPlex::OBJSENSE, SoPlex::OBJSENSE_MAXIMIZE, SPxSolver::ON_UPPER, Rational::POSONE, SoPlex::RANGETYPE_BOXED, SoPlex::realParam(), DVectorBase< R >::reDim(), SPxLPBase< R >::rhs(), SoPlex::rhsRational(), SoPlex::rhsReal(), SVectorBase< R >::size(), SoPlex::spxout, Timer::start(), Timer::stop(), SoPlex::Statistics::transformTime, SPxLPBase< R >::upper(), SoPlex::upperRational(), SoPlex::upperReal(), SVectorBase< R >::value(), and SPxLPBase< R >::writeFile().

Referenced by SoPlex::_performFeasIRStable().

void _transformUnbounded ( )
private

transforms LP to unboundedness problem by moving the objective function to the constraints, changing right-hand side and bounds to zero, and adding an auxiliary variable for the decrease in the objective function

Todo:
implement this without copying the objective function

Definition at line 2107 of file solverational.cpp.

References SoPlex::_basisStatusCols, SoPlex::_basisStatusRows, SoPlex::_colTypes, SoPlex::_hasBasis, SoPlex::_lowerFinite(), SoPlex::_rationalLP, SoPlex::_rationalNegInfty, SoPlex::_rationalPosInfty, SoPlex::_realLP, SoPlex::_rowTypes, SoPlex::_statistics, SoPlex::_unboundedLhs, SoPlex::_unboundedLower, SoPlex::_unboundedRhs, SoPlex::_unboundedUpper, SoPlex::_upperFinite(), DSVectorBase< R >::add(), SPxLPBase< R >::addRow(), DataArray< T >::append(), SPxSolver::BASIC, SPxLPBase< R >::changeBounds(), SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeMaxObj(), SPxLPBase< R >::changeObj(), SPxLPBase< R >::changeRhs(), SPxLPBase< R >::changeUpper(), SoPlex::INFTY, SPxLPBase< R >::lhs(), SoPlex::lhsRational(), SPxLPBase< R >::lower(), SoPlex::lowerRational(), SPxLPBase< R >::maxObj(), MSG_DEBUG, MSG_INFO1, SoPlex::numColsRational(), SoPlex::numRowsRational(), SPxSolver::ON_UPPER, SoPlex::RANGETYPE_FIXED, SoPlex::RANGETYPE_UPPER, SoPlex::realParam(), DVectorBase< R >::reDim(), SPxLPBase< R >::rhs(), SoPlex::rhsRational(), SoPlex::spxout, Timer::start(), Timer::stop(), SoPlex::Statistics::transformTime, SPxLPBase< R >::upper(), SoPlex::upperRational(), and SPxLPBase< R >::writeFile().

Referenced by SoPlex::_performUnboundedIRStable().

const UnitVectorRational * _unitVectorRational ( const int  i)
private

returns pointer to a constant unit vector available until destruction of the SoPlex class

Definition at line 7376 of file soplex.cpp.

References SoPlex::_unitMatrixRational, and soplex::spx_alloc().

Referenced by SoPlex::_factorizeColumnRational(), and SoPlex::_transformEquality().

void _untransformFeasibility ( SolRational sol,
bool  infeasible 
)
private

undoes transformation to feasibility problem

Definition at line 2640 of file solverational.cpp.

References SoPlex::_basisStatusCols, SoPlex::_colTypes, SolBase< R >::_dual, SolBase< R >::_dualFarkas, SoPlex::_feasLhs, SoPlex::_feasLower, SoPlex::_feasObj, SoPlex::_feasRhs, SoPlex::_feasUpper, SoPlex::_hasBasis, SolBase< R >::_hasDual, SolBase< R >::_hasDualFarkas, SolBase< R >::_hasPrimal, SolBase< R >::_hasPrimalRay, SoPlex::_lowerFinite(), SolBase< R >::_primal, SoPlex::_rationalLP, SoPlex::_rationalNegInfty, SoPlex::_rationalPosInfty, SoPlex::_realLP, SoPlex::_rowTypes, SolBase< R >::_slacks, SoPlex::_statistics, SoPlex::_upperFinite(), SPxSolver::BASIC, SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeMaxObj(), SPxLPBase< R >::changeRhs(), SPxLPBase< R >::changeUpper(), SPxLPBase< R >::colVector(), SPxLPBase< R >::computePrimalActivity(), SoPlex::INFTY, SPxLPBase< R >::lhs(), SoPlex::lhsRational(), SoPlex::lhsReal(), SPxLPBase< R >::lower(), SoPlex::lowerRational(), SoPlex::lowerReal(), MSG_DEBUG, VectorBase< R >::multAdd(), SoPlex::numColsRational(), SoPlex::numRowsRational(), SoPlex::realParam(), DVectorBase< R >::reDim(), SPxLPBase< R >::removeCol(), DataArray< T >::reSize(), SPxLPBase< R >::rhs(), SoPlex::rhsRational(), SoPlex::rhsReal(), Timer::start(), Timer::stop(), SoPlex::Statistics::transformTime, SPxLPBase< R >::upper(), SoPlex::upperRational(), SoPlex::upperReal(), and SPxLPBase< R >::writeFile().

Referenced by SoPlex::_performFeasIRStable().

void _untransformUnbounded ( SolRational sol,
bool  unbounded 
)
private

undoes transformation to unboundedness problem

Definition at line 2223 of file solverational.cpp.

References SoPlex::_basisStatusCols, SoPlex::_basisStatusRows, SoPlex::_colTypes, SolBase< R >::_dual, SoPlex::_hasBasis, SolBase< R >::_hasDual, SolBase< R >::_hasDualFarkas, SolBase< R >::_hasPrimal, SolBase< R >::_hasPrimalRay, SoPlex::_lowerFinite(), SolBase< R >::_primal, SolBase< R >::_primalRay, SoPlex::_rationalFeastol, SoPlex::_rationalLP, SoPlex::_rationalNegInfty, SoPlex::_rationalPosInfty, SoPlex::_realLP, SolBase< R >::_redCost, SoPlex::_rowTypes, SoPlex::_statistics, SoPlex::_unboundedLhs, SoPlex::_unboundedLower, SoPlex::_unboundedRhs, SoPlex::_unboundedUpper, SoPlex::_upperFinite(), SPxSolver::BASIC, SoPlex::boolParam(), SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeMaxObj(), SPxLPBase< R >::changeRhs(), SPxLPBase< R >::changeUpper(), SVectorBase< R >::index(), SoPlex::INFTY, SolBase< R >::invalidate(), SoPlex::lhsRational(), SoPlex::lhsReal(), SoPlex::lowerRational(), SoPlex::lowerReal(), MSG_DEBUG, SoPlex::numColsRational(), SoPlex::numRowsRational(), Rational::POSONE, SoPlex::realParam(), DVectorBase< R >::reDim(), SPxLPBase< R >::removeCol(), SPxLPBase< R >::removeRow(), DataArray< T >::reSize(), SoPlex::rhsRational(), SoPlex::rhsReal(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), Timer::start(), Timer::stop(), SoPlex::TESTDUALINF, SoPlex::Statistics::transformTime, SoPlex::upperRational(), SoPlex::upperReal(), SVectorBase< R >::value(), and SPxLPBase< R >::writeFile().

Referenced by SoPlex::_performUnboundedIRStable().

bool areLPsInSync ( const bool  checkVecVals = true,
const bool  checkMatVals = false,
const bool  quiet = false 
) const

checks if real LP and rational LP are in sync; dimensions will always be compared, vector and matrix values only if the respective parameter is set to true. If quiet is set to true the function will only display which vectors are different.

Definition at line 6042 of file soplex.cpp.

References SoPlex::_rationalLP, SoPlex::_rationalNegInfty, SoPlex::_rationalPosInfty, SoPlex::_realLP, SPxLPBase< R >::colVector(), soplex::GE(), soplex::GT(), SoPlex::INFTY, soplex::LE(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), soplex::LT(), SPxLPBase< R >::maxObj(), SPxLPBase< Real >::MINIMIZE, SPxLPBase< R >::MINIMIZE, MSG_ERROR, SPxLPBase< R >::nCols(), SPxLPBase< R >::nNzos(), SPxLPBase< R >::nRows(), SoPlex::realParam(), SPxLPBase< R >::rhs(), SPxLPBase< R >::spxSense(), and SPxLPBase< R >::upper().

Referenced by SoPlex::solve().

void changeBoundsReal ( int  i,
const Real lower,
const Real upper 
)
void changeElementRational ( int  i,
int  j,
const Rational val 
)
void changeElementReal ( int  i,
int  j,
const Real val 
)
void changeObjRational ( const VectorRational obj)
void changeObjRational ( int  i,
const Rational obj 
)
void changeObjReal ( const VectorReal obj)
void changeObjReal ( int  i,
const Real obj 
)

changes objective coefficient of column i to obj

Definition at line 1587 of file soplex.cpp.

References SoPlex::_invalidateSolution(), SoPlex::_rationalLP, SoPlex::_realLP, SPxLPBase< R >::changeObj(), SoPlex::intParam(), SoPlex::SYNCMODE, and SoPlex::SYNCMODE_AUTO.

void changeRangeReal ( int  i,
const Real lhs,
const Real rhs 
)
void clearBasis ( )

clears starting basis

Definition at line 4383 of file soplex.cpp.

References SoPlex::_hasBasis, SoPlex::_solver, SoPlex::_status, SPxSolver::reLoad(), and SPxSolver::status().

const SVectorRational & colVectorRational ( int  i) const

returns vector of column i

Definition at line 1147 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::colVector().

Referenced by SoPlex::_factorizeColumnRational(), SoPlex::_lift(), and SoPlex::_transformFeasibility().

const SVectorReal & colVectorReal ( int  i) const

returns vector of column i

Definition at line 905 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::colVector().

int dlcmSizeDualRational ( const int  base = 2)

get size of least common multiple of denominators in dual solution

Definition at line 3678 of file soplex.cpp.

References SoPlex::_solRational, SoPlex::_syncRationalSolution(), SolBase< R >::dlcmSizeDual(), SoPlex::hasDual(), and SoPlex::hasDualFarkas().

Referenced by SoPlex::printSolutionStatistics().

int dlcmSizePrimalRational ( const int  base = 2)

get size of least common multiple of denominators in primal solution

Definition at line 3664 of file soplex.cpp.

References SoPlex::_solRational, SoPlex::_syncRationalSolution(), SolBase< R >::dlcmSizePrimal(), SoPlex::hasPrimal(), and SoPlex::hasPrimalRay().

Referenced by SoPlex::printSolutionStatistics().

int dmaxSizeDualRational ( const int  base = 2)

get size of largest denominator in dual solution

Definition at line 3706 of file soplex.cpp.

References SoPlex::_solRational, SoPlex::_syncRationalSolution(), SolBase< R >::dmaxSizeDual(), SoPlex::hasDual(), and SoPlex::hasDualFarkas().

Referenced by SoPlex::printSolutionStatistics().

int dmaxSizePrimalRational ( const int  base = 2)

get size of largest denominator in primal solution

Definition at line 3692 of file soplex.cpp.

References SoPlex::_solRational, SoPlex::_syncRationalSolution(), SolBase< R >::dmaxSizePrimal(), SoPlex::hasPrimal(), and SoPlex::hasPrimalRay().

Referenced by SoPlex::printSolutionStatistics().

void getBasisInd ( int *  bind) const

gets the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m

returns the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m

Definition at line 3850 of file soplex.cpp.

References SoPlex::_basisStatusCols, SoPlex::_basisStatusRows, SoPlex::_isRealLPLoaded, SoPlex::_solver, SPxBasis::baseId(), SPxSolver::BASIC, SPxSolver::basis(), SPxSolver::COLUMN, SoPlex::hasBasis(), SPxSolver::isColBasic(), SPxSolver::isRowBasic(), SPxLPBase< R >::number(), SoPlex::numColsReal(), SoPlex::numRowsReal(), SPxSolver::rep(), and SPxSolver::ROW.

Referenced by SoPlex::getBasisInverseColReal(), SoPlex::getBasisInverseRowReal(), and SoPlex::getBasisInverseTimesVecReal().

bool getBoundViolationReal ( Real maxviol,
Real sumviol 
)
void getColRational ( int  i,
LPColRational lpcol 
) const

gets column i

Definition at line 1129 of file soplex.cpp.

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

void getColReal ( int  i,
LPColReal lpcol 
) const

gets column i

Definition at line 887 of file soplex.cpp.

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

void getColsRational ( int  start,
int  end,
LPColSetRational lpcolset 
) const

gets columns start, ..., end

Definition at line 1138 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::getCols().

void getColsReal ( int  start,
int  end,
LPColSetReal lpcolset 
) const

gets columns start, ..., end

Definition at line 896 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::getCols().

bool getDualFarkasRational ( VectorRational vector)
bool getDualFarkasReal ( VectorReal vector)

gets the Farkas proof if available; returns true on success

Definition at line 2940 of file soplex.cpp.

References SoPlex::_solReal, SoPlex::_syncRealSolution(), VectorBase< R >::dim(), SolBase< R >::getDualFarkas(), SoPlex::hasDualFarkas(), and SoPlex::numRowsReal().

bool getDualNorms ( int &  nnormsRow,
int &  nnormsCol,
Real norms 
) const

gets steepest edge norms and returns false if they are not available

Definition at line 996 of file soplex.cpp.

References SoPlex::_solver, and SPxSolver::getDualNorms().

bool getDualRational ( VectorRational vector)

gets the dual solution vector if available; returns true on success

Definition at line 3220 of file soplex.cpp.

References SoPlex::_rationalLP, SoPlex::_solRational, SoPlex::_syncRationalSolution(), VectorBase< R >::dim(), SolBase< R >::getDual(), SoPlex::hasDual(), and SoPlex::numRowsRational().

Referenced by SoPlex::getDualViolationRational(), and main().

bool getDualReal ( VectorReal vector)

gets the dual solution vector if available; returns true on success

Definition at line 2910 of file soplex.cpp.

References SoPlex::_solReal, SoPlex::_syncRealSolution(), VectorBase< R >::dim(), SolBase< R >::getDual(), SoPlex::hasDual(), and SoPlex::numRowsReal().

Referenced by main().

bool getEstimatedCondition ( Real condition)

computes an estimated condition number for the current basis matrix using the power method; returns true on success

Definition at line 3929 of file soplex.cpp.

References SoPlex::_ensureRealLPLoaded(), SoPlex::_isRealLPLoaded, SoPlex::_solver, SPxSolver::basis(), SPxBasis::getEstimatedCondition(), SPxBasis::NO_PROBLEM, and SPxBasis::status().

bool getExactCondition ( Real condition)

computes the exact condition number for the current basis matrix using the power method; returns true on success

Definition at line 3944 of file soplex.cpp.

References SoPlex::_ensureRealLPLoaded(), SoPlex::_isRealLPLoaded, SoPlex::_solver, SPxSolver::basis(), SPxBasis::getExactCondition(), SPxBasis::NO_PROBLEM, and SPxBasis::status().

void getNdualNorms ( int &  nnormsRow,
int &  nnormsCol 
) const

gets number of available dual norms

Definition at line 988 of file soplex.cpp.

References SoPlex::_solver, and SPxSolver::getNdualNorms().

void getObjRational ( VectorRational obj) const

gets objective function vector

Definition at line 1192 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::getObj().

void getObjRational ( int  i,
Rational obj 
) const

gets objective value of column i

Definition at line 1201 of file soplex.cpp.

References SoPlex::intParam(), SoPlex::maxObjRational(), SoPlex::OBJSENSE, and SoPlex::OBJSENSE_MINIMIZE.

void getObjReal ( VectorReal obj) const

gets objective function vector

Definition at line 950 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::getObj().

const char * getPricerName ( )

name of currently loaded pricer

Definition at line 4458 of file soplex.cpp.

References SoPlex::_solver, SPxPricer::getName(), and SPxSolver::pricer().

bool getPrimalRational ( VectorRational vector)

gets the primal solution vector if available; returns true on success

Definition at line 3175 of file soplex.cpp.

References SoPlex::_rationalLP, SoPlex::_solRational, SoPlex::_syncRationalSolution(), VectorBase< R >::dim(), SolBase< R >::getPrimal(), SoPlex::hasPrimal(), and SoPlex::numColsRational().

Referenced by SoPlex::getDualViolationRational(), and main().

bool getPrimalRayRational ( VectorRational vector)
bool getPrimalRayReal ( VectorReal vector)

gets the primal ray if available; returns true on success

Definition at line 2895 of file soplex.cpp.

References SoPlex::_solReal, SoPlex::_syncRealSolution(), VectorBase< R >::dim(), SolBase< R >::getPrimalRay(), SoPlex::hasPrimalRay(), and SoPlex::numColsReal().

bool getPrimalReal ( VectorReal vector)

gets the primal solution vector if available; returns true on success

Definition at line 2865 of file soplex.cpp.

References SoPlex::_solReal, SoPlex::_syncRealSolution(), VectorBase< R >::dim(), SolBase< R >::getPrimal(), SoPlex::hasPrimal(), and SoPlex::numColsReal().

Referenced by main().

const char * getRatiotesterName ( )

name of currently loaded ratiotester

Definition at line 4466 of file soplex.cpp.

References SoPlex::_solver, SPxRatioTester::getName(), and SPxSolver::ratiotester().

bool getRedCostRational ( VectorRational vector)

gets the vector of reduced cost values if available; returns true on success

Definition at line 3235 of file soplex.cpp.

References SoPlex::_rationalLP, SoPlex::_solRational, SoPlex::_syncRationalSolution(), VectorBase< R >::dim(), SolBase< R >::getRedCost(), SoPlex::hasDual(), and SoPlex::numColsRational().

Referenced by SoPlex::getDualViolationRational().

bool getRedCostReal ( VectorReal vector)

gets the vector of reduced cost values if available; returns true on success

Definition at line 2925 of file soplex.cpp.

References SoPlex::_solReal, SoPlex::_syncRealSolution(), VectorBase< R >::dim(), SolBase< R >::getRedCost(), SoPlex::hasDual(), and SoPlex::numColsReal().

void getRowRational ( int  i,
LPRowRational lprow 
) const

gets row i

Definition at line 1057 of file soplex.cpp.

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

void getRowReal ( int  i,
LPRowReal lprow 
) const

gets row i

Definition at line 815 of file soplex.cpp.

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

void getRowsRational ( int  start,
int  end,
LPRowSetRational lprowset 
) const

gets rows start, ..., end.

Definition at line 1066 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::getRows().

void getRowsReal ( int  start,
int  end,
LPRowSetReal lprowset 
) const

gets rows start, ..., end.

Definition at line 824 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::getRows().

const char * getScalerName ( )

name of scaling method

name of scaling method after simplifier

Definition at line 4447 of file soplex.cpp.

References SoPlex::_scaler, and SPxScaler::getName().

const char * getSimplifierName ( )

name of simplifier

Definition at line 4436 of file soplex.cpp.

References SoPlex::_simplifier, and SPxSimplifier::getName().

bool getSlacksRational ( VectorRational vector)

gets the vector of slack values if available; returns true on success

Definition at line 3190 of file soplex.cpp.

References SoPlex::_rationalLP, SoPlex::_solRational, SoPlex::_syncRationalSolution(), VectorBase< R >::dim(), SolBase< R >::getSlacks(), SoPlex::hasPrimal(), and SoPlex::numRowsRational().

Referenced by SoPlex::getDualViolationRational().

bool getSlacksReal ( VectorReal vector)

gets the vector of slack values if available; returns true on success

Definition at line 2880 of file soplex.cpp.

References SoPlex::_solReal, SoPlex::_syncRealSolution(), VectorBase< R >::dim(), SolBase< R >::getSlacks(), SoPlex::hasPrimal(), and SoPlex::numRowsReal().

const char * getStarterName ( )

name of starter

Definition at line 4425 of file soplex.cpp.

References SoPlex::_starter, and SPxStarter::getName().

int intParam ( const IntParam  param) const

returns integer parameter value

Definition at line 4856 of file soplex.cpp.

References SoPlex::_currentSettings, SoPlex::Settings::_intParamValues, and SoPlex::INTPARAM_COUNT.

Referenced by SoPlex::_enableSimplifierAndScaler(), SoPlex::_factorizeColumnRational(), SoPlex::_isConsistent(), SoPlex::_isSolveStopped(), SoPlex::_performOptIRStable(), SoPlex::_preprocessAndSolveReal(), SoPlex::_readFileRational(), SoPlex::_readFileReal(), SoPlex::_reconstructSolutionRational(), SoPlex::_restoreLPReal(), SoPlex::_solveRational(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_solveRealStable(), SoPlex::_storeLPReal(), SoPlex::_transformFeasibility(), SoPlex::addColRational(), SoPlex::addColReal(), SoPlex::addColsRational(), SoPlex::addColsReal(), SoPlex::addRowRational(), SoPlex::addRowReal(), SoPlex::addRowsRational(), SoPlex::addRowsReal(), SoPlex::changeBoundsRational(), SoPlex::changeBoundsReal(), SoPlex::changeColRational(), SoPlex::changeColReal(), SoPlex::changeElementRational(), SoPlex::changeElementReal(), SoPlex::changeLhsRational(), SoPlex::changeLhsReal(), SoPlex::changeLowerRational(), SoPlex::changeLowerReal(), SoPlex::changeObjRational(), SoPlex::changeObjReal(), SoPlex::changeRangeRational(), SoPlex::changeRangeReal(), SoPlex::changeRhsRational(), SoPlex::changeRhsReal(), SoPlex::changeRowRational(), SoPlex::changeRowReal(), SoPlex::changeUpperRational(), SoPlex::changeUpperReal(), checkSolution(), SoPlex::clearLPRational(), SoPlex::clearLPReal(), SoPlex::getBoundViolationRational(), SoPlex::getDualViolationRational(), SoPlex::getDualViolationReal(), SoPlex::getObjRational(), SoPlex::getRedCostViolationRational(), SoPlex::getRedCostViolationReal(), SoPlex::getRowViolationRational(), main(), SoPlex::objValueRational(), SoPlex::objValueReal(), SoPlex::operator=(), SoPlex::printSolutionStatistics(), SoPlex::printStatistics(), SoPlex::readFile(), SoPlex::removeColRational(), SoPlex::removeColReal(), SoPlex::removeColsRational(), SoPlex::removeColsReal(), SoPlex::removeRowRational(), SoPlex::removeRowReal(), SoPlex::removeRowsRational(), SoPlex::removeRowsReal(), SoPlex::setIntParam(), SoPlex::setRealParam(), SoPlex::solve(), SoPlex::SoPlex(), SoPlex::syncLPRational(), SoPlex::syncLPReal(), and SoPlex::writeFileRational().

const Rational & lhsRational ( int  i) const

returns left-hand side of row i

Definition at line 1111 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::lhs().

const VectorReal & lhsReal ( ) const
Real lhsReal ( int  i) const

returns left-hand side of row i

Definition at line 869 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::lhs().

bool loadSettingsFile ( const char *  filename)

reads settings file; returns true on success

Definition at line 5532 of file soplex.cpp.

References SoPlex::_parseSettingsLine(), SoPlex::_statistics, MSG_ERROR, MSG_INFO1, SoPlex::Statistics::readingTime, SET_MAX_LINE_LEN, SoPlex::spxout, Timer::start(), and Timer::stop().

Referenced by main().

const Rational & lowerRational ( int  i) const

returns lower bound of column i

Definition at line 1183 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::lower().

Real lowerReal ( int  i) const

returns lower bound of column i

Definition at line 941 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::lower().

Rational maxAbsNonzeroRational ( ) const

returns biggest non-zero element in absolute value

Definition at line 1048 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::maxAbsNzo().

Real maxAbsNonzeroReal ( ) const

returns biggest non-zero element in absolute value

Definition at line 806 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::maxAbsNzo().

const VectorRational & maxObjRational ( ) const

returns objective function vector after transformation to a maximization problem; since this is how it is stored internally, this is generally faster

Definition at line 1221 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::maxObj().

Referenced by SoPlex::addColRational(), and SoPlex::getObjRational().

const Rational & maxObjRational ( int  i) const

returns objective value of column i after transformation to a maximization problem; since this is how it is stored internally, this is generally faster

Definition at line 1231 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::maxObj().

const VectorReal & maxObjReal ( ) const

returns objective function vector after transformation to a maximization problem; since this is how it is stored internally, this is generally faster

Definition at line 969 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::maxObj().

Real maxObjReal ( int  i) const

returns objective value of column i after transformation to a maximization problem; since this is how it is stored internally, this is generally faster

Definition at line 979 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::maxObj().

Rational minAbsNonzeroRational ( ) const

returns smallest non-zero element in absolute value

Definition at line 1039 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::minAbsNzo().

Real minAbsNonzeroReal ( ) const

returns smallest non-zero element in absolute value

Definition at line 797 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::minAbsNzo().

int numIterations ( ) const

number of iterations since last call to solve

Definition at line 4393 of file soplex.cpp.

References SoPlex::_statistics, and SoPlex::Statistics::iterations.

Referenced by SoPlex::statisticString().

int numNonzerosRational ( ) const

returns number of nonzeros

Definition at line 1030 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::nNzos().

int numNonzerosReal ( ) const

returns number of nonzeros

Definition at line 788 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::nNzos().

Referenced by main().

Rational objRational ( int  i) const

returns objective value of column i

Definition at line 1211 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::obj().

Referenced by SoPlex::_factorizeColumnRational(), and SoPlex::changeObjRational().

Real objReal ( int  i) const

returns objective value of column i

Definition at line 959 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::obj().

bool parseSettingsString ( char *  line)

parses one setting string and returns true on success; note that string is modified

parses one setting string and returns true on success

Definition at line 5581 of file soplex.cpp.

References SoPlex::Settings::_boolParamName, SoPlex::_currentSettings, SoPlex::Settings::_intParamName, SoPlex::Settings::_realParamName, SoPlex::BOOLPARAM_COUNT, SoPlex::INTPARAM_COUNT, MSG_ERROR, soplex::readStringRational(), REAL_FORMAT, SoPlex::REALPARAM_COUNT, SET_MAX_LINE_LEN, SoPlex::setBoolParam(), SoPlex::setIntParam(), and SoPlex::setRealParam().

Referenced by main().

void printShortStatistics ( std::ostream &  os)
void printSolvingStatistics ( std::ostream &  os)

prints statistics on solving process

Definition at line 5896 of file soplex.cpp.

References SoPlex::_statistics, and SoPlex::Statistics::print().

Referenced by SoPlex::printStatistics().

void printVersion ( ) const

prints version and compilation options

Definition at line 6002 of file soplex.cpp.

References soplex::getGitHash(), MSG_INFO1, SOPLEX_SUBVERSION, SOPLEX_VERSION, and SoPlex::spxout.

Referenced by main().

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

reads LP file in LP or MPS format according to READMODE parameter; gets row names, column names, and integer variables if desired; returns true on success

Definition at line 4475 of file soplex.cpp.

References SoPlex::_readFileRational(), SoPlex::_readFileReal(), SoPlex::intParam(), SoPlex::READMODE, and SoPlex::READMODE_REAL.

Referenced by main().

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

removes columns start to end including both; an array perm of size numColsRational() may be passed as buffer memory

Definition at line 2670 of file soplex.cpp.

References SoPlex::_rangeToPerm(), DataArray< T >::get_ptr(), SoPlex::numColsRational(), and SoPlex::removeColsRational().

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

removes columns start to end including both; an array perm of size numColsReal() may be passed as buffer memory

Definition at line 1783 of file soplex.cpp.

References SoPlex::_rangeToPerm(), DataArray< T >::get_ptr(), SoPlex::numColsReal(), and SoPlex::removeColsReal().

void removeColsRational ( int  perm[])

removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where column i has been moved to; note that perm must point to an array of size at least numColsRational()

Definition at line 2621 of file soplex.cpp.

References SoPlex::_colTypes, SoPlex::_invalidateSolution(), SoPlex::_rangeTypeRational(), SoPlex::_rationalLP, SoPlex::_removeColsReal(), SoPlex::intParam(), SoPlex::lowerRational(), SPxLPBase< R >::nCols(), SoPlex::numColsRational(), SPxLPBase< R >::removeCols(), DataArray< T >::reSize(), SoPlex::SYNCMODE, SoPlex::SYNCMODE_AUTO, SoPlex::SYNCMODE_ONLYREAL, and SoPlex::upperRational().

Referenced by SoPlex::removeColRangeRational(), and SoPlex::removeColsRational().

void removeColsRational ( int  idx[],
int  n,
int  perm[] = 0 
)

remove all columns with indices in array idx of size n; an array perm of size numColsRational() may be passed as buffer memory

Definition at line 2651 of file soplex.cpp.

References SoPlex::_idxToPerm(), DataArray< T >::get_ptr(), SoPlex::numColsRational(), and SoPlex::removeColsRational().

void removeColsReal ( int  perm[])

removes all columns with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where column i has been moved to; note that perm must point to an array of size at least numColsReal()

Definition at line 1735 of file soplex.cpp.

References SoPlex::_colTypes, SoPlex::_invalidateSolution(), SoPlex::_rangeTypeRational(), SoPlex::_rationalLP, SoPlex::_realLP, SoPlex::_removeColsReal(), SoPlex::intParam(), SoPlex::lowerRational(), SPxLPBase< R >::nCols(), SoPlex::numColsRational(), SoPlex::numColsReal(), SPxLPBase< R >::removeCols(), DataArray< T >::reSize(), SoPlex::SYNCMODE, SoPlex::SYNCMODE_AUTO, and SoPlex::upperRational().

Referenced by SoPlex::removeColRangeReal(), and SoPlex::removeColsReal().

void removeColsReal ( int  idx[],
int  n,
int  perm[] = 0 
)

remove all columns with indices in array idx of size n; an array perm of size numColsReal() may be passed as buffer memory

Definition at line 1764 of file soplex.cpp.

References SoPlex::_idxToPerm(), DataArray< T >::get_ptr(), SoPlex::numColsReal(), and SoPlex::removeColsReal().

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

removes rows start to end including both; an array perm of size numRowsRational() may be passed as buffer memory

Definition at line 2576 of file soplex.cpp.

References SoPlex::_rangeToPerm(), DataArray< T >::get_ptr(), SoPlex::numRowsRational(), and SoPlex::removeRowsRational().

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

removes rows start to end including both; an array perm of size numRowsReal() may be passed as buffer memory

Definition at line 1691 of file soplex.cpp.

References SoPlex::_rangeToPerm(), DataArray< T >::get_ptr(), SoPlex::numRowsReal(), and SoPlex::removeRowsReal().

void removeRowsRational ( int  perm[])

removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where row i has been moved to; note that perm must point to an array of size at least numRowsRational()

Definition at line 2526 of file soplex.cpp.

References SoPlex::_invalidateSolution(), SoPlex::_rangeTypeRational(), SoPlex::_rationalLP, SoPlex::_removeRowsReal(), SoPlex::_rowTypes, SoPlex::intParam(), SoPlex::lhsRational(), SPxLPBase< R >::nRows(), SoPlex::numRowsRational(), SPxLPBase< R >::removeRows(), DataArray< T >::reSize(), SoPlex::rhsRational(), SoPlex::SYNCMODE, SoPlex::SYNCMODE_AUTO, and SoPlex::SYNCMODE_ONLYREAL.

Referenced by SoPlex::removeRowRangeRational(), and SoPlex::removeRowsRational().

void removeRowsRational ( int  idx[],
int  n,
int  perm[] = 0 
)

remove all rows with indices in array idx of size n; an array perm of size numRowsRational() may be passed as buffer memory

Definition at line 2557 of file soplex.cpp.

References SoPlex::_idxToPerm(), DataArray< T >::get_ptr(), SoPlex::numRowsRational(), and SoPlex::removeRowsRational().

void removeRowsReal ( int  perm[])

removes all rows with an index i such that perm[i] < 0; upon completion, perm[i] >= 0 indicates the new index where row i has been moved to; note that perm must point to an array of size at least numRowsReal()

Definition at line 1643 of file soplex.cpp.

References SoPlex::_invalidateSolution(), SoPlex::_rangeTypeRational(), SoPlex::_rationalLP, SoPlex::_realLP, SoPlex::_removeRowsReal(), SoPlex::_rowTypes, SoPlex::intParam(), SoPlex::lhsRational(), SPxLPBase< R >::nRows(), SoPlex::numRowsRational(), SoPlex::numRowsReal(), SPxLPBase< R >::removeRows(), DataArray< T >::reSize(), SoPlex::rhsRational(), SoPlex::SYNCMODE, and SoPlex::SYNCMODE_AUTO.

Referenced by SoPlex::removeRowRangeReal(), and SoPlex::removeRowsReal().

void removeRowsReal ( int  idx[],
int  n,
int  perm[] = 0 
)

remove all rows with indices in array idx of size n; an array perm of size numRowsReal() may be passed as buffer memory

Definition at line 1672 of file soplex.cpp.

References SoPlex::_idxToPerm(), DataArray< T >::get_ptr(), SoPlex::numRowsReal(), and SoPlex::removeRowsReal().

const Rational & rhsRational ( int  i) const

returns right-hand side of row i

Definition at line 1093 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::rhs().

Real rhsReal ( int  i) const

returns right-hand side of row i

Definition at line 851 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::rhs().

LPRowRational::Type rowTypeRational ( int  i) const

returns inequality type of row i

Definition at line 1120 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::rowType().

LPRowReal::Type rowTypeReal ( int  i) const

returns inequality type of row i

Definition at line 878 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::rowType().

const SVectorRational & rowVectorRational ( int  i) const

returns vector of row i

Definition at line 1075 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::rowVector().

const SVectorReal & rowVectorReal ( int  i) const

returns vector of row i

Definition at line 833 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::rowVector().

Referenced by SoPlex::getBasisInverseTimesVecReal().

bool setDualNorms ( int  nnormsRow,
int  nnormsCol,
Real norms 
)

sets steepest edge norms and returns false if that's not possible

Definition at line 1004 of file soplex.cpp.

References SoPlex::_solver, and SPxSolver::setDualNorms().

bool setIntParam ( const IntParam  param,
const int  value,
const bool  quiet = false,
const bool  init = false 
)

sets integer parameter value; returns true on success

Definition at line 4939 of file soplex.cpp.

References SoPlex::_currentSettings, SoPlex::_ensureRationalLP(), SoPlex::Settings::_intParamUpper, SoPlex::Settings::_intParamValues, SoPlex::_invalidateSolution(), SoPlex::_isConsistent(), SoPlex::_pricerAuto, SoPlex::_pricerDantzig, SoPlex::_pricerDevex, SoPlex::_pricerParMult, SoPlex::_pricerQuickSteep, SoPlex::_pricerSteep, SoPlex::_rationalLP, SoPlex::_ratiotesterBoundFlipping, SoPlex::_ratiotesterFast, SoPlex::_ratiotesterHarris, SoPlex::_ratiotesterTextbook, SoPlex::_realLP, SoPlex::_scaler, SoPlex::_scalerBiequi, SoPlex::_scalerGeo1, SoPlex::_scalerGeo8, SoPlex::_scalerUniequi, SoPlex::_simplifier, SoPlex::_simplifierMainSM, SoPlex::_slufactor, SoPlex::_solver, SoPlex::_starter, SoPlex::_starterSum, SoPlex::_starterVector, SoPlex::_starterWeight, SoPlex::_syncLPRational(), SoPlex::ALGORITHM, SPxSolver::basis(), SPxLPBase< R >::changeSense(), SoPlex::CHECKMODE, SoPlex::CHECKMODE_AUTO, SoPlex::CHECKMODE_RATIONAL, SoPlex::CHECKMODE_REAL, SPxOut::DEBUG, SoPlex::DISPLAYFREQ, SPxOut::ERROR, SLUFactor::ETA, SoPlex::FACTOR_UPDATE_MAX, SoPlex::FACTOR_UPDATE_TYPE, SoPlex::FACTOR_UPDATE_TYPE_ETA, SoPlex::FACTOR_UPDATE_TYPE_FT, SLUFactor::FOREST_TOMLIN, SoPlex::HYPER_PRICING, SoPlex::HYPER_PRICING_AUTO, SoPlex::HYPER_PRICING_OFF, SoPlex::HYPER_PRICING_ON, SPxOut::INFO1, SPxOut::INFO2, SPxOut::INFO3, SoPlex::intParam(), SoPlex::INTPARAM_COUNT, SoPlex::ITERLIMIT, SPxLPBase< Real >::MAXIMIZE, SPxLPBase< R >::MAXIMIZE, SPxLPBase< Real >::MINIMIZE, SPxLPBase< R >::MINIMIZE, SoPlex::OBJSENSE, SoPlex::OBJSENSE_MAXIMIZE, SoPlex::OBJSENSE_MINIMIZE, Timer::OFF, SoPlex::PRICER, SoPlex::PRICER_AUTO, SoPlex::PRICER_DANTZIG, SoPlex::PRICER_DEVEX, SoPlex::PRICER_PARMULT, SoPlex::PRICER_QUICKSTEEP, SoPlex::PRICER_STEEP, SoPlex::RATFAC_MINSTALLS, SoPlex::RATIOTESTER, SoPlex::RATIOTESTER_BOUNDFLIPPING, SoPlex::RATIOTESTER_FAST, SoPlex::RATIOTESTER_HARRIS, SoPlex::RATIOTESTER_TEXTBOOK, SoPlex::READMODE, SoPlex::READMODE_RATIONAL, SoPlex::READMODE_REAL, SoPlex::REFLIMIT, SoPlex::REPRESENTATION, SoPlex::REPRESENTATION_AUTO, SoPlex::REPRESENTATION_COLUMN, SoPlex::REPRESENTATION_ROW, SoPlex::SCALER, SoPlex::SCALER_BIEQUI, SoPlex::SCALER_GEO1, SoPlex::SCALER_GEO8, SoPlex::SCALER_OFF, SoPlex::SCALER_UNIEQUI, SPxSolver::setDisplayFreq(), SPxBasis::setMaxUpdates(), SPxSolver::setPricer(), SPxSolver::setTester(), SPxSolver::setTiming(), SLUFactor::setUtype(), SPxOut::setVerbosity(), SoPlex::SIMPLIFIER, SoPlex::SIMPLIFIER_AUTO, SoPlex::SIMPLIFIER_OFF, SoPlex::SOLVEMODE, SoPlex::SOLVEMODE_AUTO, SoPlex::SOLVEMODE_RATIONAL, SoPlex::SOLVEMODE_REAL, soplex::spx_free(), SoPlex::spxout, SoPlex::STALLREFLIMIT, SoPlex::STARTER, SoPlex::STARTER_OFF, SoPlex::STARTER_SUM, SoPlex::STARTER_VECTOR, SoPlex::STARTER_WEIGHT, SoPlex::SYNCMODE, SoPlex::SYNCMODE_AUTO, SoPlex::SYNCMODE_MANUAL, SoPlex::SYNCMODE_ONLYREAL, SoPlex::TIMER, SoPlex::TIMER_CPU, SoPlex::TIMER_OFF, SoPlex::TIMER_WALLCLOCK, Timer::USER_TIME, SoPlex::VERBOSITY, Timer::WALLCLOCK_TIME, and SPxOut::WARNING.

Referenced by SoPlex::_parseSettingsLine(), SoPlex::_readFileRational(), SoPlex::_readFileReal(), SoPlex::_solveRational(), SoPlex::_solveRealStable(), main(), SoPlex::operator=(), SoPlex::parseSettingsString(), and SoPlex::setSettings().

bool setSettings ( const Settings newSettings,
const bool  quiet = false,
const bool  init = false 
)
const SoPlex::Settings & settings ( ) const

returns current parameter settings

Definition at line 4888 of file soplex.cpp.

References SoPlex::_currentSettings.

Referenced by SoPlex::Settings::Settings().

Real solveTime ( ) const

time spent in last call to solve

Definition at line 4401 of file soplex.cpp.

References SoPlex::_statistics, SoPlex::Statistics::solvingTime, and Timer::time().

Referenced by SoPlex::statisticString().

SPxSolver::Status status ( ) const

returns the current solver status

Definition at line 2799 of file soplex.cpp.

References SoPlex::_status.

Referenced by SoPlex::_storeSolutionReal(), SoPlex::basisStatus(), SoPlex::objValueRational(), SoPlex::objValueReal(), and SoPlex::solve().

void syncLPRational ( )

synchronizes rational LP with real LP, i.e., copies real LP to rational LP, if sync mode is manual

Definition at line 2711 of file soplex.cpp.

References SoPlex::_isConsistent(), SoPlex::_syncLPRational(), SoPlex::intParam(), SoPlex::SYNCMODE, and SoPlex::SYNCMODE_MANUAL.

void syncLPReal ( )

synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, if sync mode is manual

Definition at line 1821 of file soplex.cpp.

References SoPlex::_isConsistent(), SoPlex::_syncLPReal(), SoPlex::intParam(), SoPlex::SYNCMODE, and SoPlex::SYNCMODE_MANUAL.

int totalSizeDualRational ( const int  base = 2)
int totalSizePrimalRational ( const int  base = 2)
const Rational & upperRational ( int  i) const

returns upper bound of column i

Definition at line 1165 of file soplex.cpp.

References SoPlex::_rationalLP, and SPxLPBase< R >::upper().

Real upperReal ( int  i) const

returns upper bound of column i

Definition at line 923 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::upper().

bool writeBasisFile ( const char *  filename,
const NameSet rowNames = 0,
const NameSet colNames = 0,
const bool  cpxFormat = false 
) const

writes basis information to filename; if rowNames and colNames are NULL, default names are used; returns true on success

Definition at line 4707 of file soplex.cpp.

References SoPlex::_basisStatusCols, SoPlex::_basisStatusRows, SoPlex::_hasBasis, SoPlex::_isRealLPLoaded, SoPlex::_rowTypes, SoPlex::_solver, SPxSolver::BASIC, NameSet::has(), SPxSolver::ON_UPPER, SoPlex::RANGETYPE_BOXED, SPxSolver::UNDEFINED, and SPxSolver::writeBasisFile().

Referenced by main(), SoPlex::writeStateRational(), and SoPlex::writeStateReal().

bool writeFileRational ( const char *  filename,
const NameSet rowNames = 0,
const NameSet colNames = 0,
const DIdxSet intvars = 0 
) const

writes rational LP to file; LP or MPS format is chosen from the extension in filename; if rowNames and colNames are NULL, default names are used; if intVars is not NULL, the variables contained in it are marked as integer; returns true on success

Todo:
implement return value

Definition at line 4498 of file soplex.cpp.

References SoPlex::_rationalLP, SoPlex::intParam(), SoPlex::SYNCMODE, SoPlex::SYNCMODE_ONLYREAL, and SPxLPBase< R >::writeFile().

Referenced by SoPlex::writeStateRational().

bool writeFileReal ( const char *  filename,
const NameSet rowNames = 0,
const NameSet colNames = 0,
const DIdxSet intvars = 0 
) const

writes real LP to file; LP or MPS format is chosen from the extension in filename; if rowNames and colNames are NULL, default names are used; if intVars is not NULL, the variables contained in it are marked as integer; returns true on success

Todo:
implement return value

Definition at line 4486 of file soplex.cpp.

References SoPlex::_realLP, and SPxLPBase< R >::writeFile().

Referenced by main(), and SoPlex::writeStateReal().

void writeStateRational ( const char *  filename,
const NameSet rowNames = 0,
const NameSet colNames = 0,
const bool  cpxFormat = false 
) const

writes internal LP, basis information, and parameter settings; if rowNames and colNames are NULL, default names are used

Definition at line 4826 of file soplex.cpp.

References SoPlex::saveSettingsFile(), SoPlex::writeBasisFile(), and SoPlex::writeFileRational().

void writeStateReal ( const char *  filename,
const NameSet rowNames = 0,
const NameSet colNames = 0,
const bool  cpxFormat = false 
) const

writes internal LP, basis information, and parameter settings; if rowNames and colNames are NULL, default names are used

Definition at line 4805 of file soplex.cpp.

References SoPlex::saveSettingsFile(), SoPlex::writeBasisFile(), and SoPlex::writeFileReal().

Member Data Documentation

int _beforeLiftCols
private

Definition at line 1398 of file soplex.h.

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

int _beforeLiftRows
private

Definition at line 1397 of file soplex.h.

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

DVectorRational _feasObj
private

Definition at line 1382 of file soplex.h.

Referenced by SoPlex::_transformFeasibility(), and SoPlex::_untransformFeasibility().

bool _hasBasis
private

Definition at line 1438 of file soplex.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::_ensureRealLPLoaded(), SoPlex::_evaluateSolutionReal(), SoPlex::_factorizeColumnRational(), SoPlex::_isConsistent(), SoPlex::_lift(), SoPlex::_performOptIRStable(), SoPlex::_preprocessAndSolveReal(), SoPlex::_project(), SoPlex::_readFileRational(), SoPlex::_readFileReal(), SoPlex::_reconstructSolutionRational(), SoPlex::_removeColReal(), SoPlex::_removeColsReal(), SoPlex::_removeRowReal(), SoPlex::_removeRowsReal(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_restoreBasis(), SoPlex::_restoreLPReal(), SoPlex::_solveRational(), SoPlex::_solveReal(), SoPlex::_solveRealForRational(), SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_storeBasis(), SoPlex::_syncLPReal(), SoPlex::_transformEquality(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformEquality(), SoPlex::_untransformFeasibility(), SoPlex::_untransformUnbounded(), SoPlex::clearBasis(), SoPlex::clearLPRational(), SoPlex::clearLPReal(), SoPlex::getDualViolationRational(), SoPlex::getRedCostViolationRational(), SoPlex::hasBasis(), SoPlex::operator=(), SoPlex::readBasisFile(), SoPlex::setBasis(), and SoPlex::writeBasisFile().

int _lastSolveMode
private
DVectorReal _manualLhs
private

Definition at line 1363 of file soplex.h.

Referenced by SoPlex::_restoreLPReal(), and SoPlex::_storeLPReal().

DVectorReal _manualLower
private

Definition at line 1361 of file soplex.h.

Referenced by SoPlex::_restoreLPReal(), and SoPlex::_storeLPReal().

DVectorReal _manualObj
private

Definition at line 1365 of file soplex.h.

Referenced by SoPlex::_restoreLPReal(), and SoPlex::_storeLPReal().

SPxLPReal _manualRealLP
private

Definition at line 1366 of file soplex.h.

Referenced by SoPlex::_restoreLPReal(), and SoPlex::_storeLPReal().

DVectorReal _manualRhs
private

Definition at line 1364 of file soplex.h.

Referenced by SoPlex::_restoreLPReal(), and SoPlex::_storeLPReal().

DVectorReal _manualUpper
private

Definition at line 1362 of file soplex.h.

Referenced by SoPlex::_restoreLPReal(), and SoPlex::_storeLPReal().

DVectorRational _modLhs
private

Definition at line 1389 of file soplex.h.

Referenced by SoPlex::_performOptIRStable().

DVectorRational _modLower
private

Definition at line 1387 of file soplex.h.

Referenced by SoPlex::_performOptIRStable().

DVectorRational _modObj
private

Definition at line 1391 of file soplex.h.

Referenced by SoPlex::_performOptIRStable().

DVectorRational _modRhs
private

Definition at line 1390 of file soplex.h.

Referenced by SoPlex::_performOptIRStable().

DVectorRational _modUpper
private

Definition at line 1388 of file soplex.h.

Referenced by SoPlex::_performOptIRStable().

SPxAutoPR _pricerAuto
private

Definition at line 1343 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxDantzigPR _pricerDantzig
private

Definition at line 1344 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxDevexPR _pricerDevex
private

Definition at line 1346 of file soplex.h.

Referenced by SoPlex::_solveRealStable(), SoPlex::operator=(), and SoPlex::setIntParam().

SPxParMultPR _pricerParMult
private

Definition at line 1345 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxSteepPR _pricerQuickSteep
private

Definition at line 1347 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxSteepExPR _pricerSteep
private

Definition at line 1348 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

DSVectorRational _primalDualDiff
private

Definition at line 1392 of file soplex.h.

Referenced by SoPlex::_performOptIRStable().

SPxLPRational* _rationalLP
private

Definition at line 1374 of file soplex.h.

Referenced by SoPlex::_computeInfeasBox(), SoPlex::_ensureRationalLP(), SoPlex::_factorizeColumnRational(), SoPlex::_isConsistent(), SoPlex::_lift(), SoPlex::_performOptIRStable(), SoPlex::_project(), SoPlex::_readFileRational(), SoPlex::_recomputeRangeTypesRational(), SoPlex::_reconstructSolutionRational(), SoPlex::_syncLPRational(), SoPlex::_syncLPReal(), SoPlex::_transformEquality(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformEquality(), SoPlex::_untransformFeasibility(), SoPlex::_untransformUnbounded(), SoPlex::addColRational(), SoPlex::addColReal(), SoPlex::addColsRational(), SoPlex::addColsReal(), SoPlex::addRowRational(), SoPlex::addRowReal(), SoPlex::addRowsRational(), SoPlex::addRowsReal(), SoPlex::areLPsInSync(), SoPlex::changeBoundsRational(), SoPlex::changeBoundsReal(), SoPlex::changeColRational(), SoPlex::changeColReal(), SoPlex::changeElementRational(), SoPlex::changeElementReal(), SoPlex::changeLhsRational(), SoPlex::changeLhsReal(), SoPlex::changeLowerRational(), SoPlex::changeLowerReal(), SoPlex::changeObjRational(), SoPlex::changeObjReal(), SoPlex::changeRangeRational(), SoPlex::changeRangeReal(), SoPlex::changeRhsRational(), SoPlex::changeRhsReal(), SoPlex::changeRowRational(), SoPlex::changeRowReal(), SoPlex::changeUpperRational(), SoPlex::changeUpperReal(), SoPlex::clearLPRational(), SoPlex::clearLPReal(), SoPlex::colVectorRational(), SoPlex::getColRational(), SoPlex::getColsRational(), SoPlex::getDualFarkasRational(), SoPlex::getDualRational(), SoPlex::getObjRational(), SoPlex::getPrimalRational(), SoPlex::getPrimalRayRational(), SoPlex::getRedCostRational(), SoPlex::getRowRational(), SoPlex::getRowsRational(), SoPlex::getRowViolationRational(), SoPlex::getSlacksRational(), SoPlex::lhsRational(), SoPlex::lowerRational(), SoPlex::maxAbsNonzeroRational(), SoPlex::maxObjRational(), SoPlex::minAbsNonzeroRational(), SoPlex::numColsRational(), SoPlex::numNonzerosRational(), SoPlex::numRowsRational(), SoPlex::objRational(), SoPlex::operator=(), SoPlex::printStatistics(), SoPlex::removeColRational(), SoPlex::removeColReal(), SoPlex::removeColsRational(), SoPlex::removeColsReal(), SoPlex::removeRowRational(), SoPlex::removeRowReal(), SoPlex::removeRowsRational(), SoPlex::removeRowsReal(), SoPlex::rhsRational(), SoPlex::rowTypeRational(), SoPlex::rowVectorRational(), SoPlex::setIntParam(), SoPlex::upperRational(), SoPlex::writeFileRational(), and SoPlex::~SoPlex().

Rational _rationalMaxscaleincr
private

Definition at line 1325 of file soplex.h.

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

Rational _rationalOpttol
private

Definition at line 1324 of file soplex.h.

Referenced by SoPlex::_performOptIRStable(), SoPlex::_project(), and SoPlex::setRealParam().

SPxBoundFlippingRT _ratiotesterBoundFlipping
private

Definition at line 1352 of file soplex.h.

Referenced by SoPlex::operator=(), SoPlex::setBoolParam(), and SoPlex::setIntParam().

SPxFastRT _ratiotesterFast
private

Definition at line 1351 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxHarrisRT _ratiotesterHarris
private

Definition at line 1350 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxDefaultRT _ratiotesterTextbook
private

Definition at line 1349 of file soplex.h.

Referenced by SoPlex::_solveRealStable(), SoPlex::operator=(), and SoPlex::setIntParam().

SPxLPReal* _realLP
private

Definition at line 1354 of file soplex.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::_ensureRealLPLoaded(), SoPlex::_isConsistent(), SoPlex::_lift(), SoPlex::_performOptIRStable(), SoPlex::_preprocessAndSolveReal(), SoPlex::_project(), SoPlex::_readFileReal(), SoPlex::_recomputeRangeTypesReal(), SoPlex::_removeColReal(), SoPlex::_removeColsReal(), SoPlex::_removeRowReal(), SoPlex::_removeRowsReal(), SoPlex::_restoreLPReal(), SoPlex::_solveRational(), SoPlex::_storeLPReal(), SoPlex::_syncLPRational(), SoPlex::_syncLPReal(), SoPlex::_transformEquality(), SoPlex::_transformFeasibility(), SoPlex::_transformUnbounded(), SoPlex::_untransformEquality(), SoPlex::_untransformFeasibility(), SoPlex::_untransformUnbounded(), SoPlex::addColReal(), SoPlex::addColsReal(), SoPlex::addRowReal(), SoPlex::addRowsReal(), SoPlex::areLPsInSync(), SoPlex::changeBoundsReal(), SoPlex::changeColReal(), SoPlex::changeElementReal(), SoPlex::changeLhsReal(), SoPlex::changeLowerReal(), SoPlex::changeObjRational(), SoPlex::changeObjReal(), SoPlex::changeRangeReal(), SoPlex::changeRhsReal(), SoPlex::changeRowReal(), SoPlex::changeUpperReal(), SoPlex::clearLPRational(), SoPlex::clearLPReal(), SoPlex::colVectorReal(), SoPlex::getColReal(), SoPlex::getColsReal(), SoPlex::getObjReal(), SoPlex::getRowReal(), SoPlex::getRowsReal(), SoPlex::getRowViolationReal(), SoPlex::lhsReal(), SoPlex::lowerReal(), SoPlex::maxAbsNonzeroReal(), SoPlex::maxObjReal(), SoPlex::minAbsNonzeroReal(), SoPlex::numColsReal(), SoPlex::numNonzerosReal(), SoPlex::numRowsReal(), SoPlex::objReal(), SoPlex::operator=(), SoPlex::printStatistics(), SoPlex::readBasisFile(), SoPlex::removeColReal(), SoPlex::removeColsReal(), SoPlex::removeRowReal(), SoPlex::removeRowsReal(), SoPlex::rhsReal(), SoPlex::rowTypeReal(), SoPlex::rowVectorReal(), SoPlex::setIntParam(), SoPlex::SoPlex(), SoPlex::upperReal(), SoPlex::writeFileReal(), and SoPlex::~SoPlex().

SPxEquiliSC _scalerBiequi
private
SPxGeometSC _scalerGeo1
private
SPxGeometSC _scalerGeo8
private
SPxEquiliSC _scalerUniequi
private
SPxMainSM _simplifierMainSM
private
SPxSolver _solver
private
SPxStarter* _starter
private

Definition at line 1357 of file soplex.h.

Referenced by SoPlex::getStarterName(), and SoPlex::setIntParam().

SPxSumST _starterSum
private

Definition at line 1341 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxVectorST _starterVector
private

Definition at line 1342 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

SPxWeightST _starterWeight
private

Definition at line 1340 of file soplex.h.

Referenced by SoPlex::operator=(), and SoPlex::setIntParam().

bool _storedBasis
private

Definition at line 1396 of file soplex.h.

Referenced by SoPlex::_restoreBasis(), SoPlex::_solveRational(), and SoPlex::_storeBasis().

DataArray< SPxSolver::VarStatus > _storedBasisStatusCols
private

Definition at line 1394 of file soplex.h.

Referenced by SoPlex::_restoreBasis(), and SoPlex::_storeBasis().

DataArray< SPxSolver::VarStatus > _storedBasisStatusRows
private

Definition at line 1393 of file soplex.h.

Referenced by SoPlex::_restoreBasis(), and SoPlex::_storeBasis().

DSVectorRational _tauColVector
private

Definition at line 1381 of file soplex.h.

Referenced by SoPlex::_transformFeasibility().

DVectorRational _unboundedLhs
private

Definition at line 1379 of file soplex.h.

Referenced by SoPlex::_transformUnbounded(), and SoPlex::_untransformUnbounded().

DVectorRational _unboundedLower
private

Definition at line 1377 of file soplex.h.

Referenced by SoPlex::_transformUnbounded(), and SoPlex::_untransformUnbounded().

DVectorRational _unboundedRhs
private

Definition at line 1380 of file soplex.h.

Referenced by SoPlex::_transformUnbounded(), and SoPlex::_untransformUnbounded().

DVectorRational _unboundedUpper
private

Definition at line 1378 of file soplex.h.

Referenced by SoPlex::_transformUnbounded(), and SoPlex::_untransformUnbounded().

DataArray< UnitVectorRational* > _unitMatrixRational
private

Definition at line 1395 of file soplex.h.

Referenced by SoPlex::_unitVectorRational(), and SoPlex::~SoPlex().

SolRational _workSol
private