#include <soplex.h>
Classes | |
struct | RowViolation |
struct | RowViolationCompare |
class | Settings |
class of parameter settings More... | |
class | Statistics |
Public Member Functions | |
Construction and destruction | |
SoPlexBase () | |
default constructor More... | |
SoPlexBase< R > & | operator= (const SoPlexBase< R > &rhs) |
assignment operator More... | |
SoPlexBase (const SoPlexBase< R > &rhs) | |
copy constructor More... | |
virtual | ~SoPlexBase () |
destructor More... | |
Access to the real LP | |
int | numRows () const |
returns number of rows More... | |
int | numRowsReal () const |
int | numRowsRational () const |
int | numCols () const |
Templated function that returns number of columns. More... | |
int | numColsReal () const |
int | numColsRational () const |
int | numNonzeros () const |
returns number of nonzeros More... | |
int | numNonzerosRational () const |
R | minAbsNonzeroReal () const |
returns smallest non-zero element in absolute value More... | |
R | maxAbsNonzeroReal () const |
returns biggest non-zero element in absolute value More... | |
R | coefReal (int row, int col) const |
returns (unscaled) coefficient More... | |
const SVectorBase< R > & | rowVectorRealInternal (int i) const |
returns vector of row i , ignoring scaling More... | |
void | getRowVectorReal (int i, DSVectorBase< R > &row) const |
gets vector of row i More... | |
const VectorBase< R > & | rhsRealInternal () const |
returns right-hand side vector, ignoring scaling More... | |
void | getRhsReal (VectorBase< R > &rhs) const |
gets right-hand side vector More... | |
R | rhsReal (int i) const |
returns right-hand side of row i More... | |
const VectorBase< R > & | lhsRealInternal () const |
returns left-hand side vector, ignoring scaling More... | |
void | getLhsReal (VectorBase< R > &lhs) const |
gets left-hand side vector More... | |
R | lhsReal (int i) const |
returns left-hand side of row i More... | |
LPRowBase< R >::Type | rowTypeReal (int i) const |
returns inequality type of row i More... | |
const SVectorBase< R > & | colVectorRealInternal (int i) const |
returns vector of col i , ignoring scaling More... | |
void | getColVectorReal (int i, DSVectorBase< R > &col) const |
gets vector of col i More... | |
const VectorBase< R > & | upperRealInternal () const |
returns upper bound vector More... | |
R | upperReal (int i) const |
returns upper bound of column i More... | |
void | getUpperReal (VectorBase< R > &upper) const |
gets upper bound vector More... | |
const VectorBase< R > & | lowerRealInternal () const |
returns lower bound vector More... | |
R | lowerReal (int i) const |
returns lower bound of column i More... | |
void | getLowerReal (VectorBase< R > &lower) const |
gets lower bound vector More... | |
void | getObjReal (VectorBase< R > &obj) const |
gets objective function vector More... | |
R | objReal (int i) const |
returns objective value of column i More... | |
const VectorBase< R > & | maxObjRealInternal () const |
returns objective function vector after transformation to a maximization problem; since this is how it is stored internally, this is generally faster More... | |
R | 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, R *norms) const |
gets steepest edge norms and returns false if they are not available More... | |
bool | setDualNorms (int nnormsRow, int nnormsCol, R *norms) |
sets steepest edge norms and returns false if that's not possible More... | |
void | setIntegralityInformation (int ncols, int *intInfo) |
pass integrality information about the variables to the solver More... | |
Access to the rational LP | |
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 SVectorRational & | rowVectorRational (int i) const |
returns vector of row i More... | |
const VectorRational & | rhsRational () const |
returns right-hand side vector More... | |
const Rational & | rhsRational (int i) const |
returns right-hand side of row i More... | |
const VectorRational & | lhsRational () const |
returns left-hand side vector More... | |
const Rational & | lhsRational (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 SVectorRational & | colVectorRational (int i) const |
returns vector of column i More... | |
const VectorRational & | upperRational () const |
returns upper bound vector More... | |
const Rational & | upperRational (int i) const |
returns upper bound of column i More... | |
const VectorRational & | lowerRational () const |
returns lower bound vector More... | |
const Rational & | lowerRational (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 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 More... | |
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 More... | |
Modification of the real LP | |
void | addRowReal (const LPRowBase< R > &lprow) |
adds a single row More... | |
void | addRowsReal (const LPRowSetBase< R > &lprowset) |
adds multiple rows More... | |
void | addColReal (const LPColBase< R > &lpcol) |
adds a single column More... | |
void | addColsReal (const LPColSetBase< R > &lpcolset) |
adds multiple columns More... | |
void | changeRowReal (int i, const LPRowBase< R > &lprow) |
replaces row i with lprow More... | |
void | changeLhsReal (const VectorBase< R > &lhs) |
changes left-hand side vector for constraints to lhs More... | |
void | changeLhsReal (int i, const R &lhs) |
changes left-hand side of row i to lhs More... | |
void | changeRhsReal (const VectorBase< R > &rhs) |
changes right-hand side vector to rhs More... | |
void | changeRhsReal (int i, const R &rhs) |
changes right-hand side of row i to rhs More... | |
void | changeRangeReal (const VectorBase< R > &lhs, const VectorBase< R > &rhs) |
changes left- and right-hand side vectors More... | |
void | changeRangeReal (int i, const R &lhs, const R &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 VectorBase< R > &lower) |
changes vector of lower bounds to lower More... | |
void | changeLowerReal (int i, const R &lower) |
changes lower bound of column i to lower More... | |
void | changeUpperReal (const VectorBase< R > &upper) |
changes vector of upper bounds to upper More... | |
void | changeUpperReal (int i, const R &upper) |
changes i 'th upper bound to upper More... | |
void | changeBoundsReal (const VectorBase< R > &lower, const VectorBase< R > &upper) |
changes vectors of column bounds to lower and upper More... | |
void | changeBoundsReal (int i, const R &lower, const R &upper) |
changes bounds of column i to lower and upper More... | |
void | changeObjReal (const VectorBase< R > &obj) |
changes objective function vector to obj More... | |
void | changeObjReal (int i, const R &obj) |
changes objective coefficient of column i to obj More... | |
void | changeElementReal (int i, int j, const R &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 numRows() 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 numRows() 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 numRows() 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... | |
Modification of the rational LP | |
void | addRowRational (const LPRowRational &lprow) |
adds a single row More... | |
void | addRowRational (const mpq_t *lhs, const mpq_t *rowValues, const int *rowIndices, const int rowSize, const mpq_t *rhs) |
adds a single row (GMP only method) More... | |
void | addRowsRational (const mpq_t *lhs, const mpq_t *rowValues, const int *rowIndices, const int *rowStarts, const int *rowLengths, const int numRows, const int numValues, const mpq_t *rhs) |
adds a set of rows (GMP only method) More... | |
void | addRowsRational (const LPRowSetRational &lprowset) |
adds multiple rows More... | |
void | addColRational (const LPColRational &lpcol) |
adds a single column More... | |
void | addColRational (const mpq_t *obj, const mpq_t *lower, const mpq_t *colValues, const int *colIndices, const int colSize, const mpq_t *upper) |
adds a single column (GMP only method) More... | |
void | addColsRational (const mpq_t *obj, const mpq_t *lower, const mpq_t *colValues, const int *colIndices, const int *colStarts, const int *colLengths, const int numCols, const int numValues, const mpq_t *upper) |
adds a set of columns (GMP only method) 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 | changeLhsRational (int i, const mpq_t *lhs) |
changes left-hand side of row i to lhs (GMP only method) More... | |
void | changeRhsRational (const VectorRational &rhs) |
changes right-hand side vector to rhs More... | |
void | changeRhsRational (const mpq_t *rhs, int rhsSize) |
changes right-hand side vector to rhs (GMP only method) 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 | changeRangeRational (int i, const mpq_t *lhs, const mpq_t *rhs) |
changes left- and right-hand side of row i (GMP only method) 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 | changeLowerRational (int i, const mpq_t *lower) |
changes lower bound of column i to lower (GMP only method) 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 | changeUpperRational (int i, const mpq_t *upper) |
changes upper bound of column i to upper (GMP only method) 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 | changeBoundsRational (int i, const mpq_t *lower, const mpq_t *upper) |
changes bounds of column i to lower and upper (GMP only method) 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 | changeObjRational (int i, const mpq_t *obj) |
changes objective coefficient of column i to obj (GMP only method) More... | |
void | changeElementRational (int i, int j, const Rational &val) |
changes matrix entry in row i and column j to val More... | |
void | changeElementRational (int i, int j, const mpq_t *val) |
changes matrix entry in row i and column j to val (GMP only method) 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... | |
Solving and general solution query | |
SPxSolverBase< R >::Status | optimize (volatile bool *interrupt=NULL) |
optimize the given LP More... | |
SPxSolverBase< R >::Status | solve (volatile bool *interrupt=NULL) |
SPxSolverBase< R >::Status | status () const |
returns the current solver status More... | |
bool | isPrimalFeasible () const |
is stored primal solution feasible? More... | |
bool | hasSol () const |
is a solution available (not neccessarily feasible)? More... | |
bool | hasPrimal () const |
deprecated: use hasSol() instead More... | |
bool | hasDual () const |
deprecated: use hasSol() instead More... | |
bool | hasPrimalRay () const |
is a primal unbounded ray available? More... | |
bool | isDualFeasible () const |
is stored dual solution feasible? More... | |
bool | hasDualFarkas () const |
is Farkas proof of infeasibility available? More... | |
bool | ignoreUnscaledViolations () |
sets the status to OPTIMAL in case the LP has been solved with unscaled violations More... | |
Query for the real solution data | |
R | objValueReal () |
returns the objective value if a primal solution is available More... | |
bool | getPrimal (VectorBase< R > &vector) |
gets the primal solution vector if available; returns true on success More... | |
bool | getPrimalReal (R *p_vector, int size) |
bool | getPrimalRational (VectorRational &vector) |
bool | getSlacksReal (VectorBase< R > &vector) |
gets the vector of slack values if available; returns true on success More... | |
bool | getSlacksReal (R *p_vector, int dim) |
bool | getPrimalRay (VectorBase< R > &vector) |
gets the primal ray if available; returns true on success More... | |
bool | getPrimalRayReal (R *vector, int dim) |
bool | getPrimalRayRational (VectorRational &vector) |
bool | getDual (VectorBase< R > &vector) |
gets the dual solution vector if available; returns true on success More... | |
bool | getDualReal (R *p_vector, int dim) |
bool | getDualRational (VectorRational &vector) |
bool | getRedCost (VectorBase< R > &vector) |
gets the vector of reduced cost values if available; returns true on success More... | |
bool | getRedCostReal (R *vector, int dim) |
bool | getRedCostRational (VectorRational &vector) |
bool | getDualFarkas (VectorBase< R > &vector) |
gets the Farkas proof if available; returns true on success More... | |
bool | getDualFarkasReal (R *vector, int dim) |
bool | getDualFarkasRational (VectorRational &vector) |
bool | getBoundViolation (R &maxviol, R &sumviol) |
gets violation of bounds; returns true on success More... | |
bool | getBoundViolationRational (Rational &maxviol, Rational &sumviol) |
bool | getRowViolation (R &maxviol, R &sumviol) |
gets violation of constraints; returns true on success More... | |
bool | getRowViolationRational (Rational &maxviol, Rational &sumviol) |
bool | getRedCostViolation (R &maxviol, R &sumviol) |
gets violation of reduced costs; returns true on success More... | |
bool | getRedCostViolationRational (Rational &maxviol, Rational &sumviol) |
bool | getDualViolation (R &maxviol, R &sumviol) |
gets violation of dual multipliers; returns true on success More... | |
bool | getDualViolationRational (Rational &maxviol, Rational &sumviol) |
Query for the rational solution data | |
Rational | objValueRational () |
returns the objective value if a primal solution is available More... | |
bool | getSlacksRational (VectorRational &vector) |
gets the vector of slack values if available; returns true on success More... | |
bool | getPrimalRational (mpq_t *vector, const int size) |
gets the primal solution vector if available; returns true on success (GMP only method) More... | |
bool | getSlacksRational (mpq_t *vector, const int size) |
gets the vector of slack values if available; returns true on success (GMP only method) More... | |
bool | getPrimalRayRational (mpq_t *vector, const int size) |
gets the primal ray if LP is unbounded; returns true on success (GMP only method) More... | |
bool | getDualRational (mpq_t *vector, const int size) |
gets the dual solution vector if available; returns true on success (GMP only method) More... | |
bool | getRedCostRational (mpq_t *vector, const int size) |
gets the vector of reduced cost values if available; returns true on success (GMP only method) More... | |
bool | getDualFarkasRational (mpq_t *vector, const int size) |
gets the Farkas proof if LP is infeasible; returns true on success (GMP only method) 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... | |
Access and modification of basis information | |
bool | hasBasis () const |
is an advanced starting basis available? More... | |
SPxBasisBase< R >::SPxStatus | basisStatus () const |
returns the current basis status More... | |
SPxSolverBase< R >::VarStatus | basisRowStatus (int row) const |
returns basis status for a single row More... | |
SPxSolverBase< R >::VarStatus | basisColStatus (int col) const |
returns basis status for a single column More... | |
void | getBasis (typename SPxSolverBase< R >::VarStatus rows[], typename SPxSolverBase< R >::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 | getBasisMetric (R &metric, int type=0) |
bool | getEstimatedCondition (R &condition) |
computes an estimated condition number for the current basis matrix using the power method; returns true on success More... | |
bool | getExactCondition (R &condition) |
computes the exact condition number for the current basis matrix using the power method; returns true on success More... | |
bool | getBasisInverseRowReal (int r, R *coef, int *inds=NULL, int *ninds=NULL, bool unscale=true) |
computes row r of basis inverse; returns true on success More... | |
bool | getBasisInverseColReal (int c, R *coef, int *inds=NULL, int *ninds=NULL, bool unscale=true) |
computes column c of basis inverse; returns true on success More... | |
bool | getBasisInverseTimesVecReal (R *rhs, R *sol, bool unscale=true) |
computes dense solution of basis matrix B * sol = rhs ; returns true on success More... | |
bool | multBasis (R *vec, bool unscale=true) |
multiply with basis matrix; B * vec (inplace) More... | |
bool | multBasisTranspose (R *vec, bool unscale=true) |
multiply with transpose of basis matrix; vec * B^T (inplace) More... | |
bool | computeBasisInverseRational () |
compute rational basis inverse; returns true on success More... | |
bool | getBasisIndRational (DataArray< int > &bind) |
gets an array of indices for the columns of the rational basis matrix; bind[i] >= 0 means that the i-th column of the basis matrix contains variable bind[i]; bind[i] < 0 means that the i-th column of the basis matrix contains the slack variable for row -bind[i]-1; performs rational factorization if not available; returns true on success More... | |
bool | getBasisInverseRowRational (const int r, SSVectorRational &vec) |
computes row r of basis inverse; performs rational factorization if not available; returns true on success More... | |
bool | getBasisInverseColRational (const int c, SSVectorRational &vec) |
computes column c of basis inverse; performs rational factorization if not available; returns true on success More... | |
bool | getBasisInverseTimesVecRational (const SVectorRational &rhs, SSVectorRational &sol) |
computes solution of basis matrix B * sol = rhs; performs rational factorization if not available; returns true on success More... | |
void | setBasis (const typename SPxSolverBase< R >::VarStatus rows[], const typename SPxSolverBase< R >::VarStatus cols[]) |
sets starting basis via arrays of statuses More... | |
void | clearBasis () |
clears starting basis More... | |
Statistical information | |
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... | |
File I/O | |
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 | writeFile (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0, const bool unscale=true) const |
Templated write function Real 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 Rational 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 | writeFileRational (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0) const |
bool | writeFileReal (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0, const bool unscale=true) const |
bool | writeDualFileReal (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *intvars=0) const |
writes the dual of the 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 | 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... | |
Statistics | |
void | setTimings (const Timer::TYPE ttype) |
set statistic timers to a certain type 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, typename SPxSolverBase< R >::Status status) |
prints status More... | |
Private Member Functions | |
Constant helper methods | |
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 R &lower, const R &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... | |
Non-constant helper methods | |
void | _addRowReal (const LPRowBase< R > &lprow) |
adds a single row to the real LP and adjusts basis More... | |
void | _addRowReal (R lhs, const SVectorBase< R > &lprow, R rhs) |
adds a single row to the real LP and adjusts basis More... | |
void | _addRowsReal (const LPRowSetBase< R > &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 (R obj, R lower, const SVectorBase< R > &lpcol, R 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 LPRowBase< R > &lprow) |
replaces row i with lprow and adjusts basis More... | |
void | _changeLhsReal (const VectorBase< R > &lhs) |
changes left-hand side vector for constraints to lhs and adjusts basis More... | |
void | _changeLhsReal (int i, const R &lhs) |
changes left-hand side of row i to lhs and adjusts basis More... | |
void | _changeRhsReal (const VectorBase< R > &rhs) |
changes right-hand side vector to rhs and adjusts basis More... | |
void | _changeRhsReal (int i, const R &rhs) |
changes right-hand side of row i to rhs and adjusts basis More... | |
void | _changeRangeReal (const VectorBase< R > &lhs, const VectorBase< R > &rhs) |
changes left- and right-hand side vectors and adjusts basis More... | |
void | _changeRangeReal (int i, const R &lhs, const R &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 VectorBase< R > &lower) |
changes vector of lower bounds to lower and adjusts basis More... | |
void | _changeLowerReal (int i, const R &lower) |
changes lower bound of column i to lower and adjusts basis More... | |
void | _changeUpperReal (const VectorBase< R > &upper) |
changes vector of upper bounds to upper and adjusts basis More... | |
void | _changeUpperReal (int i, const R &upper) |
changes i 'th upper bound to upper and adjusts basis More... | |
void | _changeBoundsReal (const VectorBase< R > &lower, const VectorBase< R > &upper) |
changes vectors of column bounds to lower and upper and adjusts basis More... | |
void | _changeBoundsReal (int i, const R &lower, const R &upper) |
changes bounds of column i to lower and upper and adjusts basis More... | |
void | _changeElementReal (int i, int j, const R &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 numRows() 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 numRows() 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 numRows() 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 (volatile bool *interrupt=NULL) |
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 | _completeRangeTypesRational () |
completes range type arrays after adding columns and/or rows 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 rational solution with real solution, i.e., copies (rounded) rational solution to real solution More... | |
void | _syncRationalSolution () |
synchronizes real solution with rational solution, i.e., copies real solution to rational solution More... | |
const UnitVectorRational * | _unitVectorRational (const int i) |
returns pointer to a constant unit vector available until destruction of the SoPlexBase 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 | _performOptIRStable (SolRational &sol, bool acceptUnbounded, bool acceptInfeasible, int minRounds, bool &primalFeasible, bool &dualFeasible, bool &infeasible, bool &unbounded, bool &stoppedTime, bool &stoppedIter, bool &error) |
solves current problem with iterative refinement and recovery mechanism More... | |
void | _performUnboundedIRStable (SolRational &sol, bool &hasUnboundedRay, bool &stoppedTime, bool &stoppedIter, bool &error) |
performs iterative refinement on the auxiliary problem for testing unboundedness More... | |
void | _performFeasIRStable (SolRational &sol, bool &withDualFarkas, bool &stoppedTime, 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) |
SPxSolverBase< R >::Status | _solveRealForRational (bool fromscratch, VectorBase< R > &primal, VectorBase< R > &dual, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusRows, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusCols) |
solves real LP during iterative refinement More... | |
SPxSolverBase< R >::Status | _solveRealStable (bool acceptUnbounded, bool acceptInfeasible, VectorBase< R > &primal, VectorBase< R > &dual, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusRows, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusCols, const bool forceNoSimplifier=false) |
solves real LP with recovery mechanism More... | |
void | _computeBasisInverseRational () |
computes rational inverse of basis matrix as defined by _rationalLUSolverBind More... | |
void | _factorizeColumnRational (SolRational &sol, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusRows, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusCols, bool &stoppedTime, bool &stoppedIter, bool &error, bool &optimal) |
factorizes rational basis matrix in column representation More... | |
bool | _reconstructSolutionRational (SolRational &sol, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusRows, DataArray< typename SPxSolverBase< R >::VarStatus > &basisStatusCols, const Rational &denomBoundSquared) |
attempts rational reconstruction of primal-dual solution More... | |
Private solving methods implemented in solvereal.cpp | |
void | _optimize (volatile bool *interrupt=NULL) |
solves the templated LP More... | |
void | _optimizeRational (volatile bool *interrupt=NULL) |
temporary fix for Rational More... | |
void | _evaluateSolutionReal (typename SPxSimplifier< R >::Result simplificationStatus) |
checks result of the solving process and solves again without preprocessing if necessary More... | |
void | _preprocessAndSolveReal (bool applyPreprocessing, volatile bool *interrupt=NULL) |
solves real LP with/without preprocessing More... | |
void | _resolveWithoutPreprocessing (typename SPxSimplifier< R >::Result simplificationStatus) |
loads original problem into solver and solves again after it has been solved to optimality with preprocessing More... | |
void | _verifySolutionReal () |
verify computed solution and resolve if necessary More... | |
void | _storeSolutionReal (bool verify=true) |
stores solution of the real LP; before calling this, the real LP must be loaded in the solver and solved (again) More... | |
void | _storeSolutionRealFromPresol () |
stores solution from the simplifier because problem vanished in presolving step More... | |
void | _unscaleSolutionReal (SPxLPBase< R > &LP, bool persistent=true) |
unscales stored solution to remove internal or external scaling of LP More... | |
void | _loadRealLP (bool initBasis) |
load original LP and possibly setup a slack basis More... | |
void | _checkScaling (SPxLPBase< R > *origLP) const |
check scaling of LP More... | |
void | _checkBasisScaling () |
check correctness of (un)scaled basis matrix operations More... | |
bool | _reapplyPersistentScaling () const |
check whether persistent scaling is supposed to be reapplied again after unscaling More... | |
void | _solveDecompositionDualSimplex () |
solves LP using the decomposition based dual simplex More... | |
void | _createDecompReducedAndComplementaryProblems () |
creating copies of the original problem that will be manipulated to form the reduced and complementary problems More... | |
void | _formDecompReducedProblem (bool &stop) |
forms the reduced problem More... | |
void | _solveDecompReducedProblem () |
solves the reduced problem More... | |
void | _formDecompComplementaryProblem () |
forms the complementary problem More... | |
void | _decompSimplifyAndSolve (SPxSolverBase< R > &solver, SLUFactor< R > &sluFactor, bool fromScratch, bool applyPreprocessing) |
simplifies the problem and solves More... | |
void | _decompResolveWithoutPreprocessing (SPxSolverBase< R > &solver, SLUFactor< R > &sluFactor, typename SPxSimplifier< R >::Result result) |
loads original problem into solver and solves again after it has been solved to optimality with preprocessing More... | |
void | _getZeroDualMultiplierIndices (VectorBase< R > feasVector, int *nonposind, int *colsforremoval, int *nnonposind, bool &stop) |
identifies the columns of the row-form basis that correspond to rows with zero dual multipliers. More... | |
void | _getCompatibleColumns (VectorBase< R > feasVector, int *nonposind, int *compatind, int *rowsforremoval, int *colsforremoval, int nnonposind, int *ncompatind, bool formRedProb, bool &stop) |
retrieves the compatible columns from the constraint matrix More... | |
void | _computeReducedProbObjCoeff (bool &stop) |
computes the reduced problem objective coefficients More... | |
void | _getCompatibleBoundCons (LPRowSetBase< R > &boundcons, int *compatboundcons, int *nonposind, int *ncompatboundcons, int nnonposind, bool &stop) |
computes the compatible bound constraints and adds them to the reduced problem More... | |
void | _getRowsForRemovalComplementaryProblem (int *nonposind, int *bind, int *rowsforremoval, int *nrowsforremoval, int nnonposind) |
computes the rows to remove from the complementary problem More... | |
void | _deleteAndUpdateRowsComplementaryProblem (SPxRowId rangedRowIds[], int &naddedrows) |
removing rows from the complementary problem. More... | |
void | _evaluateSolutionDecomp (SPxSolverBase< R > &solver, SLUFactor< R > &sluFactor, typename SPxSimplifier< R >::Result result) |
evaluates the solution of the reduced problem for the DBDS More... | |
void | _updateDecompReducedProblem (R objVal, VectorBase< R > dualVector, VectorBase< R > redcostVector, VectorBase< R > compPrimalVector, VectorBase< R > compDualVector) |
update the reduced problem with additional columns and rows More... | |
void | _updateDecompReducedProblemViol (bool allrows) |
update the reduced problem with additional columns and rows based upon the violated original bounds and rows More... | |
void | _findViolatedRows (R compObjValue, Array< RowViolation > &violatedrows, int &nviolatedrows) |
builds the update rows with those violated in the complmentary problem More... | |
void | _updateDecompComplementaryDualProblem (bool origObj) |
update the dual complementary problem with additional columns and rows More... | |
void | _updateDecompComplementaryPrimalProblem (bool origObj) |
update the primal complementary problem with additional columns and rows More... | |
void | _checkOriginalProblemOptimality (VectorBase< R > primalVector, bool printViol) |
checking the optimality of the original problem. More... | |
void | _updateComplementaryDualSlackColCoeff () |
updating the slack column coefficients to adjust for equality constraints More... | |
void | _updateComplementaryPrimalSlackColCoeff () |
updating the slack column coefficients to adjust for equality constraints More... | |
void | _removeComplementaryDualFixedPrimalVars (int *currFixedVars) |
removing the dual columns related to the fixed variables More... | |
void | _identifyComplementaryDualFixedPrimalVars (int *currFixedVars) |
removing the dual columns related to the fixed variables More... | |
void | _updateComplementaryDualFixedPrimalVars (int *currFixedVars) |
updating the dual columns related to the fixed primal variables. More... | |
void | _identifyComplementaryPrimalFixedPrimalVars (int *currFixedVars) |
removing the dual columns related to the fixed variables More... | |
void | _updateComplementaryPrimalFixedPrimalVars (int *currFixedVars) |
updating the dual columns related to the fixed primal variables. More... | |
void | _setComplementaryDualOriginalObjective () |
updating the complementary dual problem with the original objective function More... | |
void | _setComplementaryPrimalOriginalObjective () |
updating the complementary primal problem with the original objective function More... | |
int | getOrigVarFixedDirection (int colNum) |
determining which bound the primal variables will be fixed to. More... | |
bool | checkBasisDualFeasibility (VectorBase< R > feasVec) |
checks the dual feasibility of the current basis More... | |
DualSign | getExpectedDualVariableSign (int rowNumber) |
returns the expected sign of the dual variables for the reduced problem More... | |
DualSign | getOrigProbDualVariableSign (int rowNumber) |
returns the expected sign of the dual variables for the original problem More... | |
void | printDecompDisplayLine (SPxSolverBase< R > &solver, const SPxOut::Verbosity origVerb, bool force, bool forceHead) |
prints a display line of the flying table for the DBDS More... | |
void | getOriginalProblemStatistics () |
stores the problem statistics of the original problem More... | |
void | printOriginalProblemStatistics (std::ostream &os) |
stores the problem statistics of the original problem More... | |
R | getCompSlackVarCoeff (int primalRowNum) |
gets the coefficient of the slack variable in the primal complementary problem More... | |
bool | getDecompBoundViolation (R &maxviol, R &sumviol) |
gets violation of bounds; returns true on success More... | |
bool | getDecompRowViolation (R &maxviol, R &sumviol) |
gets violation of constraints; returns true on success More... | |
bool | decompTerminate (R timeLimit) |
function call to terminate the decomposition simplex More... | |
void | _writeOriginalProblemBasis (const char *filename, NameSet *rowNames, NameSet *colNames, bool cpxFormat) |
function to build a basis for the original problem as given by the solution to the reduced problem More... | |
void | getOriginalProblemBasisRowStatus (DataArray< int > °enerateRowNums, DataArray< typename SPxSolverBase< R >::VarStatus > °enerateRowStatus, int &nDegenerateRows, int &nNonBasicRows) |
function to retrieve the original problem row basis status from the reduced and complementary problems More... | |
void | getOriginalProblemBasisColStatus (int &nNonBasicCols) |
function to retrieve the column status for the original problem basis from the reduced and complementary problems More... | |
Parameters | |
enum | BoolParam { LIFTING = 0, EQTRANS = 1, TESTDUALINF = 2, RATFAC = 3, USEDECOMPDUALSIMPLEX = 4, COMPUTEDEGEN = 5, USECOMPDUAL = 6, EXPLICITVIOL = 7, ACCEPTCYCLING = 8, RATREC = 9, POWERSCALING = 10, RATFACJUMP = 11, ROWBOUNDFLIPS = 12, PERSISTENTSCALING = 13, FULLPERTURBATION = 14, ENSURERAY = 15, FORCEBASIC = 16, BOOLPARAM_COUNT = 17 } |
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, LEASTSQ_MAXROUNDS = 22, SOLUTION_POLISHING = 23, DECOMP_ITERLIMIT = 24, DECOMP_MAXADDEDROWS = 25, DECOMP_DISPLAYFREQ = 26, DECOMP_VERBOSITY = 27, PRINTBASISMETRIC = 28, STATTIMER = 29, INTPARAM_COUNT = 30 } |
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_INTERNAL = 3, SIMPLIFIER_PAPILO = 2, SIMPLIFIER_AUTO = 1 } |
values for parameter SIMPLIFIER More... | |
enum | { SCALER_OFF = 0, SCALER_UNIEQUI = 1, SCALER_BIEQUI = 2, SCALER_GEO1 = 3, SCALER_GEO8 = 4, SCALER_LEASTSQ = 5, SCALER_GEOEQUI = 6 } |
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 | { POLISHING_OFF = 0, POLISHING_INTEGRALITY = 1, POLISHING_FRACTIONALITY = 2 } |
values for parameter SOLUTION_POLISHING 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, REFAC_BASIS_NNZ = 19, REFAC_UPDATE_FILL = 20, REFAC_MEM_FACTOR = 21, LEASTSQ_ACRCY = 22, OBJ_OFFSET = 23, MIN_MARKOWITZ = 24, SIMPLIFIER_MODIFYROWFAC = 25, REALPARAM_COUNT = 26 } |
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 Settings & | settings () const |
returns current parameter settings More... | |
bool | setBoolParam (const BoolParam param, const bool value, const bool init=true) |
sets boolean parameter value; returns true on success More... | |
bool | setIntParam (const IntParam param, const int value, const bool init=true) |
sets integer parameter value; returns true on success More... | |
bool | setRealParam (const RealParam param, const Real value, const bool init=true) |
sets real parameter value; returns true on success More... | |
bool | setSettings (const Settings &newSettings, const bool init=true) |
sets parameter settings; returns true on success More... | |
void | resetSettings (const bool quiet=false, const bool init=true) |
resets default parameter settings More... | |
void | printUserSettings () |
print non-default parameter values More... | |
bool | saveSettingsFile (const char *filename, const bool onlyChanged=false, int solvemode=1) 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 *str) |
parses one setting string and returns true on success; note that string is modified More... | |
Miscellaneous | |
int | _optimizeCalls |
int | _unscaleCalls |
Rational | _rationalPosone |
Rational | _rationalNegone |
Rational | _rationalZero |
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... | |
void | setRandomSeed (unsigned int seed) |
set the random seeds of the solver instance More... | |
unsigned int | randomSeed () const |
returns the current random seed of the solver instance More... | |
anonymous enum |
anonymous enum |
values for parameter PRICER
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
values for parameter SCALER
enum BoolParam |
boolean parameters
|
private |
enum IntParam |
integer parameters
|
private |
type of bounds and sides
enum RealParam |
real parameters
SoPlexBase | ( | ) |
default constructor
SoPlexBase | ( | const SoPlexBase< R > & | rhs | ) |
copy constructor
|
virtual |
destructor
Referenced by runSoPlex().
|
private |
adds a single column to the real LP and adjusts basis
|
private |
adds a single column to the real LP and adjusts basis
|
private |
adds multiple columns to the real LP and adjusts basis
|
private |
adds a single row to the real LP and adjusts basis
|
private |
adds a single row to the real LP and adjusts basis
|
private |
adds multiple rows to the real LP and adjusts basis
|
private |
changes vectors of column bounds to lower
and upper
and adjusts basis
|
private |
changes bounds of column i
to lower
and upper
and adjusts basis
|
private |
replaces column i
with lpcol
and adjusts basis
|
private |
changes matrix entry in row i
and column j
to val
and adjusts basis
|
private |
changes left-hand side vector for constraints to lhs
and adjusts basis
|
private |
changes left-hand side of row i
to lhs
and adjusts basis
|
private |
changes vector of lower bounds to lower
and adjusts basis
|
private |
changes lower bound of column i to lower
and adjusts basis
|
private |
changes left- and right-hand side vectors and adjusts basis
|
private |
changes left- and right-hand side of row i
and adjusts basis
|
private |
changes right-hand side vector to rhs
and adjusts basis
|
private |
changes right-hand side of row i
to rhs
and adjusts basis
|
private |
replaces row i
with lprow
and adjusts basis
|
private |
changes vector of upper bounds to upper
and adjusts basis
|
private |
changes i
'th upper bound to upper
and adjusts basis
|
private |
check correctness of (un)scaled basis matrix operations
|
private |
checking the optimality of the original problem.
|
private |
check scaling of LP
|
private |
completes range type arrays after adding columns and/or rows
|
private |
computes rational inverse of basis matrix as defined by _rationalLUSolverBind
|
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().
|
private |
computes the reduced problem objective coefficients
|
private |
creating copies of the original problem that will be manipulated to form the reduced and complementary problems
|
private |
loads original problem into solver and solves again after it has been solved to optimality with preprocessing
|
private |
simplifies the problem and solves
|
private |
removing rows from the complementary problem.
|
private |
disables simplifier and scaler
|
private |
enables simplifier and scaler according to current parameters
|
private |
extends sparse vector to hold newmax entries if and only if it holds no more free entries
|
private |
ensures that the rational LP is available; performs no sync
|
private |
ensures that the real LP and the basis are loaded in the solver; performs no sync
|
private |
evaluates the solution of the reduced problem for the DBDS
|
private |
checks result of the solving process and solves again without preprocessing if necessary
|
private |
factorizes rational basis matrix in column representation
|
private |
builds the update rows with those violated in the complmentary problem
|
private |
forms the complementary problem
|
private |
forms the reduced problem
|
private |
computes the compatible bound constraints and adds them to the reduced problem
|
private |
retrieves the compatible columns from the constraint matrix
|
private |
computes the rows to remove from the complementary problem
|
private |
identifies the columns of the row-form basis that correspond to rows with zero dual multipliers.
|
private |
removing the dual columns related to the fixed variables
|
private |
removing the dual columns related to the fixed variables
|
private |
creates a permutation for removing rows/columns from an array of indices
|
private |
invalidates solution
|
private |
checks consistency
|
private |
should solving process be stopped?
|
private |
reduces matrix coefficient in absolute value by the lifting procedure of Thiele et al. 2013
|
private |
load original LP and possibly setup a slack basis
|
private |
checks whether RangeType corresponds to finite lower bound
|
private |
solves the templated LP
|
private |
temporary fix for Rational
|
private |
parses one line in a settings file and returns true on success; note that the string is modified
|
private |
performs iterative refinement on the auxiliary problem for testing feasibility
|
private |
solves current problem with iterative refinement and recovery mechanism
|
private |
performs iterative refinement on the auxiliary problem for testing unboundedness
|
private |
solves real LP with/without preprocessing
|
private |
undoes lifting
|
private |
creates a permutation for removing rows/columns from a range of indices
determines RangeType from rational bounds
|
private |
determines RangeType from real bounds
|
private |
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
|
private |
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
|
private |
check whether persistent scaling is supposed to be reapplied again after unscaling
|
private |
recomputes range types from scratch using rational LP
|
private |
recomputes range types from scratch using real LP
|
private |
attempts rational reconstruction of primal-dual solution
|
private |
removes columns start
to end
including both; an array perm
of size numColsReal() may be passed as buffer memory
|
private |
removes column i
|
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()
|
private |
remove all columns with indices in array idx
of size n
; an array perm
of size numColsReal() may be passed as buffer memory
|
private |
removing the dual columns related to the fixed variables
|
private |
removes rows start
to end
including both; an array perm
of size numRows() may be passed as buffer memory
|
private |
removes row i
and adjusts basis
|
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 numRows()
|
private |
remove all rows with indices in array idx
of size n
; an array perm
of size numRows() may be passed as buffer memory
|
private |
loads original problem into solver and solves again after it has been solved to optimality with preprocessing
|
private |
restore basis
|
private |
restores objective, bounds, and sides of real LP
|
private |
updating the complementary dual problem with the original objective function
|
private |
updating the complementary primal problem with the original objective function
|
private |
solves LP using the decomposition based dual simplex
|
private |
solves the reduced problem
|
private |
solves real LP during iterative refinement
|
private |
call floating-point solver and update statistics on iterations etc.
|
private |
solves real LP with recovery mechanism
|
private |
store basis
|
private |
stores objective, bounds, and sides of real LP
|
private |
stores solution of the real LP; before calling this, the real LP must be loaded in the solver and solved (again)
|
private |
stores solution from the simplifier because problem vanished in presolving step
switches RANGETYPE_LOWER to RANGETYPE_UPPER and vice versa
|
private |
synchronizes rational LP with real LP, i.e., copies real LP to rational LP, without looking at the sync mode
|
private |
synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, without looking at the sync mode
|
private |
synchronizes real solution with rational solution, i.e., copies real solution to rational solution
|
private |
synchronizes rational solution with real solution, i.e., copies (rounded) rational solution to real solution
|
private |
introduces slack variables to transform inequality constraints into equations for both rational and real LP, which should be in sync
|
private |
transforms LP to feasibility problem by removing the objective function, shifting variables, and homogenizing the right-hand side
|
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
|
private |
returns pointer to a constant unit vector available until destruction of the SoPlexBase class
|
private |
unscales stored solution to remove internal or external scaling of LP
|
private |
undoes transformation to equality form
|
private |
undoes transformation to feasibility problem
|
private |
undoes transformation to unboundedness problem
|
private |
updating the dual columns related to the fixed primal variables.
|
private |
updating the slack column coefficients to adjust for equality constraints
|
private |
updating the dual columns related to the fixed primal variables.
|
private |
updating the slack column coefficients to adjust for equality constraints
|
private |
update the dual complementary problem with additional columns and rows
|
private |
update the primal complementary problem with additional columns and rows
|
private |
update the reduced problem with additional columns and rows
|
private |
update the reduced problem with additional columns and rows based upon the violated original bounds and rows
|
private |
checks whether RangeType corresponds to finite upper bound
|
private |
verify computed solution and resolve if necessary
|
private |
function to build a basis for the original problem as given by the solution to the reduced problem
void addColRational | ( | const LPColRational & | lpcol | ) |
adds a single column
void addColRational | ( | const mpq_t * | obj, |
const mpq_t * | lower, | ||
const mpq_t * | colValues, | ||
const int * | colIndices, | ||
const int | colSize, | ||
const mpq_t * | upper | ||
) |
adds a single column (GMP only method)
void addColReal | ( | const LPColBase< R > & | lpcol | ) |
adds a single column
void addColsRational | ( | const mpq_t * | obj, |
const mpq_t * | lower, | ||
const mpq_t * | colValues, | ||
const int * | colIndices, | ||
const int * | colStarts, | ||
const int * | colLengths, | ||
const int | numCols, | ||
const int | numValues, | ||
const mpq_t * | upper | ||
) |
adds a set of columns (GMP only method)
void addColsRational | ( | const LPColSetRational & | lpcolset | ) |
adds multiple columns
void addColsReal | ( | const LPColSetBase< R > & | lpcolset | ) |
adds multiple columns
void addRowRational | ( | const LPRowRational & | lprow | ) |
adds a single row
void addRowRational | ( | const mpq_t * | lhs, |
const mpq_t * | rowValues, | ||
const int * | rowIndices, | ||
const int | rowSize, | ||
const mpq_t * | rhs | ||
) |
adds a single row (GMP only method)
void addRowReal | ( | const LPRowBase< R > & | lprow | ) |
adds a single row
void addRowsRational | ( | const mpq_t * | lhs, |
const mpq_t * | rowValues, | ||
const int * | rowIndices, | ||
const int * | rowStarts, | ||
const int * | rowLengths, | ||
const int | numRows, | ||
const int | numValues, | ||
const mpq_t * | rhs | ||
) |
adds a set of rows (GMP only method)
void addRowsRational | ( | const LPRowSetRational & | lprowset | ) |
adds multiple rows
void addRowsReal | ( | const LPRowSetBase< R > & | lprowset | ) |
adds multiple rows
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.
SPxSolverBase<R>::VarStatus basisColStatus | ( | int | col | ) | const |
returns basis status for a single column
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
SPxSolverBase<R>::VarStatus basisRowStatus | ( | int | row | ) | const |
returns basis status for a single row
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
SPxBasisBase<R>::SPxStatus basisStatus | ( | ) | const |
returns the current basis status
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool boolParam | ( | const BoolParam | param | ) | const |
returns boolean parameter value
void changeBoundsRational | ( | const VectorRational & | lower, |
const VectorRational & | upper | ||
) |
changes vectors of column bounds to lower
and upper
changes bounds of column i
to lower
and upper
void changeBoundsRational | ( | int | i, |
const mpq_t * | lower, | ||
const mpq_t * | upper | ||
) |
changes bounds of column i
to lower
and upper
(GMP only method)
void changeBoundsReal | ( | const VectorBase< R > & | lower, |
const VectorBase< R > & | upper | ||
) |
changes vectors of column bounds to lower
and upper
void changeBoundsReal | ( | int | i, |
const R & | lower, | ||
const R & | upper | ||
) |
changes bounds of column i
to lower
and upper
void changeColRational | ( | int | i, |
const LPColRational & | lpcol | ||
) |
replaces column i
with lpcol
void changeColReal | ( | int | i, |
const LPColReal & | lpcol | ||
) |
replaces column i
with lpcol
void changeElementRational | ( | int | i, |
int | j, | ||
const Rational & | val | ||
) |
changes matrix entry in row i
and column j
to val
void changeElementRational | ( | int | i, |
int | j, | ||
const mpq_t * | val | ||
) |
changes matrix entry in row i
and column j
to val
(GMP only method)
void changeElementReal | ( | int | i, |
int | j, | ||
const R & | val | ||
) |
changes matrix entry in row i
and column j
to val
void changeLhsRational | ( | const VectorRational & | lhs | ) |
changes left-hand side vector for constraints to lhs
void changeLhsRational | ( | int | i, |
const Rational & | lhs | ||
) |
changes left-hand side of row i
to lhs
void changeLhsRational | ( | int | i, |
const mpq_t * | lhs | ||
) |
changes left-hand side of row i
to lhs
(GMP only method)
void changeLhsReal | ( | const VectorBase< R > & | lhs | ) |
changes left-hand side vector for constraints to lhs
void changeLhsReal | ( | int | i, |
const R & | lhs | ||
) |
changes left-hand side of row i
to lhs
void changeLowerRational | ( | const VectorRational & | lower | ) |
changes vector of lower bounds to lower
void changeLowerRational | ( | int | i, |
const Rational & | lower | ||
) |
changes lower bound of column i to lower
void changeLowerRational | ( | int | i, |
const mpq_t * | lower | ||
) |
changes lower bound of column i to lower
(GMP only method)
void changeLowerReal | ( | const VectorBase< R > & | lower | ) |
changes vector of lower bounds to lower
void changeLowerReal | ( | int | i, |
const R & | lower | ||
) |
changes lower bound of column i to lower
void changeObjRational | ( | const VectorRational & | obj | ) |
changes objective function vector to obj
void changeObjRational | ( | int | i, |
const Rational & | obj | ||
) |
changes objective coefficient of column i to obj
void changeObjRational | ( | int | i, |
const mpq_t * | obj | ||
) |
changes objective coefficient of column i to obj
(GMP only method)
void changeObjReal | ( | const VectorBase< R > & | obj | ) |
changes objective function vector to obj
void changeObjReal | ( | int | i, |
const R & | obj | ||
) |
changes objective coefficient of column i to obj
void changeRangeRational | ( | const VectorRational & | lhs, |
const VectorRational & | rhs | ||
) |
changes left- and right-hand side vectors
changes left- and right-hand side of row i
void changeRangeRational | ( | int | i, |
const mpq_t * | lhs, | ||
const mpq_t * | rhs | ||
) |
changes left- and right-hand side of row i
(GMP only method)
void changeRangeReal | ( | const VectorBase< R > & | lhs, |
const VectorBase< R > & | rhs | ||
) |
changes left- and right-hand side vectors
void changeRangeReal | ( | int | i, |
const R & | lhs, | ||
const R & | rhs | ||
) |
changes left- and right-hand side of row i
void changeRhsRational | ( | const VectorRational & | rhs | ) |
changes right-hand side vector to rhs
void changeRhsRational | ( | const mpq_t * | rhs, |
int | rhsSize | ||
) |
changes right-hand side vector to rhs
(GMP only method)
void changeRhsRational | ( | int | i, |
const Rational & | rhs | ||
) |
changes right-hand side of row i
to rhs
void changeRhsReal | ( | const VectorBase< R > & | rhs | ) |
changes right-hand side vector to rhs
void changeRhsReal | ( | int | i, |
const R & | rhs | ||
) |
changes right-hand side of row i
to rhs
void changeRowRational | ( | int | i, |
const LPRowRational & | lprow | ||
) |
replaces row i
with lprow
void changeRowReal | ( | int | i, |
const LPRowBase< R > & | lprow | ||
) |
replaces row i
with lprow
void changeUpperRational | ( | const VectorRational & | upper | ) |
changes vector of upper bounds to upper
void changeUpperRational | ( | int | i, |
const Rational & | upper | ||
) |
changes i
'th upper bound to upper
void changeUpperRational | ( | int | i, |
const mpq_t * | upper | ||
) |
changes upper bound of column i to upper
(GMP only method)
void changeUpperReal | ( | const VectorBase< R > & | upper | ) |
changes vector of upper bounds to upper
void changeUpperReal | ( | int | i, |
const R & | upper | ||
) |
changes i
'th upper bound to upper
|
private |
checks the dual feasibility of the current basis
void clearBasis | ( | ) |
clears starting basis
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
void clearLPRational | ( | ) |
clears the LP
void clearLPReal | ( | ) |
clears the LP
R coefReal | ( | int | row, |
int | col | ||
) | const |
returns (unscaled) coefficient
const SVectorRational& colVectorRational | ( | int | i | ) | const |
returns vector of column i
const SVectorBase<R>& colVectorRealInternal | ( | int | i | ) | const |
returns vector of col i
, ignoring scaling
bool computeBasisInverseRational | ( | ) |
compute rational basis inverse; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
|
private |
function call to terminate the decomposition simplex
int dlcmSizeDualRational | ( | const int | base = 2 | ) |
get size of least common multiple of denominators in dual solution
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
int dlcmSizePrimalRational | ( | const int | base = 2 | ) |
get size of least common multiple of denominators in primal solution
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
int dmaxSizeDualRational | ( | const int | base = 2 | ) |
get size of largest denominator in dual solution
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
int dmaxSizePrimalRational | ( | const int | base = 2 | ) |
get size of largest denominator in primal solution
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
void getBasis | ( | typename SPxSolverBase< R >::VarStatus | rows[], |
typename SPxSolverBase< R >::VarStatus | cols[] | ||
) | const |
gets current basis via arrays of statuses
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
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
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisIndRational | ( | DataArray< int > & | bind | ) |
gets an array of indices for the columns of the rational basis matrix; bind[i] >= 0 means that the i-th column of the basis matrix contains variable bind[i]; bind[i] < 0 means that the i-th column of the basis matrix contains the slack variable for row -bind[i]-1; performs rational factorization if not available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisInverseColRational | ( | const int | c, |
SSVectorRational & | vec | ||
) |
computes column c of basis inverse; performs rational factorization if not available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisInverseColReal | ( | int | c, |
R * | coef, | ||
int * | inds = NULL , |
||
int * | ninds = NULL , |
||
bool | unscale = true |
||
) |
computes column c
of basis inverse; returns true on success
c | which column of the basis inverse is computed |
coef | values of result vector (not packed but scattered) |
inds | indices of result vector (NULL if not to be used) |
ninds | number of nonzeros in result vector |
unscale | determines whether the result should be unscaled according to the original LP data |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisInverseRowRational | ( | const int | r, |
SSVectorRational & | vec | ||
) |
computes row r of basis inverse; performs rational factorization if not available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisInverseRowReal | ( | int | r, |
R * | coef, | ||
int * | inds = NULL , |
||
int * | ninds = NULL , |
||
bool | unscale = true |
||
) |
computes row r
of basis inverse; returns true on success
r | which row of the basis inverse is computed |
coef | values of result vector (not packed but scattered) |
inds | indices of result vector (NULL if not to be used) |
ninds | number of nonzeros in result vector |
unscale | determines whether the result should be unscaled according to the original LP data |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisInverseTimesVecRational | ( | const SVectorRational & | rhs, |
SSVectorRational & | sol | ||
) |
computes solution of basis matrix B * sol = rhs; performs rational factorization if not available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisInverseTimesVecReal | ( | R * | rhs, |
R * | sol, | ||
bool | unscale = true |
||
) |
computes dense solution of basis matrix B * sol
= rhs
; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBasisMetric | ( | R & | metric, |
int | type = 0 |
||
) |
compute one of several matrix metrics based on the diagonal of the LU factorization type = 0: max/min ratio type = 1: trace of U (sum of diagonal elements) type = 2: determinant (product of diagonal elements)
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getBoundViolation | ( | R & | maxviol, |
R & | sumviol | ||
) |
gets violation of bounds; returns true on success
Referenced by checkSolutionReal(), and SoPlexBase< R >::ignoreUnscaledViolations().
Referenced by checkSolutionRational(), and SoPlexBase< R >::ignoreUnscaledViolations().
void getColRational | ( | int | i, |
LPColRational & | lpcol | ||
) | const |
gets column i
void getColsRational | ( | int | start, |
int | end, | ||
LPColSetRational & | lpcolset | ||
) | const |
gets columns start
, ..., end
void getColVectorReal | ( | int | i, |
DSVectorBase< R > & | col | ||
) | const |
gets vector of col i
|
private |
gets the coefficient of the slack variable in the primal complementary problem
|
private |
gets violation of bounds; returns true on success
|
private |
gets violation of constraints; returns true on success
bool getDual | ( | VectorBase< R > & | vector | ) |
gets the dual solution vector if available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printDualSolution().
bool getDualFarkas | ( | VectorBase< R > & | vector | ) |
gets the Farkas proof if available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printDualSolution().
bool getDualFarkasRational | ( | VectorRational & | vector | ) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printDualSolution().
bool getDualFarkasRational | ( | mpq_t * | vector, |
const int | size | ||
) |
gets the Farkas proof if LP is infeasible; returns true on success (GMP only method)
bool getDualFarkasReal | ( | R * | vector, |
int | dim | ||
) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getDualNorms | ( | int & | nnormsRow, |
int & | nnormsCol, | ||
R * | norms | ||
) | const |
gets steepest edge norms and returns false if they are not available
bool getDualRational | ( | VectorRational & | vector | ) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printDualSolution().
bool getDualRational | ( | mpq_t * | vector, |
const int | size | ||
) |
gets the dual solution vector if available; returns true on success (GMP only method)
bool getDualReal | ( | R * | p_vector, |
int | dim | ||
) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getDualViolation | ( | R & | maxviol, |
R & | sumviol | ||
) |
gets violation of dual multipliers; returns true on success
Referenced by checkSolutionReal(), and SoPlexBase< R >::ignoreUnscaledViolations().
Referenced by checkSolutionRational(), and SoPlexBase< R >::ignoreUnscaledViolations().
bool getEstimatedCondition | ( | R & | condition | ) |
computes an estimated condition number for the current basis matrix using the power method; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getExactCondition | ( | R & | condition | ) |
computes the exact condition number for the current basis matrix using the power method; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
|
private |
returns the expected sign of the dual variables for the reduced problem
void getLhsReal | ( | VectorBase< R > & | lhs | ) | const |
gets left-hand side vector
void getLowerReal | ( | VectorBase< R > & | lower | ) | const |
gets lower bound vector
void getNdualNorms | ( | int & | nnormsRow, |
int & | nnormsCol | ||
) | const |
gets number of available dual norms
void getObjRational | ( | VectorRational & | obj | ) | const |
gets objective function vector
void getObjRational | ( | int | i, |
Rational & | obj | ||
) | const |
gets objective value of column i
void getObjReal | ( | VectorBase< R > & | obj | ) | const |
gets objective function vector
|
private |
function to retrieve the column status for the original problem basis from the reduced and complementary problems
|
private |
function to retrieve the original problem row basis status from the reduced and complementary problems
|
private |
stores the problem statistics of the original problem
|
private |
returns the expected sign of the dual variables for the original problem
|
private |
determining which bound the primal variables will be fixed to.
const char* getPricerName | ( | ) |
name of currently loaded pricer
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getPrimal | ( | VectorBase< R > & | vector | ) |
gets the primal solution vector if available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printPrimalSolution().
bool getPrimalRational | ( | VectorRational & | vector | ) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printPrimalSolution().
bool getPrimalRational | ( | mpq_t * | vector, |
const int | size | ||
) |
gets the primal solution vector if available; returns true on success (GMP only method)
bool getPrimalRay | ( | VectorBase< R > & | vector | ) |
gets the primal ray if available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printPrimalSolution().
bool getPrimalRayRational | ( | VectorRational & | vector | ) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printPrimalSolution().
bool getPrimalRayRational | ( | mpq_t * | vector, |
const int | size | ||
) |
gets the primal ray if LP is unbounded; returns true on success (GMP only method)
bool getPrimalRayReal | ( | R * | vector, |
int | dim | ||
) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getPrimalReal | ( | R * | p_vector, |
int | size | ||
) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
const char* getRatiotesterName | ( | ) |
name of currently loaded ratiotester
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getRedCost | ( | VectorBase< R > & | vector | ) |
gets the vector of reduced cost values if available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printDualSolution().
bool getRedCostRational | ( | VectorRational & | vector | ) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and printDualSolution().
bool getRedCostRational | ( | mpq_t * | vector, |
const int | size | ||
) |
gets the vector of reduced cost values if available; returns true on success (GMP only method)
bool getRedCostReal | ( | R * | vector, |
int | dim | ||
) |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getRedCostViolation | ( | R & | maxviol, |
R & | sumviol | ||
) |
gets violation of reduced costs; returns true on success
Referenced by checkSolutionReal(), and SoPlexBase< R >::ignoreUnscaledViolations().
Referenced by checkSolutionRational(), and SoPlexBase< R >::ignoreUnscaledViolations().
void getRhsReal | ( | VectorBase< R > & | rhs | ) | const |
gets right-hand side vector
void getRowRational | ( | int | i, |
LPRowRational & | lprow | ||
) | const |
gets row i
void getRowsRational | ( | int | start, |
int | end, | ||
LPRowSetRational & | lprowset | ||
) | const |
gets rows start
, ..., end
.
void getRowVectorReal | ( | int | i, |
DSVectorBase< R > & | row | ||
) | const |
gets vector of row i
bool getRowViolation | ( | R & | maxviol, |
R & | sumviol | ||
) |
gets violation of constraints; returns true on success
Referenced by checkSolutionReal(), and SoPlexBase< R >::ignoreUnscaledViolations().
Referenced by checkSolutionRational(), and SoPlexBase< R >::ignoreUnscaledViolations().
const char* getScalerName | ( | ) |
name of scaling method
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
const char* getSimplifierName | ( | ) |
name of simplifier
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getSlacksRational | ( | VectorRational & | vector | ) |
gets the vector of slack values if available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getSlacksRational | ( | mpq_t * | vector, |
const int | size | ||
) |
gets the vector of slack values if available; returns true on success (GMP only method)
bool getSlacksReal | ( | VectorBase< R > & | vector | ) |
gets the vector of slack values if available; returns true on success
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool getSlacksReal | ( | R * | p_vector, |
int | dim | ||
) |
const char* getStarterName | ( | ) |
name of starter
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
void getUpperReal | ( | VectorBase< R > & | upper | ) | const |
gets upper bound vector
bool hasBasis | ( | ) | const |
is an advanced starting basis available?
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool hasDual | ( | ) | const |
deprecated: use hasSol() instead
Definition at line 618 of file soplex.h.
References SoPlexBase< R >::hasDualFarkas(), SoPlexBase< R >::hasPrimalRay(), SoPlexBase< R >::hasSol(), and SoPlexBase< R >::isDualFeasible().
Referenced by checkSolutionRational(), and checkSolutionReal().
bool hasDualFarkas | ( | ) | const |
is Farkas proof of infeasibility available?
Referenced by SoPlexBase< R >::hasDual().
bool hasPrimal | ( | ) | const |
deprecated: use hasSol() instead
Definition at line 612 of file soplex.h.
References SoPlexBase< R >::hasSol().
Referenced by checkSolutionRational(), and checkSolutionReal().
bool hasPrimalRay | ( | ) | const |
is a primal unbounded ray available?
Referenced by SoPlexBase< R >::hasDual().
bool hasSol | ( | ) | const |
is a solution available (not neccessarily feasible)?
Referenced by SoPlexBase< R >::hasDual(), SoPlexBase< R >::hasPrimal(), and SoPlexBase< R >::solve().
bool ignoreUnscaledViolations | ( | ) |
sets the status to OPTIMAL in case the LP has been solved with unscaled violations
Definition at line 633 of file soplex.h.
References SoPlexBase< R >::_status, SoPlexBase< R >::basisColStatus(), SoPlexBase< R >::basisRowStatus(), SoPlexBase< R >::basisStatus(), SoPlexBase< R >::clearBasis(), SoPlexBase< R >::computeBasisInverseRational(), SoPlexBase< R >::dlcmSizeDualRational(), SoPlexBase< R >::dlcmSizePrimalRational(), SoPlexBase< R >::dmaxSizeDualRational(), SoPlexBase< R >::dmaxSizePrimalRational(), SoPlexBase< R >::getBasis(), SoPlexBase< R >::getBasisInd(), SoPlexBase< R >::getBasisIndRational(), SoPlexBase< R >::getBasisInverseColRational(), SoPlexBase< R >::getBasisInverseColReal(), SoPlexBase< R >::getBasisInverseRowRational(), SoPlexBase< R >::getBasisInverseRowReal(), SoPlexBase< R >::getBasisInverseTimesVecRational(), SoPlexBase< R >::getBasisInverseTimesVecReal(), SoPlexBase< R >::getBasisMetric(), SoPlexBase< R >::getBoundViolation(), SoPlexBase< R >::getBoundViolationRational(), SoPlexBase< R >::getDual(), SoPlexBase< R >::getDualFarkas(), SoPlexBase< R >::getDualFarkasRational(), SoPlexBase< R >::getDualFarkasReal(), SoPlexBase< R >::getDualRational(), SoPlexBase< R >::getDualReal(), SoPlexBase< R >::getDualViolation(), SoPlexBase< R >::getDualViolationRational(), SoPlexBase< R >::getEstimatedCondition(), SoPlexBase< R >::getExactCondition(), SoPlexBase< R >::getPricerName(), SoPlexBase< R >::getPrimal(), SoPlexBase< R >::getPrimalRational(), SoPlexBase< R >::getPrimalRay(), SoPlexBase< R >::getPrimalRayRational(), SoPlexBase< R >::getPrimalRayReal(), SoPlexBase< R >::getPrimalReal(), SoPlexBase< R >::getRatiotesterName(), SoPlexBase< R >::getRedCost(), SoPlexBase< R >::getRedCostRational(), SoPlexBase< R >::getRedCostReal(), SoPlexBase< R >::getRedCostViolation(), SoPlexBase< R >::getRedCostViolationRational(), SoPlexBase< R >::getRowViolation(), SoPlexBase< R >::getRowViolationRational(), SoPlexBase< R >::getScalerName(), SoPlexBase< R >::getSimplifierName(), SoPlexBase< R >::getSlacksRational(), SoPlexBase< R >::getSlacksReal(), SoPlexBase< R >::getStarterName(), SoPlexBase< R >::hasBasis(), SoPlexBase< R >::multBasis(), SoPlexBase< R >::multBasisTranspose(), SoPlexBase< R >::numIterations(), SoPlexBase< R >::objValueRational(), SoPlexBase< R >::objValueReal(), SoPlexBase< R >::readBasisFile(), SoPlexBase< R >::readFile(), SoPlexBase< R >::setBasis(), SoPlexBase< R >::solveTime(), SoPlexBase< R >::statisticString(), SoPlexBase< R >::totalSizeDualRational(), SoPlexBase< R >::totalSizePrimalRational(), SoPlexBase< R >::writeBasisFile(), SoPlexBase< R >::writeDualFileReal(), SoPlexBase< R >::writeFile(), SoPlexBase< R >::writeFileRational(), SoPlexBase< R >::writeFileReal(), SoPlexBase< R >::writeStateRational(), and SoPlexBase< R >::writeStateReal().
int intParam | ( | const IntParam | param | ) | const |
returns integer parameter value
Referenced by checkSolution(), and runSoPlex().
bool isDualFeasible | ( | ) | const |
is stored dual solution feasible?
Referenced by SoPlexBase< R >::hasDual(), and printDualSolution().
bool isPrimalFeasible | ( | ) | const |
is stored primal solution feasible?
Referenced by printPrimalSolution(), and SoPlexBase< R >::solve().
const VectorRational& lhsRational | ( | ) | const |
returns left-hand side vector
const Rational& lhsRational | ( | int | i | ) | const |
returns left-hand side of row i
R lhsReal | ( | int | i | ) | const |
returns left-hand side of row i
const VectorBase<R>& lhsRealInternal | ( | ) | const |
returns left-hand side vector, ignoring scaling
bool loadSettingsFile | ( | const char * | filename | ) |
reads settings file; returns true on success
Referenced by runSoPlex().
const VectorRational& lowerRational | ( | ) | const |
returns lower bound vector
const Rational& lowerRational | ( | int | i | ) | const |
returns lower bound of column i
R lowerReal | ( | int | i | ) | const |
returns lower bound of column i
const VectorBase<R>& lowerRealInternal | ( | ) | const |
returns lower bound vector
Rational maxAbsNonzeroRational | ( | ) | const |
returns biggest non-zero element in absolute value
R maxAbsNonzeroReal | ( | ) | const |
returns biggest non-zero element in absolute value
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
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
R 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
const VectorBase<R>& maxObjRealInternal | ( | ) | const |
returns objective function vector after transformation to a maximization problem; since this is how it is stored internally, this is generally faster
Rational minAbsNonzeroRational | ( | ) | const |
returns smallest non-zero element in absolute value
R minAbsNonzeroReal | ( | ) | const |
returns smallest non-zero element in absolute value
bool multBasis | ( | R * | vec, |
bool | unscale = true |
||
) |
multiply with basis matrix; B * vec
(inplace)
vec | (dense) vector to be multiplied with |
unscale | determines whether the result should be unscaled according to the original LP data |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool multBasisTranspose | ( | R * | vec, |
bool | unscale = true |
||
) |
multiply with transpose of basis matrix; vec
* B^T (inplace)
vec | (dense) vector to be multiplied with |
unscale | determines whether the result should be unscaled according to the original LP data |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
int numCols | ( | ) | const |
Templated function that returns number of columns.
Referenced by printDualSolution(), printPrimalSolution(), and runSoPlex().
int numColsRational | ( | ) | const |
Referenced by printPrimalSolution().
int numColsReal | ( | ) | const |
int numIterations | ( | ) | const |
number of iterations since last call to solve
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
int numNonzeros | ( | ) | const |
returns number of nonzeros
Referenced by runSoPlex().
int numNonzerosRational | ( | ) | const |
int numRows | ( | ) | const |
returns number of rows
Referenced by printDualSolution(), and runSoPlex().
int numRowsRational | ( | ) | const |
Referenced by printDualSolution().
int numRowsReal | ( | ) | const |
Rational objRational | ( | int | i | ) | const |
returns objective value of column i
R objReal | ( | int | i | ) | const |
returns objective value of column i
Rational objValueRational | ( | ) |
returns the objective value if a primal solution is available
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
R objValueReal | ( | ) |
returns the objective value if a primal solution is available
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
SoPlexBase<R>& operator= | ( | const SoPlexBase< R > & | rhs | ) |
assignment operator
SPxSolverBase<R>::Status optimize | ( | volatile bool * | interrupt = NULL | ) |
optimize the given LP
Referenced by runSoPlex(), and SoPlexBase< R >::solve().
bool parseSettingsString | ( | char * | str | ) |
parses one setting string and returns true on success; note that string is modified
Referenced by runSoPlex().
|
private |
prints a display line of the flying table for the DBDS
|
private |
stores the problem statistics of the original problem
void printShortStatistics | ( | std::ostream & | os | ) |
prints short statistics
void printSolutionStatistics | ( | std::ostream & | os | ) |
prints solution statistics
void printSolvingStatistics | ( | std::ostream & | os | ) |
prints statistics on solving process
void printStatistics | ( | std::ostream & | os | ) |
prints complete statistics
void printStatus | ( | std::ostream & | os, |
typename SPxSolverBase< R >::Status | status | ||
) |
prints status
void printUserSettings | ( | ) |
print non-default parameter values
Referenced by runSoPlex().
void printVersion | ( | ) | const |
prints version and compilation options
Referenced by runSoPlex().
unsigned int randomSeed | ( | ) | const |
returns the current random seed of the solver instance
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
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and runSoPlex().
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
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and runSoPlex().
returns real parameter value
Referenced by checkSolutionRational(), and checkSolutionReal().
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
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
void removeColRational | ( | int | i | ) |
removes column i
void removeColReal | ( | int | i | ) |
removes column i
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()
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
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()
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
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
void removeRowRangeReal | ( | int | start, |
int | end, | ||
int | perm[] = 0 |
||
) |
removes rows start
to end
including both; an array perm
of size numRows() may be passed as buffer memory
void removeRowRational | ( | int | i | ) |
removes row i
void removeRowReal | ( | int | i | ) |
removes row i
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()
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
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 numRows()
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 numRows() may be passed as buffer memory
void resetSettings | ( | const bool | quiet = false , |
const bool | init = true |
||
) |
resets default parameter settings
const VectorRational& rhsRational | ( | ) | const |
returns right-hand side vector
const Rational& rhsRational | ( | int | i | ) | const |
returns right-hand side of row i
R rhsReal | ( | int | i | ) | const |
returns right-hand side of row i
const VectorBase<R>& rhsRealInternal | ( | ) | const |
returns right-hand side vector, ignoring scaling
LPRowRational::Type rowTypeRational | ( | int | i | ) | const |
returns inequality type of row i
LPRowBase<R>::Type rowTypeReal | ( | int | i | ) | const |
returns inequality type of row i
const SVectorRational& rowVectorRational | ( | int | i | ) | const |
returns vector of row i
const SVectorBase<R>& rowVectorRealInternal | ( | int | i | ) | const |
returns vector of row i
, ignoring scaling
bool saveSettingsFile | ( | const char * | filename, |
const bool | onlyChanged = false , |
||
int | solvemode = 1 |
||
) | const |
writes settings file; returns true on success
Referenced by runSoPlex().
void setBasis | ( | const typename SPxSolverBase< R >::VarStatus | rows[], |
const typename SPxSolverBase< R >::VarStatus | cols[] | ||
) |
sets starting basis via arrays of statuses
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool setBoolParam | ( | const BoolParam | param, |
const bool | value, | ||
const bool | init = true |
||
) |
sets boolean parameter value; returns true on success
bool setDualNorms | ( | int | nnormsRow, |
int | nnormsCol, | ||
R * | norms | ||
) |
sets steepest edge norms and returns false if that's not possible
void setIntegralityInformation | ( | int | ncols, |
int * | intInfo | ||
) |
pass integrality information about the variables to the solver
bool setIntParam | ( | const IntParam | param, |
const int | value, | ||
const bool | init = true |
||
) |
sets integer parameter value; returns true on success
Referenced by runSoPlex().
void setRandomSeed | ( | unsigned int | seed | ) |
set the random seeds of the solver instance
sets real parameter value; returns true on success
Referenced by runSoPlex().
bool setSettings | ( | const Settings & | newSettings, |
const bool | init = true |
||
) |
sets parameter settings; returns true on success
void setTimings | ( | const Timer::TYPE | ttype | ) |
set statistic timers to a certain type
const Settings& settings | ( | ) | const |
returns current parameter settings
SPxSolverBase<R>::Status solve | ( | volatile bool * | interrupt = NULL | ) |
Definition at line 597 of file soplex.h.
References SoPlexBase< R >::hasSol(), SoPlexBase< R >::isPrimalFeasible(), SoPlexBase< R >::optimize(), and SoPlexBase< R >::status().
Real solveTime | ( | ) | const |
time spent in last call to solve
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
std::string statisticString | ( | ) | const |
statistical information in form of a string
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
SPxSolverBase<R>::Status status | ( | ) | const |
returns the current solver status
Referenced by SoPlexBase< R >::solve().
void syncLPRational | ( | ) |
synchronizes rational LP with real LP, i.e., copies real LP to rational LP, if sync mode is manual
void syncLPReal | ( | ) |
synchronizes real LP with rational LP, i.e., copies (rounded) rational LP into real LP, if sync mode is manual
int totalSizeDualRational | ( | const int | base = 2 | ) |
get size of dual solution
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
int totalSizePrimalRational | ( | const int | base = 2 | ) |
get size of primal solution
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
const VectorRational& upperRational | ( | ) | const |
returns upper bound vector
const Rational& upperRational | ( | int | i | ) | const |
returns upper bound of column i
R upperReal | ( | int | i | ) | const |
returns upper bound of column i
const VectorBase<R>& upperRealInternal | ( | ) | const |
returns upper bound vector
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
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool writeDualFileReal | ( | const char * | filename, |
const NameSet * | rowNames = 0 , |
||
const NameSet * | colNames = 0 , |
||
const DIdxSet * | intvars = 0 |
||
) | const |
writes the dual of the 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
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and runSoPlex().
bool writeFile | ( | const char * | filename, |
const NameSet * | rowNames = 0 , |
||
const NameSet * | colNames = 0 , |
||
const DIdxSet * | intvars = 0 , |
||
const bool | unscale = true |
||
) | const |
Templated write function Real 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 Rational 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.
Referenced by SoPlexBase< R >::ignoreUnscaledViolations(), and runSoPlex().
bool writeFileRational | ( | const char * | filename, |
const NameSet * | rowNames = 0 , |
||
const NameSet * | colNames = 0 , |
||
const DIdxSet * | intvars = 0 |
||
) | const |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
bool writeFileReal | ( | const char * | filename, |
const NameSet * | rowNames = 0 , |
||
const NameSet * | colNames = 0 , |
||
const DIdxSet * | intvars = 0 , |
||
const bool | unscale = true |
||
) | const |
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
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
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
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
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Definition at line 1910 of file soplex.h.
Referenced by SoPlexBase< R >::ignoreUnscaledViolations().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
mutable |
Definition at line 1520 of file soplex.h.
Referenced by checkSolution(), checkSolutionRational(), checkSolutionReal(), printDualSolution(), printPrimalSolution(), and runSoPlex().