|
Sequential object-oriented SimPlex.SPxSolver is an LP solver class using the revised Simplex algorithm. It provids two basis representations, namely a column basis and a row basis (see Representation). For both representations, a primal and dual algorithm is available (see Type).
More...
#include <spxsolver.h>
|
|
enum | Representation { ROW = -1,
COLUMN = 1
} | | LP basis representation. More...
|
|
enum | Type { ENTER = -1,
LEAVE = 1
} | | Algorithmic type. More...
|
|
enum | Pricing { FULL,
PARTIAL
} | | Pricing type. More...
|
|
enum | VarStatus {
ON_UPPER,
ON_LOWER,
FIXED,
ZERO,
BASIC,
UNDEFINED
} |
|
enum | Status {
ERROR = -13,
NO_RATIOTESTER = -12,
NO_PRICER = -11,
NO_SOLVER = -10,
NOT_INIT = -9,
ABORT_CYCLING = -8,
ABORT_TIME = -7,
ABORT_ITER = -6,
ABORT_VALUE = -5,
SINGULAR = -4,
NO_PROBLEM = -3,
REGULAR = -2,
RUNNING = -1,
UNKNOWN = 0,
OPTIMAL = 1,
UNBOUNDED = 2,
INFEASIBLE = 3,
INForUNBD = 4
} |
|
enum | SPxSense | | Optimization sense. More...
|
|
|
void | setOutstream (SPxOut &newOutstream) |
|
UpdateVector & | fVec () const |
| feasibility vector. More...
|
|
const Vector & | fRhs () const |
| right-hand side vector for fVec More...
|
|
const Vector & | ubBound () const |
| upper bound for fVec. More...
|
|
Vector & | ubBound () |
| upper bound for fVec, writable. More...
|
|
const Vector & | lbBound () const |
| lower bound for fVec. More...
|
|
Vector & | lbBound () |
| lower bound for fVec, writable. More...
|
|
const Vector & | fTest () const |
| Violations of fVec. More...
|
|
UpdateVector & | coPvec () const |
| copricing vector. More...
|
|
const Vector & | coPrhs () const |
| Right-hand side vector for coPvec. More...
|
|
const Vector & | ucBound () const |
|
Vector & | ucBound () |
| upper bound for coPvec. More...
|
|
const Vector & | lcBound () const |
|
Vector & | lcBound () |
| lower bound for coPvec. More...
|
|
const Vector & | coTest () const |
| violations of coPvec. More...
|
|
UpdateVector & | pVec () const |
| pricing vector. More...
|
|
const Vector & | upBound () const |
|
Vector & | upBound () |
| upper bound for pVec. More...
|
|
const Vector & | lpBound () const |
|
Vector & | lpBound () |
| lower bound for pVec. More...
|
|
const Vector & | test () const |
| Violations of pVec. More...
|
|
Real | computePvec (int i) |
| compute and return pVec()[i]. More...
|
|
void | computePvec () |
| compute entire pVec(). More...
|
|
Real | computeTest (int i) |
| compute and return test()[i] in ENTERing Simplex. More...
|
|
void | computeTest () |
| compute test vector in ENTERing Simplex. More...
|
|
void | testVecs () |
|
|
int | version () const |
| return the version of SPxSolver as number like 123 for 1.2.3 More...
|
|
int | subversion () const |
| return the internal subversion of SPxSolver as number More...
|
|
Representation | rep () const |
| return the current basis representation. More...
|
|
Type | type () const |
| return current Type. More...
|
|
Pricing | pricing () const |
| return current Pricing. More...
|
|
SPxStarter * | starter () const |
| return current starter. More...
|
|
|
Before solving an LP with an instance of SPxSolver, the following steps must be performed:
- Load the LP by copying an external LP or reading it from an input stream.
- Setup the pricer to use by loading an SPxPricer object (if not already done in a previous call).
- Setup the ratio test method to use by loading an SPxRatioTester object (if not already done in a previous call).
- Setup the linear system solver to use by loading an SLinSolver object (if not already done in a previous call).
- Optionally setup an start basis generation method by loading an SPxStarter object.
- Optionally setup a start basis by loading a SPxBasis::Desc object.
- Optionally switch to another basis Representation by calling method setRep().
- Optionally switch to another algorithm Type by calling method setType().
Now the solver is ready for execution. If the loaded LP is to be solved again from scratch, this can be done with method reLoad(). Finally, clear() removes the LP from the solver.
|
virtual bool | read (std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) |
| read LP from input stream. More...
|
|
virtual void | loadLP (const SPxLP &LP) |
| copy LP. More...
|
|
virtual void | setSolver (SLinSolver *slu, const bool destroy=false) |
| setup linear solver to use. If destroy is true, slusolver will be freed in destructor. More...
|
|
virtual void | setPricer (SPxPricer *pricer, const bool destroy=false) |
| setup pricer to use. If destroy is true, pricer will be freed in destructor. More...
|
|
virtual void | setTester (SPxRatioTester *tester, const bool destroy=false) |
| setup ratio-tester to use. If destroy is true, tester will be freed in destructor. More...
|
|
virtual void | setStarter (SPxStarter *starter, const bool destroy=false) |
| setup starting basis generator to use. If destroy is true, starter will be freed in destructor. More...
|
|
virtual void | loadBasis (const SPxBasis::Desc &) |
| set a start basis. More...
|
|
void | initRep (Representation p_rep) |
| initialize ROW or COLUMN representation. More...
|
|
void | setRep (Representation p_rep) |
| switch to ROW or COLUMN representation if not already used. More...
|
|
void | setType (Type tp) |
| set LEAVE or ENTER algorithm. More...
|
|
void | setPricing (Pricing pr) |
| set FULL or PARTIAL pricing. More...
|
|
virtual void | reLoad () |
| reload LP. More...
|
|
virtual void | clear () |
| clear all data in solver. More...
|
|
virtual bool | readBasisFile (const char *filename, const NameSet *rowNames, const NameSet *colNames) |
|
virtual bool | writeBasisFile (const char *filename, const NameSet *rowNames, const NameSet *colNames, const bool cpxFormat=false) const |
|
virtual bool | writeState (const char *filename, const NameSet *rowNames=NULL, const NameSet *colNames=NULL, const bool cpxFormat=false) const |
|
|
virtual Status | solve () |
| solve loaded LP. More...
|
|
Status | status () const |
| Status of solution process. More...
|
|
virtual Real | value () |
| current objective value. More...
|
|
bool | updateNonbasicValue (Real objChange) |
|
void | forceRecompNonbasicValue () |
|
virtual Status | getPrimal (Vector &vector) const |
| get solution vector for primal variables. More...
|
|
virtual Status | getSlacks (Vector &vector) const |
| get vector of slack variables. More...
|
|
virtual Status | getDual (Vector &vector) const |
| get current solution vector for dual variables. More...
|
|
virtual Status | getRedCost (Vector &vector) const |
| get vector of reduced costs. More...
|
|
virtual Status | getPrimalray (Vector &vector) const |
| get primal ray in case of unboundedness. More...
|
|
virtual Status | getDualfarkas (Vector &vector) const |
| get dual farkas proof of infeasibility. More...
|
|
virtual void | printDisplayLine (const bool force=false) |
| print display line of flying table More...
|
|
virtual bool | terminate () |
| Termination criterion. More...
|
|
|
Real | epsilon () const |
| values are considered to be 0. More...
|
|
Real | entertol () const |
| feasibility tolerance maintained by ratio test during ENTER algorithm. More...
|
|
Real | leavetol () const |
| feasibility tolerance maintained by ratio test during LEAVE algorithm. More...
|
|
Real | feastol () const |
| allowed primal feasibility tolerance. More...
|
|
Real | opttol () const |
| allowed optimality, i.e., dual feasibility tolerance. More...
|
|
Real | delta () const |
| guaranteed primal and dual bound violation for optimal solution, returning the maximum of feastol() and opttol(), i.e., the less tight tolerance. More...
|
|
void | setFeastol (Real d) |
| set parameter feastol . More...
|
|
void | setOpttol (Real d) |
| set parameter opttol . More...
|
|
void | setDelta (Real d) |
| set parameter delta , i.e., set feastol and opttol to same value. More...
|
|
void | setTiming (Timer::TYPE ttype) |
| set timing type More...
|
|
Timer::TYPE | getTiming () |
| set timing type More...
|
|
void | setDisplayFreq (int freq) |
| set display frequency More...
|
|
void | setSparsePricingFactor (Real fac) |
|
void | hyperPricing (bool h) |
| enable or disable hyper sparse pricing More...
|
|
int | maxCycle () const |
| maximum number of degenerate simplex steps before we detect cycling. More...
|
|
int | numCycle () const |
| actual number of degenerate simplex steps encountered so far. More...
|
|
|
virtual void | changeObj (const Vector &newObj) |
|
virtual void | changeObj (int i, const Real &newVal) |
|
virtual void | changeObj (SPxColId p_id, const Real &p_newVal) |
|
virtual void | changeMaxObj (const Vector &newObj) |
|
virtual void | changeMaxObj (int i, const Real &newVal) |
|
virtual void | changeMaxObj (SPxColId p_id, const Real &p_newVal) |
|
virtual void | changeRowObj (const Vector &newObj) |
|
virtual void | changeRowObj (int i, const Real &newVal) |
|
virtual void | changeRowObj (SPxRowId p_id, const Real &p_newVal) |
|
virtual void | clearRowObjs () |
|
virtual void | changeLowerStatus (int i, Real newLower, Real oldLower=0.0) |
|
virtual void | changeLower (const Vector &newLower) |
|
virtual void | changeLower (int i, const Real &newLower) |
|
virtual void | changeLower (SPxColId p_id, const Real &p_newLower) |
|
virtual void | changeUpperStatus (int i, Real newUpper, Real oldLower=0.0) |
|
virtual void | changeUpper (const Vector &newUpper) |
|
virtual void | changeUpper (int i, const Real &newUpper) |
|
virtual void | changeUpper (SPxColId p_id, const Real &p_newUpper) |
|
virtual void | changeBounds (const Vector &newLower, const Vector &newUpper) |
|
virtual void | changeBounds (int i, const Real &newLower, const Real &newUpper) |
|
virtual void | changeBounds (SPxColId p_id, const Real &p_newLower, const Real &p_newUpper) |
|
virtual void | changeLhsStatus (int i, Real newLhs, Real oldLhs=0.0) |
|
virtual void | changeLhs (const Vector &newLhs) |
|
virtual void | changeLhs (int i, const Real &newLhs) |
|
virtual void | changeLhs (SPxRowId p_id, const Real &p_newLhs) |
|
virtual void | changeRhsStatus (int i, Real newRhs, Real oldRhs=0.0) |
|
virtual void | changeRhs (const Vector &newRhs) |
|
virtual void | changeRhs (int i, const Real &newRhs) |
|
virtual void | changeRhs (SPxRowId p_id, const Real &p_newRhs) |
|
virtual void | changeRange (const Vector &newLhs, const Vector &newRhs) |
|
virtual void | changeRange (int i, const Real &newLhs, const Real &newRhs) |
|
virtual void | changeRange (SPxRowId p_id, const Real &p_newLhs, const Real &p_newRhs) |
|
virtual void | changeRow (int i, const LPRow &newRow) |
|
virtual void | changeRow (SPxRowId p_id, const LPRow &p_newRow) |
|
virtual void | changeCol (int i, const LPCol &newCol) |
|
virtual void | changeCol (SPxColId p_id, const LPCol &p_newCol) |
|
virtual void | changeElement (int i, int j, const Real &val) |
|
virtual void | changeElement (SPxRowId rid, SPxColId cid, const Real &val) |
|
virtual void | changeSense (SPxSense sns) |
|
|
int | dim () const |
| dimension of basis matrix. More...
|
|
int | coDim () const |
| codimension. More...
|
|
|
Class SPxLP introduces SPxIds to identify row or column data of an LP. SPxSolver uses this concept to access data with respect to the chosen representation.
|
SPxId | id (int i) const |
| id of i 'th vector. More...
|
|
SPxId | coId (int i) const |
| id of i 'th covector. More...
|
|
bool | isId (const SPxId &p_id) const |
| Is p_id an SPxId ? More...
|
|
bool | isCoId (const SPxId &p_id) const |
| Is p_id a CoId. More...
|
|
|
const SVector & | vector (int i) const |
| i 'th vector. More...
|
|
const SVector & | vector (const SPxRowId &rid) const |
|
const SVector & | vector (const SPxColId &cid) const |
|
const SVector & | vector (const SPxId &p_id) const |
| vector associated to p_id . More...
|
|
const SVector & | coVector (int i) const |
| i 'th covector of LP. More...
|
|
const SVector & | coVector (const SPxRowId &rid) const |
|
const SVector & | coVector (const SPxColId &cid) const |
|
const SVector & | coVector (const SPxId &p_id) const |
| coVector associated to p_id . More...
|
|
const SVector & | unitVector (int i) const |
| return i 'th unit vector. More...
|
|
|
The Simplex basis assigns a Status to each variable and covariable. Depending on the representation, the status indicates that the corresponding vector is in the basis matrix or not.
|
SPxBasis::Desc::Status | varStatus (int i) const |
| Status of i 'th variable. More...
|
|
SPxBasis::Desc::Status | covarStatus (int i) const |
| Status of i 'th covariable. More...
|
|
bool | isBasic (SPxBasis::Desc::Status stat) const |
| does stat describe a basic index ? More...
|
|
bool | isBasic (const SPxId &p_id) const |
| is the p_id 'th vector basic ? More...
|
|
bool | isBasic (const SPxRowId &rid) const |
| is the rid 'th vector basic ? More...
|
|
bool | isBasic (const SPxColId &cid) const |
| is the cid 'th vector basic ? More...
|
|
bool | isRowBasic (int i) const |
| is the i 'th row vector basic ? More...
|
|
bool | isColBasic (int i) const |
| is the i 'th column vector basic ? More...
|
|
bool | isBasic (int i) const |
| is the i 'th vector basic ? More...
|
|
bool | isCoBasic (int i) const |
| is the i 'th covector basic ? More...
|
|
|
The task of the ratio test (implemented in SPxRatioTester classes) is to select a variable for the basis update, such that the basis remains priced (i.e. both, the pricing and copricing vectors satisfy their bounds) or feasible (i.e. the feasibility vector satisfies its bounds). However, this can lead to numerically instable basis matrices or – after accumulation of various errors – even to a singular basis matrix.
The key to overcome this problem is to allow the basis to become "a
bit" infeasible or unpriced, in order provide a better choice for the ratio test to select a stable variable. This is equivalent to enlarging the bounds by a small amount. This is referred to as shifting.
These methods serve for shifting feasibility bounds, either in order to maintain numerical stability or initially for computation of phase 1. The sum of all shifts applied to any bound is stored in theShift.
The following methods are used to shift individual bounds. They are mainly intended for stable implenentations of SPxRatioTester.
|
void | shiftFvec () |
| Perform initial shifting to optain an feasible or pricable basis. More...
|
|
void | shiftPvec () |
| Perform initial shifting to optain an feasible or pricable basis. More...
|
|
void | shiftUBbound (int i, Real to) |
| shift i 'th ubBound to to . More...
|
|
void | shiftLBbound (int i, Real to) |
| shift i 'th lbBound to to . More...
|
|
void | shiftUPbound (int i, Real to) |
| shift i 'th upBound to to . More...
|
|
void | shiftLPbound (int i, Real to) |
| shift i 'th lpBound to to . More...
|
|
void | shiftUCbound (int i, Real to) |
| shift i 'th ucBound to to . More...
|
|
void | shiftLCbound (int i, Real to) |
| shift i 'th lcBound to to . More...
|
|
void | testBounds () const |
|
virtual Real | shift () const |
| total current shift amount. More...
|
|
virtual void | unShift (void) |
| remove shift as much as possible. More...
|
|
virtual void | qualConstraintViolation (Real &maxviol, Real &sumviol) const |
| get violation of constraints. More...
|
|
virtual void | qualBoundViolation (Real &maxviol, Real &sumviol) const |
| get violations of bounds. More...
|
|
virtual void | qualSlackViolation (Real &maxviol, Real &sumviol) const |
| get the residuum |Ax-b|. More...
|
|
virtual void | qualRedCostViolation (Real &maxviol, Real &sumviol) const |
| get violation of optimality criterion. More...
|
|
|
SPxRowId | rowId (int i) const |
| RowId of i 'th inequality. More...
|
|
SPxColId | colId (int i) const |
| ColId of i 'th column. More...
|
|
|
| SPxSolver (Type type=LEAVE, Representation rep=ROW, Timer::TYPE ttype=Timer::USER_TIME) |
| default constructor. More...
|
|
virtual | ~SPxSolver () |
|
|
bool | isConsistent () const |
| check consistency. More...
|
|
|
SPxSolver & | operator= (const SPxSolver &base) |
| assignment operator More...
|
|
| SPxSolver (const SPxSolver &base) |
| copy constructor More...
|
|
void | setOutstream (SPxOut &newOutstream) |
|
| SPxLPBase () |
| Default constructor. More...
|
|
| SPxLPBase (const SPxLPBase< Real > &old) |
| Copy constructor. More...
|
|
| SPxLPBase (const SPxLPBase< S > &old) |
| Copy constructor. More...
|
|
virtual | ~SPxLPBase () |
| Destructor. More...
|
|
SPxLPBase< Real > & | operator= (const SPxLPBase< Real > &old) |
| Assignment operator. More...
|
|
SPxLPBase< Real > & | operator= (const SPxLPBase< S > &old) |
| Assignment operator. More...
|
|
int | nRows () const |
| Returns number of rows in LP. More...
|
|
int | nCols () const |
| Returns number of columns in LP. More...
|
|
int | nNzos () const |
| Returns number of nonzeros in LP. More...
|
|
Real | minAbsNzo () const |
| Absolute smallest non-zero element in LP. More...
|
|
Real | maxAbsNzo () const |
| Absolute biggest non-zero element in LP. More...
|
|
void | getRow (int i, LPRowBase< Real > &row) const |
| Gets i 'th row. More...
|
|
void | getRow (const SPxRowId &id, LPRowBase< Real > &row) const |
| Gets row with identifier id . More...
|
|
void | getRows (int start, int end, LPRowSetBase< Real > &set) const |
| Gets rows start , ... end . More...
|
|
const SVectorBase< Real > & | rowVector (int i) const |
| Gets row vector of row i . More...
|
|
const SVectorBase< Real > & | rowVector (const SPxRowId &id) const |
| Gets row vector of row with identifier id . More...
|
|
const VectorBase< Real > & | rhs () const |
| Returns right hand side vector. More...
|
|
const Real & | rhs (int i) const |
|
const Real & | rhs (const SPxRowId &id) const |
| Returns right hand side of row with identifier id . More...
|
|
const VectorBase< Real > & | lhs () const |
| Returns left hand side vector. More...
|
|
const Real & | lhs (int i) const |
|
const Real & | lhs (const SPxRowId &id) const |
| Returns left hand side of row with identifier id . More...
|
|
void | getRowObj (VectorBase< Real > &prowobj) const |
| Gets row objective function vector. More...
|
|
Real | rowObj (int i) const |
|
Real | rowObj (const SPxRowId &id) const |
| Returns row objective function value of row with identifier id . More...
|
|
const VectorBase< Real > & | maxRowObj () const |
|
const Real & | maxRowObj (int i) const |
|
const Real & | maxRowObj (const SPxRowId &id) const |
| Returns row objective function value of row with identifier id . More...
|
|
LPRowBase< Real >::Type | rowType (int i) const |
| Returns the inequality type of the i'th LPRow. More...
|
|
LPRowBase< Real >::Type | rowType (const SPxRowId &id) const |
| Returns the inequality type of the row with identifier key . More...
|
|
void | getCol (int i, LPColBase< Real > &col) const |
| Gets i 'th column. More...
|
|
void | getCol (const SPxColId &id, LPColBase< Real > &col) const |
| Gets column with identifier id . More...
|
|
void | getCols (int start, int end, LPColSetBase< Real > &set) const |
| Gets columns start , ..., end . More...
|
|
const SVectorBase< Real > & | colVector (int i) const |
| Returns column vector of column i . More...
|
|
const SVectorBase< Real > & | colVector (const SPxColId &id) const |
| Returns column vector of column with identifier id . More...
|
|
void | getObj (VectorBase< Real > &pobj) const |
| Gets objective vector. More...
|
|
Real | obj (int i) const |
| Returns objective value of column i . More...
|
|
Real | obj (const SPxColId &id) const |
| Returns objective value of column with identifier id . More...
|
|
const VectorBase< Real > & | maxObj () const |
| Returns objective vector for maximization problem. More...
|
|
const Real & | maxObj (int i) const |
| Returns objective value of column i for maximization problem. More...
|
|
const Real & | maxObj (const SPxColId &id) const |
| Returns objective value of column with identifier id for maximization problem. More...
|
|
const VectorBase< Real > & | upper () const |
| Returns upper bound vector. More...
|
|
const Real & | upper (int i) const |
| Returns upper bound of column i . More...
|
|
const Real & | upper (const SPxColId &id) const |
| Returns upper bound of column with identifier id . More...
|
|
const VectorBase< Real > & | lower () const |
| Returns lower bound vector. More...
|
|
const Real & | lower (int i) const |
| Returns lower bound of column i . More...
|
|
const Real & | lower (const SPxColId &id) const |
| Returns lower bound of column with identifier id . More...
|
|
SPxSense | spxSense () const |
| Returns the optimization sense. More...
|
|
const Real & | objOffset () const |
| Returns the objective function value offset. More...
|
|
int | number (const SPxRowId &id) const |
| Returns the row number of the row with identifier id . More...
|
|
int | number (const SPxColId &id) const |
| Returns the column number of the column with identifier id . More...
|
|
int | number (const SPxId &id) const |
| Returns the row or column number for identifier id . More...
|
|
SPxRowId | rId (int n) const |
| Returns the row identifier for row n . More...
|
|
SPxColId | cId (int n) const |
| Returns the column identifier for column n . More...
|
|
virtual void | addRow (const LPRowBase< Real > &row) |
|
virtual void | addRow (const Real &lhsValue, const SVectorBase< Real > &rowVec, const Real &rhsValue) |
|
void | addRow (const S *lhsValue, const S *rowValues, const int *rowIndices, int rowSize, const S *rhsValue) |
|
virtual void | addRow (SPxRowId &id, const LPRowBase< Real > &row) |
| Adds row to LPRowSetBase. More...
|
|
virtual void | addRows (const LPRowSetBase< Real > &pset) |
|
void | addRows (const S *lhsValues, const S *rowValues, const int *rowIndices, const int *rowStarts, const int *rowLengths, const int numRows, const int numValues, const S *rhsValues) |
|
virtual void | addRows (SPxRowId id[], const LPRowSetBase< Real > &set) |
| adds all LPRowBases of pset to LPRowSetBase. More...
|
|
virtual void | addCol (const LPColBase< Real > &col) |
|
virtual void | addCol (const Real &objValue, const Real &lowerValue, const SVectorBase< Real > &colVec, const Real &upperValue) |
|
void | addCol (const S *objValue, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue) |
|
virtual void | addCol (SPxColId &id, const LPColBase< Real > &col) |
| Adds col to LPColSetVBase. More...
|
|
virtual void | addCols (const LPColSetBase< Real > &pset) |
|
void | addCols (const S *objValue, const S *lowerValues, const S *colValues, const int *colIndices, const int *colStarts, const int *colLengths, const int numCols, const int numValues, const S *upperValues) |
|
virtual void | addCols (SPxColId id[], const LPColSetBase< Real > &set) |
| Adds all LPColBases of set to LPColSetBase. More...
|
|
virtual void | removeRow (int i) |
| Removes i 'th row. More...
|
|
virtual void | removeRow (SPxRowId id) |
| Removes row with identifier id . More...
|
|
virtual void | removeRows (int perm[]) |
| Removes multiple rows. More...
|
|
virtual void | removeRows (SPxRowId id[], int n, int perm[]=0) |
|
virtual void | removeRows (int nums[], int n, int perm[]=0) |
| Removes n LPRowBases. More...
|
|
virtual void | removeRowRange (int start, int end, int perm[]=0) |
| Removes rows from start to end (including both). More...
|
|
virtual void | removeCol (int i) |
| Removes i 'th column. More...
|
|
virtual void | removeCol (SPxColId id) |
| Removes column with identifier id . More...
|
|
virtual void | removeCols (int perm[]) |
| Removes multiple columns. More...
|
|
virtual void | removeCols (SPxColId id[], int n, int perm[]=0) |
|
virtual void | removeCols (int nums[], int n, int perm[]=0) |
| Removes n LPCols. More...
|
|
virtual void | removeColRange (int start, int end, int perm[]=0) |
| Removes columns from start to end (including both). More...
|
|
virtual bool | readLPF (std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) |
| Reads LP in LP format from input stream in . More...
|
|
virtual bool | readMPS (std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) |
| Reads an LP in MPS format from input stream in . More...
|
|
virtual bool | readFile (const char *filename, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0) |
| Reads LP from a file. More...
|
|
virtual void | writeLPF (std::ostream &out, const NameSet *rowNames, const NameSet *colNames, const DIdxSet *p_intvars=0) const |
|
virtual void | writeMPS (std::ostream &out, const NameSet *rowNames, const NameSet *colNames, const DIdxSet *p_intvars=0) const |
| Writes a file in MPS format to out . More...
|
|
virtual void | writeFile (const char *filename, const NameSet *rowNames=0, const NameSet *colNames=0, const DIdxSet *p_intvars=0) const |
| Write loaded LP to filename . More...
|
|
void | printProblemStatistics (std::ostream &os) |
|
virtual void | changeObj (const VectorBase< Real > &newObj) |
| Changes objective vector to newObj . More...
|
|
void | changeObj (int i, const S *newVal) |
| changes i 'th objective vector element to newVal . More...
|
|
virtual void | changeMaxObj (const VectorBase< Real > &newObj) |
| Changes objective vector to newObj . More...
|
|
void | changeMaxObj (int i, const S *newVal) |
| changes i 'th objective vector element to newVal . More...
|
|
virtual void | changeLower (const VectorBase< Real > &newLower) |
| Changes vector of lower bounds to newLower . More...
|
|
void | changeLower (int i, const S *newLower) |
| changes i 'th lower bound to newLower . More...
|
|
virtual void | changeUpper (const VectorBase< Real > &newUpper) |
| Changes vector of upper bounds to newUpper . More...
|
|
void | changeUpper (int i, const S *newUpper) |
| Changes i 'th upper bound to newUpper . More...
|
|
virtual void | changeBounds (const VectorBase< Real > &newLower, const VectorBase< Real > &newUpper) |
| Changes variable bounds to newLower and newUpper . More...
|
|
void | changeBounds (int i, const S *newLower, const S *newUpper) |
| Changes bounds of column i to newLower and newUpper . More...
|
|
virtual void | changeLhs (const VectorBase< Real > &newLhs) |
| Changes left hand side vector for constraints to newLhs . More...
|
|
void | changeLhs (int i, const S *newLhs) |
| Changes i 'th left hand side value to newLhs . More...
|
|
virtual void | changeRhs (const VectorBase< Real > &newRhs) |
| Changes right hand side vector for constraints to newRhs . More...
|
|
virtual void | changeRange (const VectorBase< Real > &newLhs, const VectorBase< Real > &newRhs) |
| Changes left and right hand side vectors. More...
|
|
void | changeRange (int i, const S *newLhs, const S *newRhs) |
| Changes left and right hand side of row i . More...
|
|
virtual void | changeRowObj (const VectorBase< Real > &newRowObj) |
| Changes row objective function vector to newRowObj . More...
|
|
virtual void | changeRow (int n, const LPRowBase< Real > &newRow) |
| Replaces i 'th row of LP with newRow . More...
|
|
virtual void | changeRow (SPxRowId id, const LPRowBase< Real > &newRow) |
| Replaces row with identifier id with newRow . More...
|
|
virtual void | changeCol (int n, const LPColBase< Real > &newCol) |
| Replaces i 'th column of LP with newCol . More...
|
|
virtual void | changeCol (SPxColId id, const LPColBase< Real > &newCol) |
| Replaces column with identifier id with newCol . More...
|
|
void | changeElement (int i, int j, const S *val) |
| Changes LP element (i , j ) to val . More...
|
|
virtual void | changeSense (SPxSense sns) |
| Changes optimization sense to sns . More...
|
|
virtual void | changeObjOffset (const Real &o) |
|
virtual void | computePrimalActivity (const VectorBase< Real > &primal, VectorBase< Real > &activity) const |
| Computes activity of the rows for a given primal vector; activity does not need to be zero. More...
|
|
virtual void | addPrimalActivity (const SVectorBase< Real > &primal, VectorBase< Real > &activity) const |
| Updates activity of the rows for a given primal vector; activity does not need to be zero. More...
|
|
virtual void | computeDualActivity (const VectorBase< Real > &dual, VectorBase< Real > &activity) const |
| Computes "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero. More...
|
|
virtual void | addDualActivity (const SVectorBase< Real > &dual, VectorBase< Real > &activity) const |
| Updates "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero. More...
|
|
virtual void | subDualActivity (const VectorBase< Real > &dual, VectorBase< Real > &activity) const |
| Updates "dual" activity of the columns for a given dual vector, i.e., y^T A; activity does not need to be zero. More...
|
|
bool | isConsistent () const |
| Consistency check. More...
|
|
|
|
virtual bool | precisionReached (Real &newpricertol) const |
| is the solution precise enough, or should we increase delta() ? More...
|
|
|
virtual void | addedRows (int n) |
|
virtual void | addedCols (int n) |
|
virtual void | doRemoveRow (int i) |
|
virtual void | doRemoveRows (int perm[]) |
|
virtual void | doRemoveCol (int i) |
|
virtual void | doRemoveCols (int perm[]) |
|
|
void | clearDualBounds (SPxBasis::Desc::Status, Real &, Real &) const |
|
void | setDualColBounds () |
|
void | setDualRowBounds () |
|
void | setPrimalBounds () |
| setup feasibility bounds for entering algorithm More...
|
|
void | setEnterBound4Col (int, int) |
|
void | setEnterBound4Row (int, int) |
|
virtual void | setEnterBounds () |
|
void | setLeaveBound4Row (int i, int n) |
|
void | setLeaveBound4Col (int i, int n) |
|
virtual void | setLeaveBounds () |
|
|
void | computePrimalray4Col (Real direction, SPxId enterId) |
|
void | computePrimalray4Row (Real direction) |
|
void | computeDualfarkas4Col (Real direction) |
|
void | computeDualfarkas4Row (Real direction, SPxId enterId) |
|
Real & | rhs_w (int i) |
| Returns right hand side of row i . More...
|
|
Real & | lhs_w (int i) |
| Returns left hand side of row i . More...
|
|
Real & | maxRowObj_w (int i) |
| Returns objective function value of row i . More...
|
|
Real & | maxObj_w (int i) |
| Returns objective value of column i for maximization problem. More...
|
|
Real & | upper_w (int i) |
| Returns upper bound of column i . More...
|
|
Real & | lower_w (int i) |
| Returns lower bound of column i . More...
|
|
const LPRowSetBase< Real > * | lprowset () const |
| Returns the LP as an LPRowSetBase. More...
|
|
const LPColSetBase< Real > * | lpcolset () const |
| Returns the LP as an LPColSetBase. More...
|
|
void | added2Set (SVSetBase< Real > &set, const SVSetBase< Real > &addset, int n) |
|
const SVSetBase< Real > * | rowSet () const |
| Returns the complete SVSet. More...
|
|
| LPRowSetBase (int pmax=-1, int pmemmax=-1) |
| Default constructor. More...
|
|
| LPRowSetBase (const LPRowSetBase< Real > &rs) |
| Copy constructor. More...
|
|
| LPRowSetBase (const LPRowSetBase< S > &rs) |
| Copy constructor. More...
|
|
LPRowSetBase< Real > & | operator= (const LPRowSetBase< Real > &rs) |
| Assignment operator. More...
|
|
LPRowSetBase< Real > & | operator= (const LPRowSetBase< S > &rs) |
| Assignment operator. More...
|
|
virtual | ~LPRowSetBase () |
| Destructor. More...
|
|
int | num () const |
| Returns the number of LPRowBases in LPRowSetBase. More...
|
|
int | max () const |
| Returns the maximum number of LPRowBases that fit. More...
|
|
const VectorBase< Real > & | lhs () const |
| Returns the vector of lhs values. More...
|
|
const Real & | lhs (int i) const |
| Returns the lhs of the i 'th LPRowBase. More...
|
|
const Real & | lhs (const DataKey &k) const |
| Returns the lhs of the LPRowBase with DataKey k in LPRowSetBase. More...
|
|
VectorBase< Real > & | lhs_w () |
| Returns the vector of lhs values. More...
|
|
Real & | lhs_w (int i) |
| Returns the lhs of the i 'th LPRowBase. More...
|
|
Real & | lhs_w (const DataKey &k) |
| Returns the lhs of the LPRowBase with DataKey k in LPRowSetBase. More...
|
|
const VectorBase< Real > & | rhs () const |
| Returns the vector of rhs values. More...
|
|
const Real & | rhs (int i) const |
| Returns the rhs of the i 'th LPRowBase. More...
|
|
const Real & | rhs (const DataKey &k) const |
| Returns the rhs of the LPRowBase with DataKey k in LPRowSetBase. More...
|
|
VectorBase< Real > & | rhs_w () |
| Returns the vector of rhs values (writeable). More...
|
|
Real & | rhs_w (int i) |
| Returns the rhs of the i 'th LPRowBase (writeable). More...
|
|
Real & | rhs_w (const DataKey &k) |
| Returns the rhs of the LPRowBase with DataKey k in LPRowSetBase (writeable). More...
|
|
const VectorBase< Real > & | obj () const |
| Returns the vector of objective coefficients. More...
|
|
const Real & | obj (int i) const |
| Returns the objective coefficient of the i 'th LPRowBase. More...
|
|
const Real & | obj (const DataKey &k) const |
| Returns the objective coefficient of the LPRowBase with DataKey k in LPRowSetBase. More...
|
|
VectorBase< Real > & | obj_w () |
| Returns the vector of objective coefficients (writeable). More...
|
|
Real & | obj_w (int i) |
| Returns the objective coefficient of the i 'th LPRowBase (writeable). More...
|
|
Real & | obj_w (const DataKey &k) |
| Returns the objective coefficient of the LPRowBase with DataKey k in LPRowSetBase (writeable). More...
|
|
SVectorBase< Real > & | rowVector_w (int i) |
| Returns a writable rowVector of the i 'th LPRowBase. More...
|
|
SVectorBase< Real > & | rowVector_w (const DataKey &k) |
| Returns a writable rowVector of the LPRowBase with DataKey k . More...
|
|
const SVectorBase< Real > & | rowVector (int i) const |
| Returns the rowVector of the i 'th LPRowBase. More...
|
|
const SVectorBase< Real > & | rowVector (const DataKey &k) const |
| Returns the rowVector of the LPRowBase with DataKey k . More...
|
|
LPRowBase< Real >::Type | type (int i) const |
| Returns the inequalitiy type of the i 'th LPRowBase. More...
|
|
LPRowBase< Real >::Type | type (const DataKey &k) const |
| Returns the inequality type of the LPRowBase with DataKey k . More...
|
|
void | setType (int i, typename LPRowBase< Real >::Type t) |
| Changes the inequality type of row i to type . More...
|
|
const Real & | value (int i) const |
| Returns the value of the i'th LPRowBase. More...
|
|
const Real & | value (const DataKey &k) const |
| Returns the value of the LPRowBase with DataKey k . More...
|
|
DataKey | key (int i) const |
| Returns the DataKey of the i 'th LPRowBase in LPRowSetBase. More...
|
|
int | number (const DataKey &k) const |
| Returns the number of the LPRowBase with DataKey k in LPRowSetBase. More...
|
|
bool | has (const DataKey &k) const |
| does DataKey k belong to LPRowSetBase ? More...
|
|
void | add (const LPRowBase< Real > &row) |
|
void | add (DataKey &pkey, const LPRowBase< Real > &prow) |
| Adds row to LPRowSetBase. More...
|
|
void | add (const Real &plhs, const SVectorBase< Real > &prowVector, const Real &prhs, const Real &pobj=0) |
| Adds LPRowBase consisting of left hand side lhs , row vector rowVector , and right hand side rhs to LPRowSetBase. More...
|
|
void | add (const S *lhsValue, const S *rowValues, const int *rowIndices, int rowSize, const S *rhsValue, const S *objValue=0) |
| Adds LPRowBase consisting of left hand side lhs , row vector rowVector , and right hand side rhs to LPRowSetBase. More...
|
|
void | add (DataKey &newkey, const S *lhsValue, const S *rowValues, const int *rowIndices, int rowSize, const S *rhsValue, const S *objValue=0) |
| Adds LPRowBase consisting of left hand side lhs , row vector rowVector , and right hand side rhs to LPRowSetBase, with DataKey key . More...
|
|
void | add (DataKey &newkey, const Real &newlhs, const SVectorBase< Real > &newrowVector, const Real &newrhs, const Real &newobj=0) |
| Adds LPRowBase consisting of left hand side lhs , row vector rowVector , and right hand side rhs to LPRowSetBase, with DataKey key . More...
|
|
void | add (const LPRowSetBase< Real > &newset) |
|
void | add (DataKey keys[], const LPRowSetBase< Real > &set) |
| Adds all LPRowBases of set to LPRowSetBase. More...
|
|
void | xtend (int n, int newmax) |
| Extends row n to fit newmax nonzeros. More...
|
|
void | xtend (const DataKey &pkey, int pnewmax) |
| Extends row with DataKey key to fit newmax nonzeros. More...
|
|
void | add2 (const DataKey &k, int n, const int idx[], const Real val[]) |
| Adds n nonzero (idx , val )-pairs to rowVector with DataKey k . More...
|
|
void | add2 (int i, int n, const int idx[], const Real val[]) |
| Adds n nonzero (idx , val )-pairs to i 'th rowVector. More...
|
|
void | add2 (int i, int n, const int idx[], const S val[]) |
| Adds n nonzero (idx , val )-pairs to i 'th rowVector. More...
|
|
SVectorBase< Real > & | create (int pnonzeros=0, const Real &plhs=0, const Real &prhs=1, const Real &pobj=0) |
| Creates new LPRowBase with specified parameters and returns a reference to its row vector. More...
|
|
SVectorBase< Real > & | create (DataKey &newkey, int nonzeros=0, const Real &newlhs=0, const Real &newrhs=1, const Real &newobj=0) |
| Creates new LPRowBase with specified parameters and returns a reference to its row vector. More...
|
|
void | remove (int i) |
| Removes i 'th LPRowBase. More...
|
|
void | remove (const DataKey &k) |
| Removes LPRowBase with DataKey k . More...
|
|
void | remove (int perm[]) |
| Removes multiple LPRowBases. More...
|
|
void | remove (const int nums[], int n) |
| Removes n LPRowBases with row numbers given by nums . More...
|
|
void | remove (const int nums[], int n, int *perm) |
| Removes n LPRowBases with row numbers given by nums , Stores permutation of row indices in perm . More...
|
|
void | clear () |
| Removes all LPRowBases. More...
|
|
void | reMax (int newmax=0) |
| Reallocates memory to be able to store newmax LPRowBases. More...
|
|
int | memSize () const |
| Returns number of used nonzero entries. More...
|
|
int | memMax () const |
| Returns length of nonzero memory. More...
|
|
void | memRemax (int newmax) |
| Reallocates memory to be able to store newmax nonzeros. More...
|
|
void | memPack () |
| Garbage collection in nonzero memory. More...
|
|
bool | isConsistent () const |
| Checks consistency. More...
|
|
| SVSetBase (int pmax=-1, int pmemmax=-1, double pfac=1.1, double pmemFac=1.2) |
| Default constructor. More...
|
|
| SVSetBase (const SVSetBase< Real > &old) |
| Copy constructor. More...
|
|
| SVSetBase (const SVSetBase< S > &old) |
| Copy constructor. More...
|
|
virtual | ~SVSetBase () |
| Destructor. More...
|
|
SVSetBase< Real > & | operator= (const SVSetBase< Real > &rhs) |
| Assignment operator. More...
|
|
SVSetBase< Real > & | operator= (const SVSetBase< S > &rhs) |
| Assignment operator. More...
|
|
void | add (const SVectorBase< Real > &svec) |
| Adds svec to the set. More...
|
|
void | add (DataKey &nkey, const SVectorBase< Real > &svec) |
| Adds svec to SVSetBase. More...
|
|
void | add (DataKey &nkey, const S *rowValues, const int *rowIndices, int rowSize) |
| Adds svec to SVSetBase. More...
|
|
void | add (const SVectorBase< Real > svec[], int n) |
| Adds all n SVectorBases in the array svec to the set. More...
|
|
void | add (DataKey nkey[], const SVectorBase< Real > svec[], int n) |
| Adds n SVectorBases to SVSetBase. More...
|
|
void | add (const SVSetBase< S > &pset) |
| Adds all SVectorBases in pset to SVSetBase. More...
|
|
void | add (DataKey nkey[], const SVSetBase< S > &pset) |
| Adds all SVectorBases of pset to SVSetBase. More...
|
|
SVectorBase< Real > * | create (int idxmax=0) |
| Creates new SVectorBase in set. More...
|
|
SVectorBase< Real > * | create (DataKey &nkey, int idxmax=-1) |
| Creates new SVectorBase in set. More...
|
|
void | xtend (SVectorBase< Real > &svec, int newmax) |
| Extends svec to fit newmax nonzeros. More...
|
|
void | add2 (SVectorBase< Real > &svec, int idx, Real val) |
| Adds nonzero (idx , val ) to svec of this SVSetBase. More...
|
|
void | add2 (SVectorBase< Real > &svec, int n, const int idx[], const Real val[]) |
| Adds n nonzeros to svec of this SVSetBase. More...
|
|
void | add2 (SVectorBase< Real > &svec, int n, const int idx[], const S val[]) |
| Adds n nonzeros to svec of this SVSetBase. More...
|
|
void | remove (const DataKey &removekey) |
| Removes the vector with key removekey from the set. More...
|
|
void | remove (int removenum) |
| Removes the vector with number removenum from the set. More...
|
|
void | remove (const SVectorBase< Real > *svec) |
| Removes one SVectorBase from set. More...
|
|
void | remove (int perm[]) |
| Removes multiple elements. More...
|
|
void | remove (const DataKey keys[], int n) |
| Removes n SVectorBases from set. More...
|
|
void | remove (const int nums[], int n) |
| Removes n SVectorBases from set. More...
|
|
void | remove (const DataKey keys[], int n, int *perm) |
|
void | remove (const int nums[], int n, int *perm) |
|
void | clear (int minNewSize=-1) |
| Removes all SVectorBases from set. More...
|
|
SVectorBase< Real > & | operator[] (int n) |
| Gets SVectorBase by number, writeable. More...
|
|
const SVectorBase< Real > & | operator[] (int n) const |
| Gets SVectorBase by number. More...
|
|
SVectorBase< Real > & | operator[] (const DataKey &k) |
| Gets SVectorBase by DataKey, writeable. More...
|
|
const SVectorBase< Real > & | operator[] (const DataKey &k) const |
| Gets SVectorBase by DataKey. More...
|
|
int | num () const |
| Current number of SVectorBases. More...
|
|
int | max () const |
| Current maximum number of SVectorBases. More...
|
|
DataKey | key (int n) const |
| Gets DataKey of vector number. More...
|
|
DataKey | key (const SVectorBase< Real > *svec) const |
| Gets DataKey of SVectorBase. More...
|
|
int | number (const DataKey &k) const |
| Gets vector number of DataKey. More...
|
|
int | number (const SVectorBase< Real > *svec) const |
| Gets vector number of SVectorBase. More...
|
|
bool | has (const DataKey &k) const |
| True iff SVSetBase contains a SVectorBase for DataKey k . More...
|
|
bool | has (int n) const |
| True iff SVSetBase contains a SVectorBase for vector number n. More...
|
|
bool | has (const SVectorBase< Real > *svec) const |
| Is an SVectorBase in the set? More...
|
|
int | memSize () const |
| Used nonzero memory. More...
|
|
int | memMax () const |
| Length of nonzero memory. More...
|
|
void | memRemax (int newmax) |
| Reset length of nonzero memory. More...
|
|
void | memPack () |
| Garbage collection in nonzero memory. More...
|
|
void | reMax (int newmax=0) |
| Resets maximum number of SVectorBases. More...
|
|
bool | isConsistent () const |
| Consistency check. More...
|
|
Nonzero< Real > & | operator[] (int n) |
| Reference to n 'th element. More...
|
|
const Nonzero< Real > & | operator[] (int n) const |
| Reference to n 'th const element. More...
|
|
Nonzero< Real > & | last () |
| Reference to last element. More...
|
|
const Nonzero< Real > & | last () const |
| Reference to last const element. More...
|
|
Nonzero< Real > * | get_ptr () |
| Gets a C pointer to the data. More...
|
|
const Nonzero< Real > * | get_const_ptr () const |
| Gets a const C pointer to the data. More...
|
|
void | append (const Nonzero< Real > &t) |
| Appends element t . More...
|
|
void | append (int n, const Nonzero< Real > t[]) |
| Appends n elements from t . More...
|
|
void | append (const ClassArray< Nonzero< Real > > &t) |
| Appends all elements from t . More...
|
|
void | insert (int i, int n) |
| Inserts n uninitialized elements before i 'th element. More...
|
|
void | insert (int i, int n, const Nonzero< Real > t[]) |
| Inserts n elements from t before i 'the element. More...
|
|
void | insert (int i, const ClassArray< Nonzero< Real > > &t) |
| Inserts all elements from t before i 'th element. More...
|
|
void | remove (int n=0, int m=1) |
| Removes m elements starting at n . More...
|
|
void | removeLast (int m=1) |
| Removes m last elements. More...
|
|
void | clear () |
| Removes all elements. More...
|
|
int | size () const |
| Returns number of elements. More...
|
|
void | reSize (int newsize) |
| Resets size to newsize . More...
|
|
int | max () const |
| Returns maximum number of elements. More...
|
|
ptrdiff_t | reMax (int newMax=1, int newSize=-1) |
| Resets maximum number of elements. More...
|
|
ClassArray & | operator= (const ClassArray &rhs) |
| Assignment operator. More...
|
|
bool | isConsistent () const |
| Consistency check. More...
|
|
| ClassArray (const ClassArray &old) |
| Copy constructor. More...
|
|
| ClassArray (int p_size=0, int p_max=0, double p_fac=1.2) |
| Default constructor. More...
|
|
virtual | ~ClassArray () |
| Destructor. More...
|
|
const SVSetBase< Real > * | colSet () const |
| Returns the complete SVSetBase. More...
|
|
| LPColSetBase (int pmax=-1, int pmemmax=-1) |
| Default constructor. More...
|
|
| LPColSetBase (const LPColSetBase< Real > &rs) |
| Copy constructor. More...
|
|
| LPColSetBase (const LPColSetBase< S > &rs) |
| Copy constructor. More...
|
|
LPColSetBase< Real > & | operator= (const LPColSetBase< Real > &rs) |
| Assignment operator. More...
|
|
LPColSetBase< Real > & | operator= (const LPColSetBase< S > &rs) |
| Assignment operator. More...
|
|
virtual | ~LPColSetBase () |
| Destructor. More...
|
|
int | num () const |
| Returns the number of LPColBases currently in LPColSetBase. More...
|
|
int | max () const |
| Returns maximum number of LPColBases currently fitting into LPColSetBase. More...
|
|
const VectorBase< Real > & | maxObj () const |
|
const Real & | maxObj (int i) const |
|
const Real & | maxObj (const DataKey &k) const |
|
VectorBase< Real > & | maxObj_w () |
| Returns vector of objective values w.r.t. maximization. More...
|
|
Real & | maxObj_w (int i) |
| Returns objective value (w.r.t. maximization) of i 'th LPColBase in LPColSetBase. More...
|
|
Real & | maxObj_w (const DataKey &k) |
| Returns objective value (w.r.t. maximization) of LPColBase with DataKey k in LPColSetBase. More...
|
|
const VectorBase< Real > & | lower () const |
|
const Real & | lower (int i) const |
|
const Real & | lower (const DataKey &k) const |
|
VectorBase< Real > & | lower_w () |
| Returns vector of lower bound values. More...
|
|
Real & | lower_w (int i) |
| Returns lower bound of i 'th LPColBase in LPColSetBase. More...
|
|
Real & | lower_w (const DataKey &k) |
| Returns lower bound of LPColBase with DataKey k in LPColSetBase. More...
|
|
const VectorBase< Real > & | upper () const |
|
const Real & | upper (int i) const |
|
const Real & | upper (const DataKey &k) const |
|
VectorBase< Real > & | upper_w () |
| Returns vector of upper bound values. More...
|
|
Real & | upper_w (int i) |
| Returns upper bound of i 'th LPColBase in LPColSetBase. More...
|
|
Real & | upper_w (const DataKey &k) |
| Returns upper bound of LPColBase with DataKey k in LPColSetBase. More...
|
|
SVectorBase< Real > & | colVector_w (int i) |
|
SVectorBase< Real > & | colVector_w (const DataKey &k) |
| Returns writeable colVector of LPColBase with DataKey k in LPColSetBase. More...
|
|
const SVectorBase< Real > & | colVector (int i) const |
| Returns colVector of i 'th LPColBase in LPColSetBase. More...
|
|
const SVectorBase< Real > & | colVector (const DataKey &k) const |
| Returns colVector of LPColBase with DataKey k in LPColSetBase. More...
|
|
DataKey | key (int i) const |
| Returns DataKey of i 'th LPColBase in LPColSetBase. More...
|
|
int | number (const DataKey &k) const |
| Returns number of LPColBase with DataKey k in LPColSetBase. More...
|
|
bool | has (const DataKey &k) const |
| Does DataKey k belong to LPColSetBase ? More...
|
|
void | add (const LPColBase< Real > &pcol) |
|
void | add (DataKey &pkey, const LPColBase< Real > &pcol) |
| Adds p pcol to LPColSetBase. More...
|
|
void | add (const Real &pobj, const Real &plower, const SVectorBase< Real > &pcolVector, const Real &pupper) |
|
void | add (DataKey &newkey, const Real &obj, const Real &newlower, const SVectorBase< Real > &newcolVector, const Real &newupper) |
| Adds LPColBase consisting of objective value obj , lower bound lower , column vector colVector and upper bound upper to LPColSetBase. More...
|
|
void | add (const S *obj, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue) |
| Adds LPColBase consisting of left hand side lhs , column vector colVector , and right hand side rhs to LPColSetBase. More...
|
|
void | add (DataKey &newkey, const S *objValue, const S *lowerValue, const S *colValues, const int *colIndices, int colSize, const S *upperValue) |
| Adds LPColBase consisting of left hand side lhs , column vector colVector , and right hand side rhs to LPColSetBase, with DataKey key . More...
|
|
void | add (const LPColSetBase< Real > &newset) |
|
void | add (DataKey keys[], const LPColSetBase< Real > &newset) |
| Adds all LPColBases of set to LPColSetBase. More...
|
|
void | xtend (int n, int newmax) |
| Extends column n to fit newmax nonzeros. More...
|
|
void | xtend (const DataKey &pkey, int pnewmax) |
| Extends column with DataKey key to fit newmax nonzeros. More...
|
|
void | add2 (const DataKey &k, int n, const int idx[], const Real val[]) |
|
void | add2 (int i, int n, const int idx[], const Real val[]) |
| Adds n nonzero (idx , val )-pairs to i 'th colVector. More...
|
|
void | add2 (int i, int n, const int idx[], const S val[]) |
| Adds n nonzero (idx , val )-pairs to i 'th colVector. More...
|
|
SVectorBase< Real > & | create (int pnonzeros=0, const Real &pobj=1, const Real &plw=0, const Real &pupp=1) |
|
SVectorBase< Real > & | create (DataKey &newkey, int nonzeros=0, const Real &obj=1, const Real &newlow=0, const Real &newup=1) |
| Creates new LPColBase with specified arguments and returns a reference to its column vector. More...
|
|
void | remove (int i) |
| Removes i 'th LPColBase. More...
|
|
void | remove (const DataKey &k) |
| Removes LPColBase with DataKey k . More...
|
|
void | remove (int perm[]) |
| Removes multiple elements. More...
|
|
void | remove (const int nums[], int n) |
| Removes LPColBases with numbers nums , where n is the length of the array nums . More...
|
|
void | remove (const int nums[], int n, int *perm) |
| Removes LPColBases with numbers nums , where n is the length of the array nums , and stores the index permutation in array perm . More...
|
|
void | clear () |
| Removes all LPColBases from the set. More...
|
|
void | reMax (int newmax=0) |
| Reallocates memory to be able to store newmax LPColBases. More...
|
|
int | memSize () const |
| Returns used nonzero memory. More...
|
|
int | memMax () const |
| Returns length of nonzero memory. More...
|
|
void | memRemax (int newmax) |
| Resets length of nonzero memory. More...
|
|
void | memPack () |
| Garbage collection in nonzero memory. More...
|
|
bool | isConsistent () const |
| Checks consistency. More...
|
|
void | loadMatrixVecs () |
| loads matrix according to the SPxIds stored in theBaseId. More...
|
|
void | reDim () |
| resizes internal arrays. More...
|
|
void | setRep () |
| sets descriptor representation according to loaded LP. More...
|
|
SPxStatus | status () const |
| returns current SPxStatus. More...
|
|
void | setStatus (SPxStatus stat) |
| sets basis SPxStatus to stat . More...
|
|
void | setMaxUpdates (int maxUp) |
| change maximum number of iterations until a refactorization is performed More...
|
|
int | getMaxUpdates () const |
| returns maximum number of updates before a refactorization is performed More...
|
|
const Desc & | desc () const |
|
Desc & | desc () |
| returns current basis Descriptor. More...
|
|
Desc::Status | dualColStatus (int i) const |
| dual Status for the i'th column variable of the loaded LP. More...
|
|
Desc::Status | dualStatus (const SPxColId &id) const |
| dual Status for the column variable with ID id of the loaded LP. More...
|
|
Desc::Status | dualRowStatus (int i) const |
| dual Status for the i'th row variable of the loaded LP. More...
|
|
Desc::Status | dualStatus (const SPxRowId &id) const |
| dual Status for the row variable with ID id of the loaded LP. More...
|
|
Desc::Status | dualStatus (const SPxId &id) const |
| dual Status for the variable with ID id of the loaded LP. More...
|
|
SPxId & | baseId (int i) |
|
SPxId | baseId (int i) const |
| returns the Id of the i'th basis vector. More...
|
|
const SVector & | baseVec (int i) const |
| returns the i'th basic vector. More...
|
|
SPxId | lastEntered () const |
| returns SPxId of last vector included to the basis. More...
|
|
SPxId | lastLeft () const |
| returns SPxId of last vector that left the basis. More...
|
|
int | lastIndex () const |
| returns index in basis where last update was done. More...
|
|
int | lastUpdate () const |
| returns number of basis changes since last refactorization. More...
|
|
int | iteration () const |
| returns number of basis changes since last load(). More...
|
|
SPxSolver * | solver () const |
| returns loaded solver. More...
|
|
Vector & | multBaseWith (Vector &x) const |
| Basis-vector product. More...
|
|
void | multBaseWith (SSVector &x, SSVector &result) const |
| Basis-vector product. More...
|
|
Vector & | multWithBase (Vector &x) const |
| Vector-basis product. More...
|
|
void | multWithBase (SSVector &x, SSVector &result) const |
| Vector-basis product. More...
|
|
Real | condition (int maxiters=10, Real tolerance=1e-6) |
|
Real | getEstimatedCondition () |
|
Real | getExactCondition () |
|
Real | stability () const |
| returns the stability of the basis matrix. More...
|
|
void | solve (Vector &x, const Vector &rhs) |
|
void | solve (SSVector &x, const SVector &rhs) |
|
void | solve4update (SSVector &x, const SVector &rhs) |
| solves linear system with basis matrix. More...
|
|
void | solve4update (SSVector &x, Vector &y, const SVector &rhsx, SSVector &rhsy) |
| solves two systems in one call. More...
|
|
void | solve4update (SSVector &x, SSVector &y, const SVector &rhsx, SSVector &rhsy) |
| solves two systems in one call using only sparse data structures More...
|
|
void | solve4update (SSVector &x, Vector &y, Vector &y2, const SVector &rhsx, SSVector &rhsy, SSVector &rhsy2) |
| solves three systems in one call. More...
|
|
void | solve4update (SSVector &x, SSVector &y, SSVector &y2, const SVector &rhsx, SSVector &rhsy, SSVector &rhsy2) |
| solves three systems in one call using only sparse data structures More...
|
|
void | coSolve (Vector &x, const Vector &rhs) |
| Cosolves linear system with basis matrix. More...
|
|
void | coSolve (SSVector &x, const SVector &rhs) |
| Sparse version of coSolve. More...
|
|
void | coSolve (SSVector &x, Vector &y, const SVector &rhsx, SSVector &rhsy) |
| solves two systems in one call. More...
|
|
void | coSolve (SSVector &x, SSVector &y, const SVector &rhsx, SSVector &rhsy) |
| Sparse version of solving two systems in one call. More...
|
|
void | coSolve (SSVector &x, Vector &y, Vector &z, const SVector &rhsx, SSVector &rhsy, SSVector &rhsz) |
| solves three systems in one call. May be improved by using just one pass through the basis. More...
|
|
void | coSolve (SSVector &x, SSVector &y, SSVector &z, const SVector &rhsx, SSVector &rhsy, SSVector &rhsz) |
| Sparse version of solving three systems in one call. More...
|
|
void | addedRows (int n) |
| inform SPxBasis, that n new rows had been added. More...
|
|
void | removedRow (int i) |
| inform SPxBasis that row i had been removed. More...
|
|
void | removedRows (const int perm[]) |
| inform SPxBasis that rows in perm with negative entry were removed. More...
|
|
void | addedCols (int n) |
| inform SPxBasis that n new columns had been added. More...
|
|
void | removedCol (int i) |
| inform SPxBasis that column i had been removed. More...
|
|
void | removedCols (const int perm[]) |
| inform SPxBasis that columns in perm with negative entry were removed. More...
|
|
void | changedRow (int) |
| inform SPxBasis that a row had been changed. More...
|
|
void | changedCol (int) |
| inform SPxBasis that a column had been changed. More...
|
|
void | changedElement (int, int) |
| inform SPxBasis that a matrix entry had been changed. More...
|
|
virtual void | change (int i, SPxId &id, const SVector *enterVec, const SSVector *eta=0) |
| performs basis update. More...
|
|
virtual bool | readBasis (std::istream &in, const NameSet *rowNames, const NameSet *colNames) |
|
virtual void | writeBasis (std::ostream &os, const NameSet *rownames, const NameSet *colnames, const bool cpxFormat=false) const |
|
virtual void | printMatrix () const |
|
void | printMatrixMTX (int number) |
|
virtual bool | isDescValid (const Desc &ds) |
| checks if a Descriptor is valid for the current LP w.r.t. its bounds More...
|
|
virtual void | loadDesc (const Desc &) |
| sets up basis. More...
|
|
virtual void | loadSolver (SLinSolver *solver, const bool destroy=false) |
| sets up linear solver to use. More...
|
|
virtual void | load (SPxSolver *lp) |
| loads the LP lp to the basis. More...
|
|
virtual void | unLoad () |
| unloads the LP from the basis. More...
|
|
void | invalidate () |
| invalidates actual basis. More...
|
|
void | restoreInitialBasis () |
| Restores initial basis. More...
|
|
void | dump () |
| output basis entries. More...
|
|
bool | isConsistent () const |
| consistency check. More...
|
|
Real | getTotalUpdateTime () const |
| time spent in updates More...
|
|
int | getTotalUpdateCount () const |
| number of updates performed More...
|
|
std::string | statistics () const |
| returns statistical information in form of a string. More...
|
|
void | setOutstream (SPxOut &newOutstream) |
|
| SPxBasis (Timer::TYPE ttype=Timer::USER_TIME) |
| default constructor. More...
|
|
| SPxBasis (const SPxBasis &old) |
| copy constructor More...
|
|
SPxBasis & | operator= (const SPxBasis &rhs) |
| assignment operator More...
|
|
virtual | ~SPxBasis () |
| destructor. More...
|
|
|
|
void | localAddRows (int start) |
|
void | localAddCols (int start) |
|
void | setPrimal (Vector &p_vector) |
|
void | setSlacks (Vector &p_vector) |
|
void | setDual (Vector &p_vector) |
|
void | setRedCost (Vector &p_vector) |
|
|
void | perturbMin (const UpdateVector &vec, Vector &low, Vector &up, Real eps, Real delta, int start=0, int incr=1) |
|
void | perturbMax (const UpdateVector &vec, Vector &low, Vector &up, Real eps, Real delta, int start=0, int incr=1) |
|
Real | perturbMin (const UpdateVector &uvec, Vector &low, Vector &up, Real eps, Real delta, const SPxBasis::Desc::Status *stat, int start, int incr) const |
|
Real | perturbMax (const UpdateVector &uvec, Vector &low, Vector &up, Real eps, Real delta, const SPxBasis::Desc::Status *stat, int start, int incr) const |
|
|
In this section we present the methods, that are provided in order to allow a parallel version to be implemented as a derived class, thereby inheriting most of the code of SPxSolver.
- Initialization
- These methods are used to setup all the vectors used in the Simplex loop, that where described in the previous sectios.
|
bool | isInitialized () const |
| has the internal data been initialized? More...
|
|
void | resetClockStats () |
| resets clock average statistics More...
|
|
virtual void | unInit () |
| uninitialize data structures. More...
|
|
virtual void | reinitializeVecs () |
| setup all vecs fresh More...
|
|
virtual void | reDim () |
| reset dimensions of vectors according to loaded LP. More...
|
|
void | computeFrhs () |
| compute feasibility vector from scratch. More...
|
|
virtual void | computeFrhsXtra () |
|
virtual void | computeFrhs1 (const Vector &, const Vector &) |
|
void | computeFrhs2 (Vector &, Vector &) |
|
virtual void | computeEnterCoPrhs () |
| compute theCoPrhs for entering Simplex. More...
|
|
void | computeEnterCoPrhs4Row (int i, int n) |
|
void | computeEnterCoPrhs4Col (int i, int n) |
|
virtual void | computeLeaveCoPrhs () |
| compute theCoPrhs for leaving Simplex. More...
|
|
void | computeLeaveCoPrhs4Row (int i, int n) |
|
void | computeLeaveCoPrhs4Col (int i, int n) |
|
Real | nonbasicValue () |
| Compute part of objective value. More...
|
|
virtual const SVector * | enterVector (const SPxId &p_id) |
| Get pointer to the id 'th vector. More...
|
|
virtual void | getLeaveVals (int i, SPxBasis::Desc::Status &leaveStat, SPxId &leaveId, Real &leaveMax, Real &leavebound, int &leaveNum, Real &objChange) |
|
virtual void | getLeaveVals2 (Real leaveMax, SPxId enterId, Real &enterBound, Real &newUBbound, Real &newLBbound, Real &newCoPrhs, Real &objChange) |
|
virtual void | getEnterVals (SPxId id, Real &enterTest, Real &enterUB, Real &enterLB, Real &enterVal, Real &enterMax, Real &enterPric, SPxBasis::Desc::Status &enterStat, Real &enterRO, Real &objChange) |
|
virtual void | getEnterVals2 (int leaveIdx, Real enterMax, Real &leaveBound, Real &objChange) |
|
virtual void | ungetEnterVal (SPxId enterId, SPxBasis::Desc::Status enterStat, Real leaveVal, const SVector &vec, Real &objChange) |
|
virtual void | rejectEnter (SPxId enterId, Real enterTest, SPxBasis::Desc::Status enterStat) |
|
virtual void | rejectLeave (int leaveNum, SPxId leaveId, SPxBasis::Desc::Status leaveStat, const SVector *newVec=0) |
|
virtual void | setupPupdate (void) |
|
virtual void | doPupdate (void) |
|
virtual void | clearUpdateVecs (void) |
|
virtual void | perturbMinEnter (void) |
|
virtual void | perturbMaxEnter (void) |
| perturb basis bounds. More...
|
|
virtual void | perturbMinLeave (void) |
|
virtual void | perturbMaxLeave (void) |
| perturb nonbasic bounds. More...
|
|
virtual void | init () |
| intialize data structures. More...
|
|
VarStatus | basisStatusToVarStatus (SPxBasis::Desc::Status stat) const |
| converts basis status to VarStatus More...
|
|
SPxBasis::Desc::Status | varStatusToBasisStatusRow (int row, VarStatus stat) const |
| converts VarStatus to basis status for rows More...
|
|
SPxBasis::Desc::Status | varStatusToBasisStatusCol (int col, VarStatus stat) const |
| converts VarStatus to basis status for columns More...
|
|
virtual void | setTerminationTime (Real time=infinity) |
| set time limit. More...
|
|
virtual Real | terminationTime () const |
| return time limit. More...
|
|
virtual void | setTerminationIter (int iteration=-1) |
| set iteration limit. More...
|
|
virtual int | terminationIter () const |
| return iteration limit. More...
|
|
virtual void | setTerminationValue (Real value=infinity) |
| set objective limit. More...
|
|
virtual Real | terminationValue () const |
| return objective limit. More...
|
|
virtual Real | objValue () |
| get objective value of current solution. More...
|
|
Status | getResult (Real *value=0, Vector *primal=0, Vector *slacks=0, Vector *dual=0, Vector *reduCost=0) |
| get all results of last solve. More...
|
|
VarStatus | getBasisRowStatus (int row) const |
| gets basis status for a single row More...
|
|
VarStatus | getBasisColStatus (int col) const |
| gets basis status for a single column More...
|
|
Status | getBasis (VarStatus rows[], VarStatus cols[], const int rowsSize=-1, const int colsSize=-1) const |
| get current basis, and return solver status. More...
|
|
SPxBasis::SPxStatus | getBasisStatus () const |
| gets basis status More...
|
|
bool | isBasisValid (DataArray< VarStatus > rows, DataArray< VarStatus > cols) |
| check a given basis for validity. More...
|
|
void | setBasis (const VarStatus rows[], const VarStatus cols[]) |
| set the lp solver's basis. More...
|
|
void | setBasisStatus (SPxBasis::SPxStatus stat) |
| set the lp solver's basis status. More...
|
|
void | getNdualNorms (int &nnormsRow, int &nnormsCol) const |
| get number of dual norms More...
|
|
bool | getDualNorms (int &nnormsRow, int &nnormsCol, Real *norms) const |
| get dual norms More...
|
|
bool | setDualNorms (int nnormsRow, int nnormsCol, Real *norms) |
| set dual norms More...
|
|
void | resetCumulativeTime () |
| reset cumulative time counter to zero. More...
|
|
int | boundFlips () const |
| get number of bound flips. More...
|
|
int | iterations () const |
| get number of iterations of current solution. More...
|
|
int | primalIterations () |
| return number of iterations done with primal algorithm More...
|
|
int | dualIterations () |
| return number of iterations done with primal algorithm More...
|
|
Real | time () const |
| time spent in last call to method solve(). More...
|
|
bool | isTimeLimitReached (const bool forceCheck=false) |
| returns whether current time limit is reached; call to time() may be skipped unless forceCheck is true More...
|
|
Real | cumulativeTime () const |
| cumulative time spent in all calls to method solve(). More...
|
|
const LPRowSet & | rows () const |
| return const lp's rows if available. More...
|
|
const LPColSet & | cols () const |
| return const lp's cols if available. More...
|
|
void | getLower (Vector &p_low) const |
| copy lower bound vector to p_low . More...
|
|
void | getUpper (Vector &p_up) const |
| copy upper bound vector to p_up . More...
|
|
void | getLhs (Vector &p_lhs) const |
| copy lhs value vector to p_lhs . More...
|
|
void | getRhs (Vector &p_rhs) const |
| copy rhs value vector to p_rhs . More...
|
|
SPxSense | sense () const |
| optimization sense. More...
|
|
std::string | statistics () const |
| returns statistical information in form of a string. More...
|
|
Sequential object-oriented SimPlex.
SPxSolver is an LP solver class using the revised Simplex algorithm. It provids two basis representations, namely a column basis and a row basis (see Representation). For both representations, a primal and dual algorithm is available (see Type).
In addition, SPxSolver can be custumized with various respects:
SPxSolver is derived from SPxLP that is used to store the LP to be solved. Hence, the LPs solved with SPxSolver have the general format
Also, SPxLP provide all manipulation methods for the LP. They allow SPxSolver to be used within cutting plane algorithms.
Definition at line 84 of file spxsolver.h.
Pricing type.
In case of the ENTERing Simplex algorithm, for performance reasons it may be advisable not to compute and maintain up to date vectors pVec() and test() and instead compute only some of its elements explicitely. This is controled by the Pricing type.
Definition at line 152 of file spxsolver.h.
LP basis representation.
Solving LPs with the Simplex algorithm requires the definition of a basis. A basis can be defined as a set of column vectors or a set of row vectors building a nonsingular matrix. We will refer to the first case as the columnwise representation and the latter case will be called the rowwise representation.
Type Representation determines the representation of SPxSolver, i.e. a columnwise (COLUMN == 1) or rowwise (ROW == -1) one.
Enumerator |
---|
ROW |
rowwise representation.
|
COLUMN |
columnwise representation.
|
Definition at line 105 of file spxsolver.h.
- Todo:
- In spxchange, change the status to if (m_status > 0) m_status = REGULAR;
Enumerator |
---|
ERROR |
an error occured.
|
NO_RATIOTESTER |
No ratiotester loaded.
|
NO_PRICER |
No pricer loaded.
|
NO_SOLVER |
No linear solver loaded.
|
NOT_INIT |
not initialised error
|
ABORT_CYCLING |
solve() aborted due to detection of cycling.
|
ABORT_TIME |
solve() aborted due to time limit.
|
ABORT_ITER |
solve() aborted due to iteration limit.
|
ABORT_VALUE |
solve() aborted due to objective limit.
|
SINGULAR |
Basis is singular, numerical troubles?
|
NO_PROBLEM |
No Problem has been loaded.
|
REGULAR |
LP has a usable Basis (maybe LP is changed).
|
RUNNING |
algorithm is running
|
UNKNOWN |
nothing known on loaded problem.
|
OPTIMAL |
LP has been solved to optimality.
|
UNBOUNDED |
LP has been proven to be primal unbounded.
|
INFEASIBLE |
LP has been proven to be primal infeasible.
|
INForUNBD |
LP is primal infeasible or unbounded.
|
Definition at line 190 of file spxsolver.h.
Algorithmic type.
SPxSolver uses the reviesed Simplex algorithm to solve LPs. Mathematically, one distinguishes the primal from the dual algorihm. Algorithmically, these relate to the two types ENTER or LEAVE. How they relate, depends on the chosen basis representation. This is desribed by the following table:
| ENTER | LEAVE |
ROW | DUAL | PRIMAL |
COLUMN | PRIMAL | DUAL |
Enumerator |
---|
ENTER |
Entering Simplex.
The Simplex loop for the entering Simplex can be sketched as follows:
- Pricing : Select a variable to ENTER the basis.
- Ratio-Test : Select variable to LEAVE the basis such that the basis remains feasible.
- Perform the basis update.
|
LEAVE |
Leaving Simplex.
The Simplex loop for the leaving Simplex can be sketched as follows:
- Pricing: Select a variable to LEAVE the basis.
- Ratio-Test: Select variable to ENTER the basis such that the basis remains priced.
- Perform the basis update.
|
Definition at line 124 of file spxsolver.h.
Enumerator |
---|
ON_UPPER |
variable set to its upper bound.
|
ON_LOWER |
variable set to its lower bound.
|
FIXED |
variable fixed to identical bounds.
|
ZERO |
free variable fixed to zero.
|
BASIC |
variable is basic.
|
UNDEFINED |
nothing known about basis status (possibly due to a singular basis in transformed problem)
|
Definition at line 177 of file spxsolver.h.
copy constructor
Definition at line 1213 of file spxsolver.cpp.
References SPxSolver::addVec, SPxRatioTester::clear(), SPxPricer::clear(), SPxStarter::clone(), SPxRatioTester::clone(), SPxPricer::clone(), LPColSetBase< Real >::colSet(), SPxSolver::COLUMN, TimerFactory::createTimer(), SPxSolver::dualRhs, SPxSolver::dualVec, SPxSolver::freePricer, SPxSolver::freeRatioTester, SPxSolver::freeStarter, SPxSolver::isConsistent(), SPxRatioTester::load(), SPxPricer::load(), SPxSolver::primRhs, SPxSolver::primVec, SPxSolver::ROW, LPRowSetBase< Real >::rowSet(), SPxSolver::theCoLbound, SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theCoUbound, SPxSolver::thecovectors, SPxSolver::theCPvec, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLbound, SPxSolver::theLCbound, SPxBasis::theLP, SPxSolver::theLRbound, SPxSolver::thepricer, SPxSolver::thePvec, SPxSolver::theratiotester, SPxSolver::theRep, SPxSolver::theRPvec, SPxSolver::thestarter, SPxSolver::theTime, SPxSolver::theUbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::thevectors, and SPxSolver::timerType.
Reimplemented from SPxLPBase< Real >.
Definition at line 205 of file changesoplex.cpp.
References SPxBasis::addedCols(), SPxSolver::addedCols(), SPxLPBase< Real >::addedCols(), SPxPricer::addedCoVecs(), SPxBasis::addedRows(), SPxLPBase< Real >::addedRows(), SPxPricer::addedVecs(), SPxSolver::clearDualBounds(), SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxSolver::computeCoTest(), SPxSolver::computeEnterCoPrhs4Col(), SPxSolver::computeFtest(), SPxSolver::computeLeaveCoPrhs4Col(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxBasis::coSolve(), SPxBasis::desc(), SPxSolver::ENTER, SPxSolver::entertol(), SPxSolver::isInitialized(), SPxSolver::leavetol(), SPxSolver::localAddCols(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxObj(), VectorBase< R >::multAdd(), SPxLPBase< Real >::nCols(), SPxBasis::NO_PROBLEM, LPRowSetBase< Real >::obj(), SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::reDim(), SPxSolver::rep(), SPxSolver::ROW, SPxSolver::setEnterBound4Col(), SPxSolver::setLeaveBound4Col(), SPxSolver::shiftFvec(), SPxSolver::shiftLBbound(), SPxSolver::shiftLPbound(), SPxSolver::shiftUBbound(), SPxSolver::shiftUPbound(), SPxBasis::solve(), SPxLPBase< Real >::spxSense(), SPxBasis::status(), SPxSolver::test(), SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLCbound, SPxSolver::thepricer, SPxSolver::thePvec, SPxSolver::theTest, SPxSolver::theUBbound, SPxSolver::theUCbound, SPxSolver::type(), SPxSolver::unInit(), SPxLPBase< Real >::upper(), and SPxSolver::vector().
Return current basis.
- Note
- The basis can be used to solve linear systems or use any other of its (const) methods. It is, however, encuraged to use methods setup4solve() and setup4coSolve() for solving systems, since this is likely to have perfomance advantages.
Definition at line 1616 of file spxsolver.h.
Referenced by SoPlex::_addColReal(), SoPlex::_addColsReal(), SoPlex::_addRowReal(), SoPlex::_addRowsReal(), SoPlex::_changeBoundsReal(), SoPlex::_changeColReal(), SoPlex::_changeElementReal(), SoPlex::_changeLhsReal(), SoPlex::_changeLowerReal(), SoPlex::_changeRangeReal(), SoPlex::_changeRhsReal(), SoPlex::_changeRowReal(), SoPlex::_changeUpperReal(), SoPlex::_ensureRealLPLoaded(), SoPlex::_evaluateSolutionReal(), SoPlex::_performOptIRStable(), SoPlex::_removeColReal(), SoPlex::_removeColsReal(), SoPlex::_removeRowReal(), SoPlex::_removeRowsReal(), SoPlex::_restoreLPReal(), SoPlex::_solveRational(), SoPlex::_storeSolutionReal(), SPxWeightPR::computeLeavePenalty(), SPxSteepPR::entered4(), SPxBoundFlippingRT::flipAndUpdate(), SoPlex::getBasisInd(), SoPlex::getBasisInverseColReal(), SoPlex::getBasisInverseRowReal(), SoPlex::getBasisInverseTimesVecReal(), SoPlex::getEstimatedCondition(), SoPlex::getExactCondition(), SPxSteepPR::isConsistent(), SoPlexLegacy::iteration(), SPxSolver::leave(), SPxSteepPR::left4(), SoPlex::readBasisFile(), SPxWeightPR::selectEnter(), SPxSteepPR::selectEnter(), SPxFastRT::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxDevexPR::selectEnterX(), SPxSteepPR::selectEnterX(), SPxDevexPR::selectLeave(), SPxSteepPR::selectLeave(), SPxFastRT::selectLeave(), SPxBoundFlippingRT::selectLeave(), SoPlex::setBasis(), soplex::setDualStatus(), SoPlex::setIntParam(), SPxSteepPR::setupWeights(), SoPlexLegacy::solve(), SPxSolver::solve(), and SPxSolver::writeState().
converts basis status to VarStatus
- Todo:
- put the following basis methods near the variable status methods!
Definition at line 1553 of file spxsolver.cpp.
References SPxSolver::BASIC, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxSolver::FIXED, MSG_ERROR, SPxSolver::ON_LOWER, SPxSolver::ON_UPPER, SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, and SPxSolver::ZERO.
Referenced by SPxSolver::getBasis(), SPxSolver::getBasisColStatus(), and SPxSolver::getBasisRowStatus().
void changeBounds |
( |
const Vector & |
newLower, |
|
|
const Vector & |
newUpper |
|
) |
| |
|
virtual |
void changeBounds |
( |
int |
i, |
|
|
const Real & |
newLower, |
|
|
const Real & |
newUpper |
|
) |
| |
|
virtual |
virtual void changeBounds |
( |
SPxColId |
p_id, |
|
|
const Real & |
p_newLower, |
|
|
const Real & |
p_newUpper |
|
) |
| |
|
virtual |
void changeCol |
( |
int |
i, |
|
|
const LPCol & |
newCol |
|
) |
| |
|
virtual |
void changeElement |
( |
int |
i, |
|
|
int |
j, |
|
|
const Real & |
val |
|
) |
| |
|
virtual |
void changeLhs |
( |
const Vector & |
newLhs | ) |
|
|
virtual |
void changeLhs |
( |
int |
i, |
|
|
const Real & |
newLhs |
|
) |
| |
|
virtual |
virtual void changeLhs |
( |
SPxRowId |
p_id, |
|
|
const Real & |
p_newLhs |
|
) |
| |
|
virtual |
void changeLhsStatus |
( |
int |
i, |
|
|
Real |
newLhs, |
|
|
Real |
oldLhs = 0.0 |
|
) |
| |
|
virtual |
Definition at line 956 of file changesoplex.cpp.
References SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), SPxBasis::dualRowStatus(), SPxSolver::forceRecompNonbasicValue(), soplex::infinity, SPxSolver::m_nonbasicValueUpToDate, SPxLPBase< Real >::maxRowObj(), MSG_DEBUG, SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theLRbound, SPxSolver::theShift, SPxSolver::theURbound, and SPxSolver::updateNonbasicValue().
Referenced by SPxSolver::changeBounds(), SPxSolver::changeLhs(), and SPxSolver::changeRange().
void changeLower |
( |
const Vector & |
newLower | ) |
|
|
virtual |
void changeLower |
( |
int |
i, |
|
|
const Real & |
newLower |
|
) |
| |
|
virtual |
virtual void changeLower |
( |
SPxColId |
p_id, |
|
|
const Real & |
p_newLower |
|
) |
| |
|
virtual |
void changeLowerStatus |
( |
int |
i, |
|
|
Real |
newLower, |
|
|
Real |
oldLower = 0.0 |
|
) |
| |
|
virtual |
Definition at line 733 of file changesoplex.cpp.
References SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), SPxBasis::dualColStatus(), soplex::EQ(), SPxSolver::forceRecompNonbasicValue(), soplex::infinity, SPxSolver::m_nonbasicValueUpToDate, SPxLPBase< Real >::maxObj(), MSG_DEBUG, soplex::NE(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxSolver::ROW, SPxSolver::theLCbound, SPxSolver::theShift, SPxSolver::theUCbound, SPxSolver::updateNonbasicValue(), and SPxLPBase< Real >::upper().
Referenced by SPxSolver::changeLower().
void changeMaxObj |
( |
const Vector & |
newObj | ) |
|
|
virtual |
void changeMaxObj |
( |
int |
i, |
|
|
const Real & |
newVal |
|
) |
| |
|
virtual |
virtual void changeMaxObj |
( |
SPxColId |
p_id, |
|
|
const Real & |
p_newVal |
|
) |
| |
|
virtual |
void changeObj |
( |
const Vector & |
newObj | ) |
|
|
virtual |
void changeObj |
( |
int |
i, |
|
|
const Real & |
newVal |
|
) |
| |
|
virtual |
virtual void changeObj |
( |
SPxColId |
p_id, |
|
|
const Real & |
p_newVal |
|
) |
| |
|
virtual |
void changeRange |
( |
const Vector & |
newLhs, |
|
|
const Vector & |
newRhs |
|
) |
| |
|
virtual |
void changeRange |
( |
int |
i, |
|
|
const Real & |
newLhs, |
|
|
const Real & |
newRhs |
|
) |
| |
|
virtual |
virtual void changeRange |
( |
SPxRowId |
p_id, |
|
|
const Real & |
p_newLhs, |
|
|
const Real & |
p_newRhs |
|
) |
| |
|
virtual |
void changeRhs |
( |
const Vector & |
newRhs | ) |
|
|
virtual |
void changeRhs |
( |
int |
i, |
|
|
const Real & |
newRhs |
|
) |
| |
|
virtual |
virtual void changeRhs |
( |
SPxRowId |
p_id, |
|
|
const Real & |
p_newRhs |
|
) |
| |
|
virtual |
void changeRhsStatus |
( |
int |
i, |
|
|
Real |
newRhs, |
|
|
Real |
oldRhs = 0.0 |
|
) |
| |
|
virtual |
Definition at line 1058 of file changesoplex.cpp.
References SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), SPxBasis::dualRowStatus(), SPxSolver::forceRecompNonbasicValue(), soplex::infinity, SPxLPBase< Real >::lhs(), SPxSolver::m_nonbasicValueUpToDate, SPxLPBase< Real >::maxRowObj(), MSG_DEBUG, SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theLRbound, SPxSolver::theShift, SPxSolver::theURbound, and SPxSolver::updateNonbasicValue().
Referenced by SPxSolver::changeRange(), and SPxSolver::changeRhs().
void changeRow |
( |
int |
i, |
|
|
const LPRow & |
newRow |
|
) |
| |
|
virtual |
void changeRowObj |
( |
const Vector & |
newObj | ) |
|
|
virtual |
void changeRowObj |
( |
int |
i, |
|
|
const Real & |
newVal |
|
) |
| |
|
virtual |
virtual void changeRowObj |
( |
SPxRowId |
p_id, |
|
|
const Real & |
p_newVal |
|
) |
| |
|
virtual |
void changeUpper |
( |
const Vector & |
newUpper | ) |
|
|
virtual |
void changeUpper |
( |
int |
i, |
|
|
const Real & |
newUpper |
|
) |
| |
|
virtual |
virtual void changeUpper |
( |
SPxColId |
p_id, |
|
|
const Real & |
p_newUpper |
|
) |
| |
|
virtual |
void changeUpperStatus |
( |
int |
i, |
|
|
Real |
newUpper, |
|
|
Real |
oldLower = 0.0 |
|
) |
| |
|
virtual |
Definition at line 839 of file changesoplex.cpp.
References SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), SPxBasis::dualColStatus(), SPxSolver::forceRecompNonbasicValue(), soplex::infinity, SPxLPBase< Real >::lower(), SPxSolver::m_nonbasicValueUpToDate, SPxLPBase< Real >::maxObj(), MSG_DEBUG, SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxSolver::ROW, SPxSolver::theLCbound, SPxSolver::theShift, SPxSolver::theUCbound, and SPxSolver::updateNonbasicValue().
Referenced by SPxSolver::changeUpper().
clear all data in solver.
Reimplemented from SPxLPBase< Real >.
Definition at line 480 of file spxsolver.cpp.
References SPxSolver::addVec, UpdateVector::clear(), IdxSet::clear(), DataArray< T >::clear(), VectorBase< R >::clear(), SPxLPBase< Real >::clear(), SPxSolver::dualRhs, SPxSolver::dualVec, SPxSolver::forceRecompNonbasicValue(), SPxSolver::infeasibilities, SPxSolver::infeasibilitiesCo, SPxSolver::isInfeasible, SPxSolver::isInfeasibleCo, SPxBasis::NO_PROBLEM, SPxSolver::primRhs, SPxSolver::primVec, SPxBasis::reDim(), SPxSolver::setBasisStatus(), SPxSolver::theCoTest, SPxSolver::theLCbound, SPxBasis::theLP, SPxSolver::theLRbound, SPxSolver::theTest, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::unInit(), and SPxSolver::unitVecs.
Referenced by SPxSolver::loadLP(), and SPxSolver::read().
The following methods serve for initializing the bounds for dual or primal Simplex algorithm of entering or leaving type.
Seting up the basis for dual simplex requires to install upper and lower feasibility bounds for dual variables (|Lbound| and |Ubound|). Here is a list of how these must be set for inequalities of type :
The case , occurs for unbounded primal variables. Such must be treated differently from the general case.
Given possible upper and lower bounds to a dual variable with |Status stat|, this function clears the bounds according to |stat| by setting them to or , respectively.
Definition at line 76 of file spxbounds.cpp.
References SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, soplex::infinity, SPxBasis::Desc::P_ON_LOWER, and SPxBasis::Desc::P_ON_UPPER.
Referenced by SPxSolver::addedRows(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), and SPxSolver::unShift().
virtual void clearRowObjs |
( |
| ) |
|
|
virtual |
void clearUpdateVecs |
( |
void |
| ) |
|
|
protectedvirtual |
codimension.
Definition at line 941 of file spxsolver.h.
Referenced by SPxDevexPR::addedVecs(), SPxSteepPR::addedVecs(), SPxSolver::computeFrhs1(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxWeightST::generate(), SPxPricer::getDualNorms(), SPxPricer::getNdualNorms(), SPxSolver::hyperPricing(), SPxDevexPR::init(), SPxSolver::init(), SPxDevexPR::isConsistent(), SPxSteepPR::isConsistent(), SPxSolver::isConsistent(), SPxParMultPR::load(), SPxSteepPR::load(), SPxSolver::maxInfeas(), SPxSolver::noViols(), SPxSolver::qualRedCostViolation(), SPxSolver::reDim(), SPxSteepPR::removedVec(), SPxSteepPR::removedVecs(), SPxParMultPR::selectEnter(), SPxDantzigPR::selectEnterDenseCoDim(), SPxSteepPR::selectEnterDenseCoDim(), SPxDevexPR::setRep(), SPxHybridPR::setType(), SPxSteepPR::setType(), SPxSteepPR::setupPrefs(), SPxSteepPR::setupWeights(), SPxSolver::shiftPvec(), SPxSolver::solve(), SPxSolver::testBounds(), and SPxSolver::testVecs().
SPxId coId |
( |
int |
i | ) |
const |
id of i 'th covector.
The i 'th coId() is the i 'th SPxColId for a rowwise and the i 'th SPxRowId for a columnwise basis represenation. Hence, 0 <= i < dim().
Definition at line 978 of file spxsolver.h.
References SPxLPBase< Real >::cId(), SPxSolver::isId(), and SPxLPBase< Real >::rId().
Referenced by SPxDevexPR::buildBestPriceVectorEnterDim(), SPxSteepPR::buildBestPriceVectorEnterDim(), SPxWeightST::generate(), SPxBoundFlippingRT::getData(), SPxSolver::id(), SPxFastRT::maxDelta(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minSelect(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), SPxParMultPR::selectEnter(), SPxDantzigPR::selectEnterDenseDim(), SPxDevexPR::selectEnterDenseDim(), SPxSteepPR::selectEnterDenseDim(), SPxDevexPR::selectEnterHyperDim(), SPxSteepPR::selectEnterHyperDim(), SPxDantzigPR::selectEnterSparseDim(), SPxDevexPR::selectEnterSparseDim(), SPxSteepPR::selectEnterSparseDim(), and SPxSolver::shiftPvec().
return const lp's cols if available.
Definition at line 1974 of file spxsolver.h.
compute coTest vector.
Definition at line 228 of file enter.cpp.
References DIdxSet::addIdx(), IdxSet::clear(), SPxBasis::Desc::coStatus(), SPxSolver::coTest(), DENSEROUNDS, SPxBasis::desc(), SPxSolver::dim(), SPxSolver::hyperPricingEnter, SPxSolver::infeasibilities, SPxSolver::isBasic(), SPxSolver::isInfeasible, SPxSolver::leavetol(), SPxSolver::m_pricingViol, SPxSolver::m_pricingViolUpToDate, IdxSet::max(), MSG_INFO2, SPxPricer::NOT_VIOLATED, SPxOut::precision(), SPxSolver::remainingRoundsEnter, IdxSet::size(), SPxSolver::sparsePricingEnter, SPxSolver::sparsePricingFactor, SPxSolver::spxout, SPxSolver::theCoTest, and SPxPricer::VIOLATED.
Referenced by SPxSolver::addedRows(), SPxSolver::enter(), SPxSolver::factorize(), SPxSolver::init(), SPxSolver::reinitializeVecs(), SPxSolver::setPricing(), and SPxSolver::solve().
void computeDualfarkas4Col |
( |
Real |
direction | ) |
|
|
protected |
Definition at line 633 of file leave.cpp.
References DSVectorBase< R >::add(), SVectorBase< R >::clear(), SPxSolver::coPvec(), UpdateVector::delta(), SPxSolver::delta(), SPxSolver::dualFarkas, DSVectorBase< R >::setMax(), soplex::sign(), SSVectorBase< R >::size(), ClassArray< Nonzero< Real > >::size(), and SPxSolver::value().
Referenced by SPxSolver::leave().
void computeDualfarkas4Row |
( |
Real |
direction, |
|
|
SPxId |
enterId |
|
) |
| |
|
protected |
Definition at line 1072 of file enter.cpp.
References DSVectorBase< R >::add(), SPxBasis::baseId(), SVectorBase< R >::clear(), UpdateVector::delta(), SPxSolver::delta(), SPxSolver::dualFarkas, SPxSolver::fVec(), SPxId::isSPxRowId(), SPxLPBase< Real >::number(), DSVectorBase< R >::setMax(), soplex::sign(), SSVectorBase< R >::size(), ClassArray< Nonzero< Real > >::size(), and SPxSolver::value().
Referenced by SPxSolver::enter().
void computeEnterCoPrhs |
( |
| ) |
|
|
protectedvirtual |
void computeEnterCoPrhs4Col |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
Definition at line 367 of file spxvecs.cpp.
References SPxBasis::baseId(), SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxSolver::ROW, and SPxLPBase< Real >::upper().
Referenced by SPxSolver::addedRows(), and SPxSolver::computeEnterCoPrhs().
void computeEnterCoPrhs4Row |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
Computing the right hand side vector for |theCoPvec| depends on the type of the simplex algorithm. In entering algorithms, the values are taken from the inequality's right handside or the column's objective value.
In contrast to this leaving algorithms take the values from vectors |theURbound| and so on.
We reflect this difference by providing two pairs of methods |computeEnterCoPrhs(n, stat)| and |computeLeaveCoPrhs(n, stat)|. The first pair operates for entering algorithms, while the second one is intended for leaving algorithms. The return value of these methods is the right hand side value for the -th row or column id, respectively, if it had the passed |Status| for both.
Both methods are again split up into two methods named |...4Row(i,n)| and |...4Col(i,n)|, respectively. They do their job for the |i|-th basis variable, being the |n|-th row or column.
Definition at line 336 of file spxvecs.cpp.
References SPxBasis::baseId(), SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::lhs(), SPxLPBase< Real >::maxRowObj(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), and SPxSolver::ROW.
Referenced by SPxSolver::computeEnterCoPrhs().
compute feasibility vector from scratch.
Initialize Vectors
Computing the right hand side vector for the feasibility vector depends on the chosen representation and type of the basis.
In columnwise case, |theFvec| = , where are either upper or lower bounds for the nonbasic variables (depending on the variables |Status|). If these values remain unchanged throughout the simplex algorithm, they may be taken directly from LP. However, in the entering type algorith they are changed and, hence, retreived from the column or row upper or lower bound vectors.
In rowwise case, |theFvec| = . However, this applies only to leaving type algorithm, where no bounds on dual variables are altered. In entering type algorithm they are changed and, hence, retreived from the column or row upper or lower bound vectors.
- Todo:
- put this into a separate method
Definition at line 42 of file spxvecs.cpp.
References VectorBase< R >::clear(), SPxSolver::COLUMN, SPxSolver::computeFrhs1(), SPxSolver::computeFrhs2(), SPxSolver::computeFrhsXtra(), SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::desc(), SPxSolver::ENTER, soplex::infinity, SPxSolver::isBasic(), SPxSolver::LEAVE, SPxLPBase< Real >::lhs(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::maxRowObj(), MSG_ERROR, VectorBase< R >::multAdd(), SPxLPBase< Real >::nRows(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theCoLbound, SPxSolver::theCoUbound, SPxSolver::theFrhs, SPxSolver::theLbound, SPxSolver::theUbound, SPxSolver::type(), and SPxSolver::vector().
Referenced by SPxSolver::factorize(), SPxSolver::init(), SPxSolver::leave(), SPxSolver::reinitializeVecs(), and SPxSolver::terminate().
void computeFrhs1 |
( |
const Vector & |
ufb, |
|
|
const Vector & |
lfb |
|
) |
| |
|
protectedvirtual |
This methods subtracts or from |theFrhs| as specified by the |Status| of all nonbasic variables. The values of or are taken from the passed arrays.
- Parameters
-
ufb | upper feasibility bound for variables |
lfb | lower feasibility bound for variables |
Definition at line 198 of file spxvecs.cpp.
References SPxSolver::coDim(), SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), soplex::infinity, SPxSolver::isBasic(), MSG_ERROR, VectorBase< R >::multAdd(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxBasis::Desc::status(), SPxSolver::theFrhs, and SPxSolver::vector().
Referenced by SPxSolver::computeFrhs().
This methods subtracts or from |theFrhs| as specified by the |Status| of all nonbasic variables. The values of or are taken from the passed arrays.
- Parameters
-
coufb | upper feasibility bound for covariables |
colfb | lower feasibility bound for covariables |
Definition at line 254 of file spxvecs.cpp.
References SPxBasis::Desc::coStatus(), SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), SPxSolver::dim(), soplex::infinity, SPxSolver::isBasic(), MSG_ERROR, MSG_WARNING, SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, and SPxSolver::spxout.
Referenced by SPxSolver::computeFrhs().
Definition at line 148 of file spxvecs.cpp.
References SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::desc(), soplex::infinity, SPxSolver::isBasic(), SPxSolver::LEAVE, SPxLPBase< Real >::lower(), MSG_ERROR, VectorBase< R >::multAdd(), SPxLPBase< Real >::nCols(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxSolver::theFrhs, SPxSolver::type(), SPxLPBase< Real >::upper(), and SPxSolver::vector().
Referenced by SPxSolver::computeFrhs().
compute basis feasibility test vector.
Definition at line 38 of file leave.cpp.
References DIdxSet::addIdx(), IdxSet::clear(), DENSEROUNDS, SPxSolver::dim(), SPxSolver::entertol(), SPxSolver::hyperPricingLeave, SPxSolver::infeasibilities, SPxSolver::isInfeasible, SPxSolver::LEAVE, SPxSolver::m_pricingViol, SPxSolver::m_pricingViolCo, SPxSolver::m_pricingViolCoUpToDate, SPxSolver::m_pricingViolUpToDate, MSG_INFO2, SPxPricer::NOT_VIOLATED, SPxOut::precision(), SPxSolver::remainingRoundsLeave, SPxSolver::sparsePricingFactor, SPxSolver::sparsePricingLeave, SPxSolver::spxout, SPxSolver::theCoTest, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theUBbound, SPxSolver::type(), and SPxPricer::VIOLATED.
Referenced by SPxSolver::addedRows(), SPxSolver::factorize(), SPxSolver::init(), SPxSolver::leave(), SPxSolver::reinitializeVecs(), and SPxSolver::solve().
void computeLeaveCoPrhs |
( |
| ) |
|
|
protectedvirtual |
void computeLeaveCoPrhs4Col |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
Definition at line 448 of file spxvecs.cpp.
References SPxBasis::baseId(), SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::theLCbound, and SPxSolver::theUCbound.
Referenced by SPxSolver::addedRows(), and SPxSolver::computeLeaveCoPrhs().
void computeLeaveCoPrhs4Row |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
Definition at line 419 of file spxvecs.cpp.
References SPxBasis::baseId(), SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::maxRowObj(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::theLRbound, and SPxSolver::theURbound.
Referenced by SPxSolver::computeLeaveCoPrhs().
void computePrimalray4Col |
( |
Real |
direction, |
|
|
SPxId |
enterId |
|
) |
| |
|
protected |
Compute the primal ray or the farkas proof in case of unboundedness or infeasibility.
Definition at line 1053 of file enter.cpp.
References DSVectorBase< R >::add(), SPxBasis::baseId(), SVectorBase< R >::clear(), UpdateVector::delta(), SPxSolver::delta(), SPxSolver::fVec(), SPxId::isSPxColId(), SPxLPBase< Real >::number(), SPxSolver::primalRay, DSVectorBase< R >::setMax(), soplex::sign(), SSVectorBase< R >::size(), ClassArray< Nonzero< Real > >::size(), and SPxSolver::value().
Referenced by SPxSolver::enter().
void computePrimalray4Row |
( |
Real |
direction | ) |
|
|
protected |
Definition at line 622 of file leave.cpp.
References DSVectorBase< R >::add(), SVectorBase< R >::clear(), SPxSolver::coPvec(), UpdateVector::delta(), SPxSolver::delta(), SPxSolver::primalRay, DSVectorBase< R >::setMax(), soplex::sign(), SSVectorBase< R >::size(), ClassArray< Nonzero< Real > >::size(), and SPxSolver::value().
Referenced by SPxSolver::leave().
Real computePvec |
( |
int |
i | ) |
|
compute entire pVec().
When computing the copricing vector, we expect the pricing vector to be setup correctly. Then computing the copricing vector is nothing but computing all scalar products of the pricing vector with the vectors of the LPs constraint matrix.
Definition at line 498 of file spxvecs.cpp.
References SPxSolver::coDim(), SPxSolver::thePvec, and SPxSolver::vector().
Referenced by SPxSolver::addedRows(), SPxSolver::enter(), SPxSolver::factorize(), SPxSolver::getEnterVals(), SPxSolver::init(), SPxSolver::qualRedCostViolation(), SPxSolver::reinitializeVecs(), SPxSolver::setPricing(), and SPxSolver::terminate().
Real computeTest |
( |
int |
i | ) |
|
compute test vector in ENTERing Simplex.
Definition at line 102 of file enter.cpp.
References DIdxSet::addIdx(), IdxSet::clear(), SPxSolver::coDim(), DENSEROUNDS, SPxBasis::desc(), SPxSolver::hyperPricingEnter, SPxSolver::infeasibilitiesCo, SPxSolver::isBasic(), SPxSolver::isInfeasibleCo, SPxSolver::leavetol(), SPxSolver::m_pricingViolCo, SPxSolver::m_pricingViolCoUpToDate, IdxSet::max(), MSG_INFO2, SPxPricer::NOT_VIOLATED, SPxOut::precision(), SPxSolver::remainingRoundsEnterCo, IdxSet::size(), SPxSolver::sparsePricingEnterCo, SPxSolver::sparsePricingFactor, SPxSolver::spxout, SPxBasis::Desc::status(), SPxSolver::test(), SPxSolver::theTest, and SPxPricer::VIOLATED.
Referenced by SPxSolver::addedRows(), SPxSolver::enter(), SPxSolver::factorize(), SPxSolver::getEnterVals(), SPxSolver::init(), SPxSolver::qualRedCostViolation(), SPxSolver::reinitializeVecs(), SPxSolver::setPricing(), SPxSolver::solve(), and SPxSolver::terminate().
const Vector& coPrhs |
( |
| ) |
const |
Right-hand side vector for coPvec.
The vector coPvec is computed by solving a linear system with the basis matrix and coPrhs as the right-hand side vector. For column basis representation, coPrhs is build up of the objective vector elements of all basic variables. For a row basis, it consists of the thight bounds of all basic constraints.
Definition at line 1272 of file spxsolver.h.
Referenced by SPxSolver::factorize(), and SPxSolver::value().
copricing vector.
The copricing vector coPvec along with the pricing vector pVec are used for pricing in the ENTERing Simplex algorithm, i.e. one variable is selected, that violates its bounds. In contrast to this, the LEAVEing Simplex algorithm keeps both vectors within their bounds.
Definition at line 1259 of file spxsolver.h.
Referenced by SPxSolver::computeDualfarkas4Col(), SPxSolver::computePrimalray4Row(), SPxDevexPR::entered4(), SPxSteepPR::entered4(), SPxSolver::factorize(), SPxBoundFlippingRT::flipAndUpdate(), SPxBoundFlippingRT::getData(), SPxSolver::getDual(), SPxSolver::getPrimal(), SPxDevexPR::left4(), SPxSteepPR::left4(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minSelect(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), SPxFastRT::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxSteepPR::selectLeave(), SPxSolver::setDual(), SPxSolver::setPrimal(), SPxFastRT::shortEnter(), and SPxSolver::value().
const Vector& coTest |
( |
| ) |
const |
violations of coPvec.
In entering Simplex pricing selects checks vectors coPvec() and pVec() for violation of its bounds. coTest() contains the violations for coPvec() which are indicated by a negative value. That is, if coTest()[i] < 0, the i 'th element of coPvec() is violated by -coTest()[i].
Definition at line 1326 of file spxsolver.h.
Referenced by SPxDevexPR::buildBestPriceVectorEnterDim(), SPxSteepPR::buildBestPriceVectorEnterDim(), SPxSolver::computeCoTest(), SPxSolver::getEnterVals(), SPxSolver::qualRedCostViolation(), SPxParMultPR::selectEnter(), SPxWeightPR::selectEnter(), SPxDantzigPR::selectEnterDenseDim(), SPxDevexPR::selectEnterDenseDim(), SPxSteepPR::selectEnterDenseDim(), SPxDevexPR::selectEnterHyperDim(), SPxSteepPR::selectEnterHyperDim(), SPxDantzigPR::selectEnterSparseDim(), SPxDevexPR::selectEnterSparseDim(), SPxSteepPR::selectEnterSparseDim(), and SPxSolver::updateCoTest().
test coVector i with status stat .
Definition at line 192 of file enter.cpp.
References SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxSolver::ENTER, SPxSolver::isBasic(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxRowObj(), SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxSolver::ROW, SPxSolver::theCoPvec, SPxSolver::type(), and SPxLPBase< Real >::upper().
const SVector& coVector |
( |
int |
i | ) |
const |
i 'th covector of LP.
- Returns
- a reference to the
i 'th, 0 <= i < dim(), covector of the loaded LP (with respect to the chosen representation).
Definition at line 1062 of file spxsolver.h.
Referenced by SPxWeightST::generate().
coVector associated to p_id .
- Returns
- a reference to the covector of the loaded LP corresponding to
p_id (with respect to the chosen representation). If p_id is a coid, a covector of the constraint matrix is returned, otherwise the corresponding unit vector is returned.
Definition at line 1089 of file spxsolver.h.
Real cumulativeTime |
( |
| ) |
const |
dimension of basis matrix.
Definition at line 936 of file spxsolver.h.
Referenced by SPxDevexPR::addedCoVecs(), SPxSteepPR::addedCoVecs(), SPxSolver::changeElement(), SPxSolver::computeCoTest(), SPxSolver::computeEnterCoPrhs(), SPxSolver::computeFrhs2(), SPxSolver::computeFtest(), SPxSolver::computeLeaveCoPrhs(), SPxBasis::dump(), SPxSolver::enter(), SPxBoundFlippingRT::flipAndUpdate(), SPxWeightST::generate(), SPxPricer::getDualNorms(), SPxPricer::getNdualNorms(), SPxSolver::getPrimal(), SPxSolver::getRedCost(), SPxSolver::getSlacks(), SPxSolver::hyperPricing(), SPxDevexPR::init(), SPxSolver::init(), SPxSolver::isBasisValid(), SPxDevexPR::isConsistent(), SPxSteepPR::isConsistent(), SPxBasis::isConsistent(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxParMultPR::load(), SPxSteepPR::load(), SPxBasis::loadDesc(), SPxBasis::loadMatrixVecs(), SPxSolver::maxInfeas(), SPxBasis::multBaseWith(), SPxBasis::multWithBase(), SPxSolver::noViols(), SPxSolver::qualRedCostViolation(), SPxBasis::reDim(), SPxSolver::reDim(), SPxBasis::removedCol(), SPxSteepPR::removedCoVec(), SPxSteepPR::removedCoVecs(), SPxBasis::removedRow(), SPxParMultPR::selectEnter(), SPxDantzigPR::selectEnterDenseDim(), SPxSteepPR::selectEnterDenseDim(), SPxDantzigPR::selectLeave(), SPxParMultPR::selectLeave(), SPxWeightPR::selectLeave(), SPxSteepPR::selectLeaveX(), SPxSolver::setEnterBounds(), SPxSolver::setLeaveBounds(), SPxSolver::setPrimal(), SPxSolver::setRedCost(), SPxDevexPR::setRep(), SPxSteepPR::setRep(), SPxSolver::setSlacks(), SPxHybridPR::setType(), SPxWeightPR::setType(), SPxSteepPR::setType(), SPxSteepPR::setupPrefs(), SPxSteepPR::setupWeights(), SPxSolver::shiftFvec(), SPxSolver::shiftPvec(), SPxSolver::solve(), SPxSolver::terminate(), SPxSolver::testBounds(), SPxSolver::testVecs(), and SPxSolver::unShift().
void doRemoveCol |
( |
int |
i | ) |
|
|
protectedvirtual |
Reimplemented from SPxLPBase< Real >.
Definition at line 546 of file changesoplex.cpp.
References SPxSolver::COLUMN, SPxLPBase< Real >::doRemoveCol(), SPxBasis::DUAL, SPxSolver::ENTER, SPxSolver::forceRecompNonbasicValue(), SPxSolver::isInitialized(), SPxLPBase< Real >::nCols(), SPxBasis::NO_PROBLEM, SPxBasis::OPTIMAL, SPxBasis::PRIMAL, SPxSolver::reDim(), SPxBasis::REGULAR, SPxBasis::removedCol(), SPxPricer::removedVec(), SPxSolver::rep(), SPxSolver::setBasisStatus(), SPxBasis::status(), SPxSolver::theLCbound, SPxSolver::thepricer, SPxSolver::theTest, SPxSolver::theUCbound, SPxSolver::type(), SPxBasis::UNBOUNDED, and SPxSolver::unInit().
void doRemoveCols |
( |
int |
perm[] | ) |
|
|
protectedvirtual |
Reimplemented from SPxLPBase< Real >.
Definition at line 595 of file changesoplex.cpp.
References SPxSolver::COLUMN, SPxLPBase< Real >::doRemoveCols(), SPxBasis::DUAL, SPxSolver::ENTER, SPxSolver::forceRecompNonbasicValue(), SPxSolver::isInitialized(), SPxLPBase< Real >::nCols(), SPxBasis::NO_PROBLEM, SPxBasis::OPTIMAL, SPxBasis::PRIMAL, SPxSolver::reDim(), SPxBasis::REGULAR, SPxBasis::removedCols(), SPxPricer::removedVecs(), SPxSolver::rep(), SPxSolver::setBasisStatus(), SPxBasis::status(), SPxSolver::theLCbound, SPxSolver::thepricer, SPxSolver::theTest, SPxSolver::theUCbound, SPxSolver::type(), SPxBasis::UNBOUNDED, and SPxSolver::unInit().
void doRemoveRow |
( |
int |
i | ) |
|
|
protectedvirtual |
Reimplemented from SPxLPBase< Real >.
Definition at line 433 of file changesoplex.cpp.
References SPxLPBase< Real >::doRemoveRow(), SPxBasis::DUAL, SPxSolver::ENTER, SPxBasis::INFEASIBLE, SPxSolver::isInitialized(), SPxBasis::NO_PROBLEM, SPxLPBase< Real >::nRows(), SPxBasis::OPTIMAL, SPxBasis::PRIMAL, SPxSolver::reDim(), SPxBasis::REGULAR, SPxBasis::removedRow(), SPxPricer::removedVec(), SPxSolver::rep(), SPxSolver::ROW, SPxSolver::setBasisStatus(), SPxBasis::status(), SPxSolver::theLRbound, SPxSolver::thepricer, SPxSolver::theTest, SPxSolver::theURbound, SPxSolver::type(), and SPxSolver::unInit().
void doRemoveRows |
( |
int |
perm[] | ) |
|
|
protectedvirtual |
Reimplemented from SPxLPBase< Real >.
Definition at line 483 of file changesoplex.cpp.
References SPxLPBase< Real >::doRemoveRows(), SPxBasis::DUAL, SPxSolver::ENTER, SPxBasis::INFEASIBLE, SPxSolver::isInitialized(), SPxBasis::NO_PROBLEM, SPxLPBase< Real >::nRows(), SPxBasis::OPTIMAL, SPxBasis::PRIMAL, SPxSolver::reDim(), SPxBasis::REGULAR, SPxBasis::removedRows(), SPxPricer::removedVecs(), SPxSolver::rep(), SPxSolver::ROW, SPxSolver::setBasisStatus(), SPxBasis::status(), SPxSolver::theLRbound, SPxSolver::thepricer, SPxSolver::theTest, SPxSolver::theURbound, SPxSolver::type(), and SPxSolver::unInit().
return number of iterations done with primal algorithm
Definition at line 1947 of file spxsolver.h.
let id enter the basis and manage leaving of another one. - Returns
false if LP is unbounded/infeasible.
- Todo:
- if shift() is not zero, we must not conclude primal unboundedness
Definition at line 1091 of file enter.cpp.
References SPxBasis::baseId(), SPxBasis::baseVec(), SPxSolver::boundflips, SPxBasis::change(), SPxSolver::COLUMN, SPxSolver::computeCoTest(), SPxSolver::computeDualfarkas4Row(), SPxSolver::computePrimalray4Col(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxBasis::coSolve(), SPxSolver::coSolveVector2, SPxSolver::coSolveVector2rhs, SPxSolver::coSolveVector3, SPxSolver::coSolveVector3rhs, SPxBasis::Desc::D_FREE, UpdateVector::delta(), SPxBasis::desc(), SSVectorBase< R >::dim(), SPxSolver::dim(), SPxSolver::doPupdate(), SPxSolver::ENTER, SPxSolver::entertol(), SPxSolver::enterVector(), SPxSolver::epsilon(), SPxSolver::factorize(), SPxSolver::FULL, SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxBasis::INFEASIBLE, soplex::infinity, SPxSolver::initialized, SPxSolver::instableEnter, SPxSolver::instableEnterId, SPxSolver::instableEnterVal, UpdateVector::isConsistent(), SSVectorBase< R >::isConsistent(), SSVectorBase< R >::isSetup(), SPxId::isSPxColId(), SPxId::isValid(), SPxBasis::lastUpdate(), VectorBase< R >::length(), SPxSolver::m_maxCycle, SPxSolver::m_numCycle, MSG_DEBUG, MSG_INFO2, MSG_INFO3, VectorBase< R >::multAdd(), SPxBasis::multBaseWith(), soplex::NE(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxSolver::perturbMaxEnter(), SPxSolver::perturbMinEnter(), SPxSolver::pricing(), SPxSolver::rejectEnter(), SPxSolver::rep(), SPxSolver::ROW, SPxRatioTester::selectLeave(), SPxSolver::setBasisStatus(), SPxSolver::setupPupdate(), SSVectorBase< R >::size(), SPxBasis::solve4update(), soplex::spxAbs(), SPxSolver::spxout, SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::thecovectors, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::thePvec, SPxSolver::theratiotester, SPxSolver::theUBbound, SPxSolver::totalboundflips, SPxSolver::type(), SPxBasis::UNBOUNDED, SPxSolver::ungetEnterVal(), SPxSolver::unitVecs, UpdateVector::update(), SPxSolver::updateCoTest(), SPxSolver::updateNonbasicValue(), SPxSolver::updateTest(), and UpdateVector::value().
Referenced by SPxSolver::solve().
feasibility tolerance maintained by ratio test during ENTER algorithm.
Definition at line 675 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::computeFtest(), SPxSolver::enter(), SPxSolver::factorize(), SPxSolver::init(), SPxSolver::leave(), SPxSolver::perturbMaxEnter(), SPxSolver::perturbMinEnter(), SPxSolver::shiftFvec(), SPxSolver::solve(), SPxSolver::terminate(), SPxSolver::testBounds(), SPxSolver::testVecs(), SPxSolver::unShift(), and SPxSolver::updateFtest().
values are considered to be 0.
if you want another value for epsilon, use Param::setEpsilon().
Definition at line 670 of file spxsolver.h.
Referenced by SPxSolver::enter(), SPxDevexPR::entered4(), SPxSteepPR::entered4(), SPxSteepPR::isConsistent(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::perturbMaxEnter(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinEnter(), SPxSolver::perturbMinLeave(), SPxSolver::qualBoundViolation(), SPxSolver::qualConstraintViolation(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), SPxDefaultRT::selectLeave(), SPxHarrisRT::selectLeave(), SPxFastRT::selectLeave(), SPxWeightST::setPrimalStatus(), SPxSteepPR::setType(), SPxSteepPR::setupWeights(), SPxVectorST::setupWeights(), SPxWeightST::setupWeights(), SPxSolver::shiftFvec(), SPxSolver::shiftPvec(), SoPlexLegacy::solve(), SPxSolver::solve(), SPxSolver::terminate(), SPxSolver::updateFtest(), and SPxSolver::writeState().
Factorize basis matrix.
- Exceptions
-
Reimplemented from SPxBasis.
Definition at line 525 of file spxsolver.cpp.
References SPxSolver::computeCoTest(), SPxSolver::computeFrhs(), SPxSolver::computeFtest(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxSolver::coPrhs(), SPxSolver::coPvec(), SPxBasis::coSolve(), DEFAULT_BND_VIOL, SPxSolver::ENTER, SPxSolver::entertol(), SPxBasis::factorize(), SPxSolver::feastol(), SPxSolver::fRhs(), SPxSolver::FULL, SPxSolver::fVec(), SPxSolver::init(), SPxSolver::initialized, SPxBasis::iteration(), SPxSolver::LEAVE, VectorBase< R >::length(), SPxSolver::m_pricingViol, SPxSolver::m_pricingViolCo, SPxSolver::m_status, MSG_DEBUG, MSG_ERROR, MSG_INFO3, SPxBasis::multBaseWith(), SPxBasis::multWithBase(), SPxSolver::opttol(), SPxSolver::pricing(), SPxSolver::pVec(), SPxBasis::REGULAR, SPxSolver::rep(), SPxSolver::ROW, SPxBasis::SINGULAR, SPxSolver::SINGULAR, SPxBasis::solve(), SPxSolver::spxout, SPxBasis::status(), SPxSolver::testVecs(), SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theFrhs, SPxSolver::theFvec, and SPxSolver::type().
Referenced by SoPlex::_solveRealStable(), SPxSolver::enter(), SPxSolver::leave(), SPxSolver::qualRedCostViolation(), SPxSolver::solve(), and SPxSolver::terminate().
void forceRecompNonbasicValue |
( |
| ) |
|
Definition at line 545 of file spxsolver.h.
Referenced by SoPlex::_storeSolutionReal(), SPxSolver::changeCol(), SPxSolver::changeElement(), SPxSolver::changeLhs(), SPxSolver::changeLhsStatus(), SPxSolver::changeLower(), SPxSolver::changeLowerStatus(), SPxSolver::changeMaxObj(), SPxSolver::changeObj(), SPxSolver::changeRange(), SPxSolver::changeRhs(), SPxSolver::changeRhsStatus(), SPxSolver::changeRow(), SPxSolver::changeRowObj(), SPxSolver::changeUpper(), SPxSolver::changeUpperStatus(), SPxSolver::clear(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::initRep(), SPxSolver::leave(), SPxSolver::reLoad(), SPxSolver::setBasis(), SPxSolver::setType(), and SPxSolver::solve().
Violations of fVec.
For the leaving Simplex algorithm, pricing involves selecting a variable from fVec that violates its bounds that is to leave the basis. When a SPxPricer is called to select such a leaving variable, fTest() contains the vector of violations: For fTest()[i] < 0, the i 'th basic variable violates one of its bounds by the given value. Otherwise no bound is violated.
Definition at line 1246 of file spxsolver.h.
Referenced by SPxDevexPR::buildBestPriceVectorLeave(), SPxSteepPR::buildBestPriceVectorLeave(), SPxSolver::qualRedCostViolation(), SPxBoundFlippingRT::selectEnter(), SPxDantzigPR::selectLeave(), SPxParMultPR::selectLeave(), SPxWeightPR::selectLeave(), SPxDevexPR::selectLeaveHyper(), SPxSteepPR::selectLeaveHyper(), SPxDantzigPR::selectLeaveSparse(), SPxDevexPR::selectLeaveSparse(), SPxSteepPR::selectLeaveSparse(), SPxDevexPR::selectLeaveX(), SPxSteepPR::selectLeaveX(), SPxSolver::solve(), and SPxSolver::updateFtest().
feasibility vector.
This method return the feasibility vector. If it satisfies its bound, the basis is called feasible (independently of the chosen representation). The feasibility vector has dimension dim().
For the entering Simplex, fVec is kept within its bounds. In contrast to this, the pricing of the leaving Simplex selects an element of fVec, that violates its bounds.
Definition at line 1184 of file spxsolver.h.
Referenced by SPxSolver::computeDualfarkas4Row(), SPxSolver::computePrimalray4Col(), SPxDevexPR::entered4(), SPxSteepPR::entered4(), SPxSolver::factorize(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::getDual(), SPxSolver::getPrimal(), SPxSolver::getRedCost(), SPxSolver::leave(), SPxDevexPR::left4(), SPxSteepPR::left4(), SPxFastRT::maxDelta(), SPxFastRT::maxReLeave(), SPxFastRT::maxSelect(), SPxFastRT::maxShortLeave(), SPxFastRT::minDelta(), SPxFastRT::minReLeave(), SPxFastRT::minSelect(), SPxFastRT::minShortLeave(), SPxSolver::perturbMaxEnter(), SPxSolver::perturbMinEnter(), SPxSteepPR::selectEnter(), SPxDefaultRT::selectLeave(), SPxHarrisRT::selectLeave(), SPxFastRT::selectLeave(), SPxBoundFlippingRT::selectLeave(), SPxSolver::setDual(), SPxSolver::setPrimal(), SPxSolver::setRedCost(), SPxSolver::solve(), and SPxSolver::value().
get current basis, and return solver status.
Definition at line 1722 of file spxsolver.cpp.
References SPxSolver::basisStatusToVarStatus(), SPxBasis::Desc::colStatus(), SPxBasis::desc(), SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), SPxBasis::Desc::rowStatus(), and SPxSolver::status().
Referenced by SoPlex::_evaluateSolutionReal(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_solveRational(), SoPlex::_solveRealForRational(), SoPlexLegacy::getBasis(), SoPlex::getBasis(), and SoPlexLegacy::unsimplify().
get current solution vector for dual variables.
This method returns the Status of the basis. If it is REGULAR or better, the vector of dual variables of the current basis will be copied to the argument vector . Hence, vector must be of dimension nRows().
- Warning
- Even though mathematically, each range constraint would account for two dual variables (one for each inequaility), only nRows() dual variables are setup via the following construction: Given a range constraint, there are three possible situations:
- None of its inequalities is tight: The dual variables for both are 0. However, when shifting (see below) occurs, it may be set to a value other than 0, which models a perturbed objective vector.
- Both of its inequalities are tight: In this case the range constraint models an equality and we adopt the standard definition.
- One of its inequalities is tight while the other is not: In this case only the dual variable for the tight constraint is given with the standard definition, while the other constraint is implicitely set to 0.
- Exceptions
-
Definition at line 1268 of file spxsolve.cpp.
References SPxBasis::baseId(), SPxSolver::coPvec(), SPxSolver::fVec(), SPxSolver::isInitialized(), SPxLPBase< Real >::maxRowObj(), SPxLPBase< Real >::nCols(), SPxSolver::NO_PROBLEM, SPxLPBase< Real >::number(), SPxSolver::rep(), SPxSolver::ROW, SPxLPBase< Real >::spxSense(), and SPxSolver::status().
Referenced by SoPlex::_resolveWithoutPreprocessing(), SoPlex::_solveRealForRational(), SoPlex::_storeSolutionReal(), SoPlexLegacy::getDual(), SPxSolver::getResult(), and SoPlexLegacy::unsimplify().
bool getDualNorms |
( |
int & |
nnormsRow, |
|
|
int & |
nnormsCol, |
|
|
Real * |
norms |
|
) |
| const |
Definition at line 412 of file enter.cpp.
References SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxSolver::computePvec(), SPxSolver::computeTest(), SPxSolver::coTest(), SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), soplex::EQ(), SPxSolver::getEnterVals2(), soplex::infinity, SPxSolver::isBasic(), SPxId::isSPxColId(), SPxId::isSPxRowId(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::maxRowObj(), MSG_DEBUG, MSG_ERROR, SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theTest, SPxSolver::theUCbound, SPxSolver::theURbound, and SPxLPBase< Real >::upper().
Referenced by SPxSolver::enter(), and SPxSolver::updateCoTest().
void getEnterVals2 |
( |
int |
leaveIdx, |
|
|
Real |
enterMax, |
|
|
Real & |
leaveBound, |
|
|
Real & |
objChange |
|
) |
| |
|
protectedvirtual |
Definition at line 710 of file enter.cpp.
References SPxBasis::baseId(), SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, UpdateVector::delta(), SPxBasis::desc(), SPxBasis::dualColStatus(), SPxBasis::dualRowStatus(), SPxId::isSPxColId(), SPxId::isSPxRowId(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::maxRowObj(), MSG_DEBUG, MSG_ERROR, SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theCoPvec, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theUBbound, SPxSolver::theUCbound, SPxSolver::theURbound, and SPxLPBase< Real >::upper().
Referenced by SPxSolver::enter(), and SPxSolver::getEnterVals().
Definition at line 184 of file leave.cpp.
References SPxBasis::baseId(), SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::desc(), SPxBasis::dualColStatus(), SPxBasis::dualRowStatus(), soplex::infinity, SPxSolver::isBasic(), SPxId::isSPxColId(), SPxId::isSPxRowId(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxObj(), MSG_DEBUG, SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theUBbound, SPxSolver::theUCbound, SPxSolver::theURbound, and SPxLPBase< Real >::upper().
Referenced by SPxSolver::leave().
Definition at line 364 of file leave.cpp.
References SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, UpdateVector::delta(), SPxBasis::desc(), SPxBasis::dualColStatus(), SPxBasis::dualRowStatus(), soplex::infinity, SPxId::isSPxColId(), SPxId::isSPxRowId(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), MSG_DEBUG, MSG_ERROR, SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theCoPvec, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::thePvec, SPxSolver::theUCbound, SPxSolver::theURbound, and SPxLPBase< Real >::upper().
Referenced by SPxSolver::leave().
void getLhs |
( |
Vector & |
p_lhs | ) |
const |
copy lhs value vector to p_lhs .
Definition at line 1991 of file spxsolver.h.
void getLower |
( |
Vector & |
p_low | ) |
const |
copy lower bound vector to p_low .
Definition at line 1980 of file spxsolver.h.
void getNdualNorms |
( |
int & |
nnormsRow, |
|
|
int & |
nnormsCol |
|
) |
| const |
get solution vector for primal variables.
This method returns the Status of the basis. If it is REGULAR or better, the primal solution vector of the current basis will be copied to the argument vector . Hence, vector must be of dimension nCols().
- Exceptions
-
Definition at line 1219 of file spxsolve.cpp.
References SPxBasis::baseId(), SPxBasis::Desc::colStatus(), SPxSolver::coPvec(), SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), SPxSolver::dim(), SPxSolver::fVec(), SPxSolver::isInitialized(), SPxId::isSPxColId(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::nCols(), SPxSolver::NO_PROBLEM, SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxSolver::ROW, SPxSolver::status(), and SPxLPBase< Real >::upper().
Referenced by SoPlex::_resolveWithoutPreprocessing(), SoPlex::_solveRealForRational(), SoPlex::_storeSolutionReal(), SoPlexLegacy::getPrimal(), SPxSolver::getResult(), SPxSolver::qualBoundViolation(), SPxSolver::qualConstraintViolation(), SPxSolver::qualSlackViolation(), SPxSolver::solve(), and SoPlexLegacy::unsimplify().
get vector of reduced costs.
This method returns the Status of the basis. If it is REGULAR or better, the vector of reduced costs of the current basis will be copied to the argument vector . Hence, vector must be of dimension nCols().
Let d denote the vector of dual variables, as defined above, and A the LPs constraint matrix. Then the reduced cost vector r is defined as .
- Exceptions
-
Definition at line 1299 of file spxsolve.cpp.
References SPxBasis::baseId(), VectorBase< R >::clear(), SPxSolver::dim(), SPxSolver::fVec(), SPxSolver::isInitialized(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::MINIMIZE, SPxLPBase< Real >::number(), SPxSolver::pVec(), SPxSolver::rep(), SPxSolver::ROW, SPxLPBase< Real >::spxSense(), and SPxSolver::status().
Referenced by SoPlex::_resolveWithoutPreprocessing(), SoPlex::_solveRealForRational(), SoPlex::_storeSolutionReal(), SoPlexLegacy::getRedCost(), SPxSolver::getResult(), and SoPlexLegacy::unsimplify().
void getRhs |
( |
Vector & |
p_rhs | ) |
const |
copy rhs value vector to p_rhs .
Definition at line 1997 of file spxsolver.h.
get vector of slack variables.
This method returns the Status of the basis. If it is REGULAR or better, the slack variables of the current basis will be copied to the argument vector . Hence, vector must be of dimension nRows().
- Warning
- Because SPxSolver supports range constraints as its default, slack variables are defined in a nonstandard way: Let x be the current solution vector and A the constraint matrix. Then the vector of slack variables is defined as
.
- Exceptions
-
Definition at line 1378 of file spxsolve.cpp.
References SPxBasis::baseId(), SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::Desc::D_UNDEFINED, SPxBasis::desc(), SPxSolver::dim(), SPxSolver::isInitialized(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::nRows(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::pVec(), SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxBasis::Desc::rowStatus(), and SPxSolver::status().
Referenced by SoPlex::_resolveWithoutPreprocessing(), SoPlex::_solveRealForRational(), SoPlex::_storeSolutionReal(), SPxSolver::getResult(), SoPlexLegacy::getSlacks(), SPxSolver::qualSlackViolation(), and SoPlexLegacy::unsimplify().
void getUpper |
( |
Vector & |
p_up | ) |
const |
copy upper bound vector to p_up .
Definition at line 1985 of file spxsolver.h.
void hyperPricing |
( |
bool |
h | ) |
|
id of i 'th vector.
The i 'th Id is the i 'th SPxRowId for a rowwise and the i 'th SPxColId for a columnwise basis represenation. Hence, 0 <= i < coDim().
Definition at line 959 of file spxsolver.h.
References SPxLPBase< Real >::cId(), SPxSolver::coId(), and SPxLPBase< Real >::rId().
Referenced by SPxDevexPR::buildBestPriceVectorEnterCoDim(), SPxSteepPR::buildBestPriceVectorEnterCoDim(), SPxBoundFlippingRT::getData(), SPxFastRT::maxDelta(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minSelect(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), SPxParMultPR::selectEnter(), SPxDantzigPR::selectEnterDenseCoDim(), SPxDevexPR::selectEnterDenseCoDim(), SPxSteepPR::selectEnterDenseCoDim(), SPxDevexPR::selectEnterHyperCoDim(), SPxSteepPR::selectEnterHyperCoDim(), SPxDantzigPR::selectEnterSparseCoDim(), SPxDevexPR::selectEnterSparseCoDim(), and SPxSteepPR::selectEnterSparseCoDim().
intialize data structures.
If SPxSolver is not initialized, the method solve() calls init() to setup all vectors and internal data structures. Most of the other methods within this section are called by init().
Derived classes should add the initialization of additional data structures by overriding this method. Don't forget, however, to call SPxSolver::init().
Definition at line 317 of file spxsolver.cpp.
References SPxSolver::coDim(), SPxSolver::COLUMN, SPxSolver::computeCoTest(), SPxSolver::computeEnterCoPrhs(), SPxSolver::computeFrhs(), SPxSolver::computeFtest(), SPxSolver::computeLeaveCoPrhs(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxBasis::coSolve(), SPxBasis::desc(), SPxSolver::dim(), SPxBasis::DUAL, SPxSolver::ENTER, SPxSolver::entertol(), SPxBasis::factorize(), SPxBasis::factorized, SPxSolver::infeasibilities, SPxSolver::infeasibilitiesCo, SPxSolver::initialized, SPxSolver::isInfeasible, SPxSolver::isInfeasibleCo, SPxSolver::lastShift, SPxSolver::leavetol(), SPxRatioTester::load(), SPxPricer::load(), SPxBasis::load(), SPxBasis::loadDesc(), SPxSolver::m_numCycle, SPxSolver::m_status, SPxBasis::matrixIsSetup, SPxBasis::NO_PROBLEM, SPxBasis::PRIMAL, SPxSolver::reDim(), SPxSolver::rep(), DataArray< T >::reSize(), SPxSolver::ROW, SPxSolver::setBasisStatus(), SPxRatioTester::setDelta(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SPxSolver::setEnterBounds(), SPxSolver::setLeaveBounds(), DIdxSet::setMax(), SPxSolver::setPrimalBounds(), SPxSolver::shiftFvec(), SPxSolver::shiftPvec(), SPxBasis::SINGULAR, SPxSolver::SINGULAR, SPxBasis::solve(), SPxBasis::solver(), SPxBasis::status(), SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::thepricer, SPxSolver::theratiotester, SPxSolver::theShift, and SPxSolver::type().
Referenced by SPxSolver::factorize(), SPxWeightST::generate(), and SPxSolver::solve().
initialize ROW or COLUMN representation.
Definition at line 198 of file spxsolver.cpp.
References SPxSolver::addVec, LPColSetBase< Real >::colSet(), SPxSolver::COLUMN, SPxBasis::desc(), SPxSolver::dualRhs, SPxSolver::dualVec, SPxSolver::feastol(), SPxSolver::forceRecompNonbasicValue(), SPxBasis::loadDesc(), SPxBasis::NO_PROBLEM, SPxSolver::opttol(), SPxSolver::primRhs, SPxSolver::primVec, SPxSolver::reDim(), SPxSolver::ROW, LPRowSetBase< Real >::rowSet(), SPxSolver::setFeastol(), SPxSolver::setOpttol(), SPxPricer::setRep(), SPxBasis::setRep(), SPxPricer::solver(), SPxBasis::status(), SPxSolver::theCoLbound, SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theCoUbound, SPxSolver::thecovectors, SPxSolver::theCPvec, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::thepricer, SPxSolver::thePvec, SPxSolver::theRep, SPxSolver::theRPvec, SPxSolver::theUbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::thevectors, and SPxSolver::unInit().
Referenced by SPxSolver::setRep(), and SPxSolver::SPxSolver().
does stat describe a basic index ?
Definition at line 1124 of file spxsolver.h.
Referenced by SPxSolver::computeCoTest(), SPxSolver::computeFrhs(), SPxSolver::computeFrhs1(), SPxSolver::computeFrhs2(), SPxSolver::computeFrhsXtra(), SPxSolver::computeTest(), SPxSolver::coTest(), SPxBasis::dump(), SPxSolver::getEnterVals(), SPxSolver::getLeaveVals(), SPxSolver::leave(), SPxBasis::loadDesc(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minSelect(), SPxBasis::removedCol(), SPxBasis::removedCols(), SPxBasis::removedRow(), SPxBasis::removedRows(), SPxDefaultRT::selectEnter(), SPxFastRT::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxSolver::shiftPvec(), SPxSolver::test(), SPxSolver::testVecs(), SPxSolver::unShift(), SPxSolver::updateCoTest(), and SPxSolver::updateTest().
bool isBasic |
( |
const SPxId & |
p_id | ) |
const |
is the p_id 'th vector basic ?
Definition at line 1130 of file spxsolver.h.
bool isBasic |
( |
const SPxRowId & |
rid | ) |
const |
bool isBasic |
( |
const SPxColId & |
cid | ) |
const |
bool isBasic |
( |
int |
i | ) |
const |
check a given basis for validity.
Definition at line 1741 of file spxsolver.cpp.
References SPxSolver::BASIC, SPxSolver::dim(), SPxSolver::FIXED, soplex::infinity, SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), SPxSolver::ON_LOWER, SPxSolver::ON_UPPER, SPxLPBase< Real >::rhs(), DataArray< T >::size(), SPxSolver::UNDEFINED, and SPxLPBase< Real >::upper().
Referenced by SoPlexLegacy::solve().
bool isCoBasic |
( |
int |
i | ) |
const |
bool isCoId |
( |
const SPxId & |
p_id | ) |
const |
bool isColBasic |
( |
int |
i | ) |
const |
bool isConsistent |
( |
| ) |
const |
check consistency.
Miscellaneous
Definition at line 1371 of file spxsolver.cpp.
References SPxSolver::addVec, SPxSolver::coDim(), SPxSolver::COLUMN, UpdateVector::delta(), VectorBase< R >::dim(), SPxSolver::dim(), SPxSolver::dualRhs, SPxSolver::dualVec, SPxSolver::epsilon(), SSVectorBase< R >::getEpsilon(), SPxSolver::initialized, UpdateVector::isConsistent(), DVectorBase< R >::isConsistent(), SPxBasis::isConsistent(), SPxLPBase< Real >::isConsistent(), MSGinconsistent, SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), SPxSolver::primRhs, SPxSolver::primVec, SPxSolver::rep(), SPxSolver::theCoLbound, SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::theCoUbound, SPxSolver::thecovectors, SPxSolver::theCPvec, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::thePvec, SPxSolver::theRPvec, SPxSolver::theTest, SPxSolver::theUBbound, SPxSolver::theUbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::thevectors, and SPxSolver::unitVecs.
Referenced by SPxSolver::operator=(), and SPxSolver::SPxSolver().
bool isId |
( |
const SPxId & |
p_id | ) |
const |
bool isInitialized |
( |
| ) |
const |
|
protected |
has the internal data been initialized?
As long as an instance of SPxSolver is not initialized, no member contains setup data. Initialization is performed via method init(). Afterwards all data structures are kept up to date (even for all manipulation methods), until unInit() is called. However, some manipulation methods call unInit() themselfs.
Definition at line 1705 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::getDual(), SPxSolver::getDualfarkas(), SPxSolver::getPrimal(), SPxSolver::getPrimalray(), SPxSolver::getRedCost(), SPxSolver::getSlacks(), SPxSolver::reDim(), SPxSolver::setDual(), SPxSolver::setPricer(), SPxSolver::setPrimal(), SPxSolver::setRedCost(), SPxSolver::setSlacks(), SPxSolver::setTester(), SPxSolver::solve(), SPxSolver::unShift(), and SPxSolver::value().
bool isRowBasic |
( |
int |
i | ) |
const |
bool isTimeLimitReached |
( |
const bool |
forceCheck = false | ) |
|
const Vector& lbBound |
( |
| ) |
const |
lower bound for fVec.
Definition at line 1220 of file spxsolver.h.
Referenced by SPxFastRT::maxDelta(), SPxFastRT::maxReLeave(), SPxFastRT::maxSelect(), SPxFastRT::maxShortLeave(), SPxFastRT::minDelta(), SPxFastRT::minReLeave(), SPxFastRT::minSelect(), SPxFastRT::minShortLeave(), SPxSolver::perturbMaxEnter(), SPxSolver::perturbMinEnter(), SPxDefaultRT::selectLeave(), SPxHarrisRT::selectLeave(), and SPxBoundFlippingRT::selectLeave().
lower bound for fVec, writable.
This method returns the lower bound for the feasibility vector. It may only be called for the ENTERing Simplex.
For the ENTERing Simplex algorithms, the feasibility vector is maintained to fullfill its bounds. As fVec itself, also its bound depend on the chosen representation. Further, they may need to be shifted (see below).
Definition at line 1233 of file spxsolver.h.
const Vector& lcBound |
( |
| ) |
const |
Definition at line 1299 of file spxsolver.h.
Referenced by SPxBoundFlippingRT::getData(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minSelect(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), and SPxBoundFlippingRT::selectEnter().
lower bound for coPvec.
This method returns the lower bound for coPvec. It may only be called for the leaving Simplex algorithm.
For the leaving Simplex algorithms coPvec is maintained to fullfill its bounds. As coPvec itself, also its bound depend on the chosen representation. Further, they may need to be shifted (see below).
Definition at line 1313 of file spxsolver.h.
let index i leave the basis and manage entering of another one. - Returns
false if LP is unbounded/infeasible.
- Todo:
- if shift() is not zero we must not conclude unboundedness
Definition at line 644 of file leave.cpp.
References SPxBasis::baseId(), SPxBasis::baseVec(), SPxSolver::basis(), SPxSolver::boundflips, SPxBasis::change(), SSVectorBase< R >::clear(), SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxSolver::computeDualfarkas4Col(), SPxSolver::computeFrhs(), SPxSolver::computeFtest(), SPxSolver::computePrimalray4Row(), SPxBasis::coSolve(), SPxBasis::Desc::D_FREE, UpdateVector::delta(), SPxBasis::desc(), SPxSolver::dim(), SPxSolver::doPupdate(), SPxSolver::entertol(), SPxSolver::enterVector(), SPxSolver::epsilon(), SPxSolver::factorize(), SPxSolver::forceRecompNonbasicValue(), SPxSolver::fRhs(), SPxSolver::fVec(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SPxBasis::INFEASIBLE, soplex::infinity, SPxSolver::initialized, SPxSolver::instableLeave, SPxSolver::instableLeaveNum, SPxSolver::instableLeaveVal, SPxSolver::isBasic(), UpdateVector::isConsistent(), SSVectorBase< R >::isConsistent(), SSVectorBase< R >::isSetup(), SPxId::isSPxRowId(), SPxId::isValid(), SPxBasis::iteration(), SPxBasis::lastUpdate(), SPxSolver::LEAVE, SPxSolver::leavetol(), VectorBase< R >::length(), SSVectorBase< R >::length(), SPxSolver::m_maxCycle, SPxSolver::m_numCycle, SPxSolver::m_pricingViol, MSG_DEBUG, MSG_INFO2, MSG_INFO3, VectorBase< R >::multAdd(), SPxBasis::multBaseWith(), soplex::NE(), SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxSolver::primVec, SPxSolver::rejectLeave(), SPxSolver::rep(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxRatioTester::selectEnter(), SPxSolver::setBasisStatus(), SPxSolver::setupPupdate(), SSVectorBase< R >::size(), SPxBasis::solve(), SPxBasis::solve4update(), SPxSolver::solveVector2, SPxSolver::solveVector2rhs, SPxSolver::solveVector3, SPxSolver::solveVector3rhs, soplex::spxAbs(), SPxSolver::spxout, SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::thePvec, SPxSolver::theratiotester, SPxSolver::theShift, SPxSolver::theUBbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::totalboundflips, SPxSolver::type(), SPxBasis::UNBOUNDED, SPxSolver::unitVecs, UpdateVector::update(), SPxSolver::updateFtest(), SPxSolver::updateNonbasicValue(), and UpdateVector::value().
Referenced by SPxSolver::solve().
feasibility tolerance maintained by ratio test during LEAVE algorithm.
Definition at line 682 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::computeCoTest(), SPxSolver::computeTest(), SPxSolver::init(), SPxSteepPR::isConsistent(), SPxSolver::leave(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxSolver::shiftPvec(), SPxSolver::solve(), SPxSolver::terminate(), SPxSolver::testBounds(), SPxSolver::testVecs(), SPxSolver::unShift(), SPxSolver::updateCoTest(), and SPxSolver::updateTest().
void loadLP |
( |
const SPxLP & |
LP | ) |
|
|
virtual |
copy LP.
Definition at line 68 of file spxsolver.cpp.
References SPxRatioTester::clear(), SPxPricer::clear(), SPxSolver::clear(), SPxBasis::load(), SPxLPBase< Real >::operator=(), SPxSolver::reDim(), SPxSolver::resetClockStats(), SPxSolver::thepricer, SPxSolver::theratiotester, SPxSolver::unInit(), and SPxBasis::unLoad().
Referenced by SoPlex::_ensureRealLPLoaded(), SoPlex::_preprocessAndSolveReal(), SoPlex::_restoreLPReal(), SoPlex::_solveRational(), SoPlex::_solveRealForRational(), SoPlex::_syncLPReal(), SoPlexLegacy::readBasisFile(), SoPlex::readBasisFile(), and SoPlexLegacy::solve().
void localAddCols |
( |
int |
start | ) |
|
|
private |
void localAddRows |
( |
int |
start | ) |
|
|
private |
const Vector& lpBound |
( |
| ) |
const |
Definition at line 1365 of file spxsolver.h.
Referenced by SPxBoundFlippingRT::getData(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minSelect(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), and SPxBoundFlippingRT::selectEnter().
lower bound for pVec.
This method returns the lower bound for pVec. It may only be called for the leaving Simplex algorithm.
For the leaving Simplex algorithms pVec is maintained to fullfill its bounds. As pVec itself, also its bound depend on the chosen representation. Further, they may need to be shifted (see below).
Definition at line 1379 of file spxsolver.h.
maximum number of degenerate simplex steps before we detect cycling.
SPxSolver considers a Simplex step as degenerate if the steplength does not exceed epsilon(). Cycling occurs if only degenerate steps are taken. To prevent this situation, SPxSolver perturbs the problem such that nondegenerate steps are ensured.
maxCycle() controls how agressive such perturbation is performed, since no more than maxCycle() degenerate steps are accepted before perturbing the LP. The current number of consecutive degenerate steps is counted by numCycle().
Definition at line 755 of file spxsolver.h.
Referenced by SPxHarrisRT::degenerateEps().
maximal infeasibility of basis
This method is called before concluding optimality. Since it is possible that some stable implementation of class SPxRatioTester yielded a slightly infeasible (or unpriced) basis, this must be checked before terminating with an optimal solution.
Definition at line 630 of file spxsolver.cpp.
References SPxSolver::coDim(), SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::LEAVE, SPxSolver::m_pricingViol, SPxSolver::m_pricingViolCo, SPxSolver::m_pricingViolCoUpToDate, SPxSolver::m_pricingViolUpToDate, MAXIMUM, SPxSolver::theCoLbound, SPxSolver::theCoPvec, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLbound, SPxSolver::thePvec, SPxSolver::theUBbound, and SPxSolver::type().
Referenced by SPxSolver::solve().
Compute part of objective value.
This method is called from value() in order to compute the part of the objective value resulting form nonbasic variables for COLUMN Representation.
Definition at line 711 of file spxsolver.cpp.
References SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxBasis::desc(), SPxSolver::ENTER, soplex::EQrel(), SPxSolver::LEAVE, SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), SPxSolver::m_nonbasicValue, SPxSolver::m_nonbasicValueUpToDate, SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::maxRowObj(), MSG_ERROR, SPxLPBase< Real >::nCols(), soplex::NE(), SPxLPBase< Real >::nRows(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxBasis::Desc::rowStatus(), SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::type(), and SPxLPBase< Real >::upper().
Referenced by SPxSolver::updateNonbasicValue(), and SPxSolver::value().
bool noViols |
( |
Real |
tol | ) |
const |
|
virtual |
check for violations above tol and immediately return false w/o checking the remaining values
This method is useful for verifying whether an objective limit can be used as termination criterion
Definition at line 675 of file spxsolver.cpp.
References SPxSolver::coDim(), SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::LEAVE, SPxSolver::theCoLbound, SPxSolver::theCoPvec, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLbound, SPxSolver::thePvec, SPxSolver::theUBbound, and SPxSolver::type().
Referenced by SPxSolver::terminate().
virtual Real objValue |
( |
| ) |
|
|
virtual |
assignment operator
assignment operator and copy constructor
Definition at line 1046 of file spxsolver.cpp.
References SPxSolver::addVec, SPxStarter::clone(), SPxRatioTester::clone(), SPxPricer::clone(), LPColSetBase< Real >::colSet(), SPxSolver::COLUMN, SPxSolver::displayFreq, SPxSolver::dualFarkas, SPxSolver::dualRhs, SPxSolver::dualVec, SPxSolver::enterCount, SPxSolver::freePricer, SPxSolver::freeRatioTester, SPxSolver::freeStarter, SPxSolver::hyperPricingEnter, SPxSolver::hyperPricingLeave, SPxSolver::infeasibilities, SPxSolver::infeasibilitiesCo, SPxSolver::initialized, SPxSolver::instableEnter, SPxSolver::instableEnterId, SPxSolver::instableLeave, SPxSolver::instableLeaveNum, SPxSolver::isConsistent(), SPxSolver::isInfeasible, SPxSolver::isInfeasibleCo, SPxSolver::lastShift, SPxSolver::leaveCount, SPxRatioTester::load(), SPxPricer::load(), SPxSolver::m_entertol, SPxSolver::m_leavetol, SPxSolver::m_maxCycle, SPxSolver::m_nonbasicValue, SPxSolver::m_nonbasicValueUpToDate, SPxSolver::m_numCycle, SPxSolver::m_pricingViol, SPxSolver::m_pricingViolCo, SPxSolver::m_pricingViolCoUpToDate, SPxSolver::m_pricingViolUpToDate, SPxSolver::m_status, SPxSolver::maxIters, SPxSolver::maxTime, SPxSolver::objLimit, SPxBasis::operator=(), SPxLPBase< Real >::operator=(), SPxSolver::primalRay, SPxSolver::primRhs, SPxSolver::primVec, SPxSolver::remainingRoundsEnter, SPxSolver::remainingRoundsEnterCo, SPxSolver::remainingRoundsLeave, SPxSolver::ROW, LPRowSetBase< Real >::rowSet(), SPxSolver::sparsePricingEnter, SPxSolver::sparsePricingEnterCo, SPxSolver::sparsePricingFactor, SPxSolver::sparsePricingLeave, SPxSolver::theCoLbound, SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::theCoUbound, SPxSolver::thecovectors, SPxSolver::theCPvec, SPxSolver::theCumulativeTime, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLbound, SPxSolver::theLCbound, SPxBasis::theLP, SPxSolver::theLRbound, SPxSolver::thepricer, SPxSolver::thePricing, SPxSolver::thePvec, SPxSolver::theratiotester, SPxSolver::theRep, SPxSolver::theRPvec, SPxSolver::theShift, SPxSolver::thestarter, SPxSolver::theTest, SPxSolver::theType, SPxSolver::theUBbound, SPxSolver::theUbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxSolver::thevectors, SPxSolver::timerType, and SPxSolver::unitVecs.
allowed optimality, i.e., dual feasibility tolerance.
Definition at line 697 of file spxsolver.h.
Referenced by SoPlex::_performOptIRStable(), SoPlex::_solveRealLPAndRecordStatistics(), SPxSolver::factorize(), SPxSolver::initRep(), SoPlexLegacy::opttol(), SPxSolver::precisionReached(), SoPlexLegacy::solve(), SPxSolver::solve(), SPxSolver::terminate(), and SPxSolver::writeState().
Definition at line 221 of file spxshift.cpp.
References SPxBasis::baseId(), SPxBasis::Desc::D_ON_BOTH, UpdateVector::delta(), VectorBase< R >::dim(), SPxBasis::dualStatus(), VectorBase< R >::get_const_ptr(), IdxSet::index(), SSVectorBase< R >::indices(), SSVectorBase< R >::size(), SPxSolver::theShift, and SSVectorBase< R >::values().
Referenced by SPxSolver::perturbMaxEnter(), and SPxSolver::perturbMaxLeave().
void perturbMaxEnter |
( |
void |
| ) |
|
|
protectedvirtual |
perturb basis bounds.
Definition at line 301 of file spxshift.cpp.
References UpdateVector::delta(), SPxSolver::entertol(), SPxSolver::epsilon(), SPxSolver::fVec(), SPxBasis::iteration(), SPxSolver::lbBound(), MSG_DEBUG, SPxSolver::perturbMax(), SSVectorBase< R >::setup(), SPxSolver::shift(), and SPxSolver::ubBound().
Referenced by SPxSolver::enter().
void perturbMaxLeave |
( |
void |
| ) |
|
|
protectedvirtual |
perturb nonbasic bounds.
Definition at line 458 of file spxshift.cpp.
References SPxSolver::coPvec(), UpdateVector::delta(), SPxBasis::desc(), SPxSolver::epsilon(), SPxBasis::iteration(), SPxSolver::lcBound(), SPxSolver::leavetol(), SPxSolver::lpBound(), MSG_DEBUG, SPxSolver::perturbMax(), SPxSolver::pVec(), SSVectorBase< R >::setup(), SPxSolver::shift(), SPxSolver::status(), SPxSolver::theShift, SPxSolver::ucBound(), and SPxSolver::upBound().
Referenced by SPxSolver::leave().
Definition at line 148 of file spxshift.cpp.
References SPxBasis::baseId(), SPxBasis::Desc::D_ON_BOTH, UpdateVector::delta(), VectorBase< R >::dim(), SPxBasis::dualStatus(), VectorBase< R >::get_const_ptr(), IdxSet::index(), SSVectorBase< R >::indices(), SSVectorBase< R >::size(), SPxSolver::theShift, and SSVectorBase< R >::values().
Referenced by SPxSolver::perturbMinEnter(), and SPxSolver::perturbMinLeave().
void perturbMinEnter |
( |
void |
| ) |
|
|
protectedvirtual |
Definition at line 292 of file spxshift.cpp.
References UpdateVector::delta(), SPxSolver::entertol(), SPxSolver::epsilon(), SPxSolver::fVec(), SPxBasis::iteration(), SPxSolver::lbBound(), MSG_DEBUG, SPxSolver::perturbMin(), SSVectorBase< R >::setup(), SPxSolver::shift(), and SPxSolver::ubBound().
Referenced by SPxSolver::enter().
void perturbMinLeave |
( |
void |
| ) |
|
|
protectedvirtual |
Definition at line 445 of file spxshift.cpp.
References SPxSolver::coPvec(), UpdateVector::delta(), SPxBasis::desc(), SPxSolver::epsilon(), SPxBasis::iteration(), SPxSolver::lcBound(), SPxSolver::leavetol(), SPxSolver::lpBound(), MSG_DEBUG, SPxSolver::perturbMin(), SPxSolver::pVec(), SSVectorBase< R >::setup(), SPxSolver::shift(), SPxSolver::status(), SPxSolver::theShift, SPxSolver::ucBound(), and SPxSolver::upBound().
Referenced by SPxSolver::leave().
bool precisionReached |
( |
Real & |
newpricertol | ) |
const |
|
protectedvirtual |
void printDisplayLine |
( |
const bool |
force = false | ) |
|
|
virtual |
print display line of flying table
Definition at line 1077 of file spxsolve.cpp.
References SPxSolver::displayFreq, SPxSolver::displayLine, SLinSolver::getFactorCount(), SPxBasis::iteration(), SPxSolver::LEAVE, SPxSolver::m_pricingViol, SPxSolver::m_pricingViolCo, MAXIMUM, MSG_INFO1, SPxLPBase< Real >::objOffset(), SPxSolver::shift(), SPxSolver::slinSolver(), SPxSolver::spxout, SPxSolver::time(), SPxSolver::type(), and SPxSolver::value().
Referenced by SPxSolver::solve().
pricing vector.
The pricing vector pVec is the product of coPvec with the constraint matrix. As coPvec, also pVec is maintained within its bound for the leaving Simplex algorithm, while the bounds are tested for the entering Simplex. pVec is of dimension coDim(). Vector pVec() is only up to date for LEAVEing Simplex or FULL pricing in ENTERing Simplex.
Definition at line 1339 of file spxsolver.h.
Referenced by SPxDevexPR::entered4(), SPxSteepPR::entered4(), SPxSolver::factorize(), SPxBoundFlippingRT::flipAndUpdate(), SPxWeightST::generate(), SPxBoundFlippingRT::getData(), SPxSolver::getRedCost(), SPxSolver::getSlacks(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minSelect(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), SPxFastRT::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxSolver::setRedCost(), SPxSolver::setSlacks(), and SPxFastRT::shortEnter().
void qualBoundViolation |
( |
Real & |
maxviol, |
|
|
Real & |
sumviol |
|
) |
| const |
|
virtual |
void qualConstraintViolation |
( |
Real & |
maxviol, |
|
|
Real & |
sumviol |
|
) |
| const |
|
virtual |
get violation of constraints.
Definition at line 25 of file spxquality.cpp.
References SPxSolver::epsilon(), SPxSolver::getPrimal(), SVectorBase< R >::index(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), SPxLPBase< Real >::rhs(), SPxLPBase< Real >::rowVector(), SVectorBase< R >::size(), soplex::spxAbs(), and SVectorBase< R >::value().
Referenced by SPxSolver::precisionReached().
void qualRedCostViolation |
( |
Real & |
maxviol, |
|
|
Real & |
sumviol |
|
) |
| const |
|
virtual |
get violation of optimality criterion.
Definition at line 118 of file spxquality.cpp.
References SPxSolver::coDim(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxSolver::coTest(), SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::factorize(), SPxSolver::fTest(), SPxBasis::lastUpdate(), SPxSolver::LEAVE, SPxSolver::test(), and SPxSolver::type().
Referenced by SPxSolver::precisionReached().
void qualSlackViolation |
( |
Real & |
maxviol, |
|
|
Real & |
sumviol |
|
) |
| const |
|
virtual |
bool readBasisFile |
( |
const char * |
filename, |
|
|
const NameSet * |
rowNames, |
|
|
const NameSet * |
colNames |
|
) |
| |
|
virtual |
reset dimensions of vectors according to loaded LP.
Definition at line 446 of file spxsolver.cpp.
References SPxSolver::coDim(), SPxSolver::dim(), SPxSolver::isInitialized(), SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), UpdateVector::reDim(), DVectorBase< R >::reDim(), SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::thePvec, SPxSolver::theTest, SPxSolver::theUBbound, SPxSolver::theUCbound, SPxSolver::theURbound, and SPxSolver::unitVecs.
Referenced by SPxSolver::addedCols(), SPxSolver::addedRows(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::init(), SPxSolver::initRep(), and SPxSolver::loadLP().
void reinitializeVecs |
( |
| ) |
|
|
protectedvirtual |
setup all vecs fresh
Definition at line 264 of file spxsolver.cpp.
References SPxSolver::COLUMN, SPxSolver::computeCoTest(), SPxSolver::computeEnterCoPrhs(), SPxSolver::computeFrhs(), SPxSolver::computeFtest(), SPxSolver::computeLeaveCoPrhs(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxBasis::coSolve(), SPxSolver::ENTER, SPxSolver::initialized, SPxSolver::lastShift, SPxSolver::rep(), SPxSolver::ROW, SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SPxSolver::setEnterBounds(), SPxSolver::setLeaveBounds(), SPxSolver::setPrimalBounds(), SPxBasis::solve(), SPxSolver::testBounds(), SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theShift, and SPxSolver::type().
Definition at line 581 of file leave.cpp.
References SPxBasis::Desc::colStatus(), SPxBasis::Desc::D_ON_BOTH, SPxBasis::desc(), SPxId::isSPxRowId(), MSG_DEBUG, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxBasis::Desc::rowStatus(), SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theUCbound, and SPxSolver::theURbound.
Referenced by SPxSolver::leave().
reload LP.
Definition at line 55 of file spxsolver.cpp.
References SPxRatioTester::clear(), SPxPricer::clear(), SPxSolver::forceRecompNonbasicValue(), SPxSolver::m_status, SPxBasis::theLP, SPxSolver::thepricer, SPxSolver::theratiotester, SPxSolver::unInit(), SPxSolver::UNKNOWN, and SPxBasis::unLoad().
Referenced by SoPlex::_solveRealStable(), SoPlexLegacy::clearBasis(), and SoPlex::clearBasis().
return the current basis representation.
Definition at line 406 of file spxsolver.h.
Referenced by SoPlex::_solveRealLPAndRecordStatistics(), SPxBasis::addedCols(), SPxBasis::addedRows(), SPxSolver::addedRows(), SPxSolver::changeLhsStatus(), SPxSolver::changeLowerStatus(), SPxSolver::changeRhsStatus(), SPxSolver::changeUpperStatus(), SPxSolver::computeEnterCoPrhs4Col(), SPxSolver::computeEnterCoPrhs4Row(), SPxSolver::computeFrhs(), SPxSolver::computeFrhsXtra(), SPxSolver::coTest(), SPxBasis::Desc::Desc(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::enter(), SPxSolver::factorize(), SPxBoundFlippingRT::flipAndUpdate(), SPxWeightST::generate(), SoPlex::getBasisInd(), SoPlex::getBasisInverseColReal(), SoPlex::getBasisInverseRowReal(), SoPlex::getBasisInverseTimesVecReal(), SPxSolver::getDual(), SPxPricer::getDualNorms(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SPxPricer::getNdualNorms(), SPxSolver::getPrimal(), SPxSolver::getRedCost(), SPxSolver::getSlacks(), SPxSolver::init(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxDevexPR::load(), SPxSolver::nonbasicValue(), SPxSolver::perturbMax(), SPxSolver::perturbMin(), SPxSolver::reinitializeVecs(), SPxBasis::removedCol(), SPxBasis::removedCols(), SPxBasis::removedRow(), SPxBasis::removedRows(), SoPlexLegacy::rep(), SPxBasis::restoreInitialBasis(), SPxWeightPR::selectEnter(), SPxBoundFlippingRT::selectEnter(), SPxWeightPR::selectLeave(), SPxBoundFlippingRT::selectLeave(), SPxSolver::setDual(), SPxSolver::setDualColBounds(), SPxPricer::setDualNorms(), SPxSolver::setDualRowBounds(), SPxSolver::setLeaveBound4Row(), SPxSolver::setPrimal(), SPxSolver::setPrimalBounds(), SPxSolver::setRedCost(), SPxBasis::setRep(), SPxSolver::setSlacks(), SPxSteepPR::setupPrefsX(), SPxWeightST::setupWeights(), SPxSolver::solve(), SPxSolver::terminate(), SPxSolver::test(), SPxSolver::ungetEnterVal(), SPxSolver::unShift(), SPxSolver::value(), and SPxSolver::writeState().
void resetCumulativeTime |
( |
| ) |
|
reset cumulative time counter to zero.
Definition at line 1922 of file spxsolver.h.
return const lp's rows if available.
Definition at line 1968 of file spxsolver.h.
set the lp solver's basis.
Definition at line 1795 of file spxsolver.cpp.
References SPxBasis::Desc::colStatus(), SPxBasis::desc(), SPxSolver::forceRecompNonbasicValue(), SPxBasis::load(), SPxSolver::loadBasis(), SPxLPBase< Real >::nCols(), SPxBasis::NO_PROBLEM, SPxLPBase< Real >::nRows(), SPxBasis::Desc::rowStatus(), SPxBasis::status(), SPxSolver::varStatusToBasisStatusCol(), and SPxSolver::varStatusToBasisStatusRow().
Referenced by SoPlex::_ensureRealLPLoaded(), SoPlex::_performOptIRStable(), SoPlex::_preprocessAndSolveReal(), SoPlex::_restoreLPReal(), SoPlex::_solveRational(), SoPlex::_solveRealForRational(), SoPlex::setBasis(), and SoPlexLegacy::solve().
set the lp solver's basis status.
Definition at line 1905 of file spxsolver.h.
Referenced by SPxSolver::clear(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::enter(), SPxSolver::init(), SPxSolver::leave(), SPxSolver::loadBasis(), SoPlexLegacy::solve(), and SPxSolver::solve().
void setDisplayFreq |
( |
int |
freq | ) |
|
void setDual |
( |
Vector & |
p_vector | ) |
|
|
private |
Definition at line 1449 of file spxsolve.cpp.
References SPxBasis::baseId(), SPxSolver::coPvec(), SPxSolver::fVec(), SPxSolver::isInitialized(), SPxLPBase< Real >::MAXIMIZE, SPxLPBase< Real >::MINIMIZE, SPxLPBase< Real >::nCols(), SPxLPBase< Real >::number(), SPxSolver::rep(), SPxSolver::ROW, and SPxLPBase< Real >::spxSense().
void setDualColBounds |
( |
| ) |
|
|
protected |
Definition at line 103 of file spxbounds.cpp.
References SPxSolver::clearDualBounds(), SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::desc(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::maxRowObj(), SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), SPxSolver::rep(), SPxBasis::Desc::rowStatus(), SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theUCbound, and SPxSolver::theURbound.
Referenced by SPxSolver::init(), and SPxSolver::reinitializeVecs().
bool setDualNorms |
( |
int |
nnormsRow, |
|
|
int |
nnormsCol, |
|
|
Real * |
norms |
|
) |
| |
void setDualRowBounds |
( |
| ) |
|
|
protected |
Definition at line 133 of file spxbounds.cpp.
References SPxSolver::clearDualBounds(), SPxBasis::dualColStatus(), SPxBasis::dualRowStatus(), SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), SPxSolver::rep(), SPxSolver::ROW, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theUCbound, and SPxSolver::theURbound.
Referenced by SPxSolver::init(), and SPxSolver::reinitializeVecs().
void setEnterBound4Col |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
Definition at line 187 of file spxbounds.cpp.
References SPxBasis::baseId(), SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::number(), SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::theLBbound, SPxSolver::theLCbound, SPxSolver::theUBbound, and SPxSolver::theUCbound.
Referenced by SPxSolver::addedRows(), and SPxSolver::setEnterBounds().
void setEnterBound4Row |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
This sets up the bounds for basic variables for entering simplex algorithms. It requires, that all upper lower feasibility bounds have allready been setup. Method |setEnterBound4Row(i, n)| does so for the |i|-th basis variable being row index |n|. Equivalently, method |setEnterBound4Col(i, n)| does so for the |i|-th basis variable being column index |n|.
Definition at line 165 of file spxbounds.cpp.
References SPxBasis::baseId(), SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::number(), SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::theLBbound, SPxSolver::theLRbound, SPxSolver::theUBbound, and SPxSolver::theURbound.
Referenced by SPxSolver::setEnterBounds().
void setFeastol |
( |
Real |
d | ) |
|
void setLeaveBound4Col |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
Definition at line 260 of file spxbounds.cpp.
References SPxBasis::baseId(), SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::lower(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::theLBbound, SPxSolver::theUBbound, and SPxLPBase< Real >::upper().
Referenced by SPxSolver::addedRows(), and SPxSolver::setLeaveBounds().
void setLeaveBound4Row |
( |
int |
i, |
|
|
int |
n |
|
) |
| |
|
protected |
This sets up the bounds for basic variables for leaving simplex algorithms. While method |setLeaveBound4Row(i,n)| does so for the |i|-th basic variable being the |n|-th row, |setLeaveBound4Col(i,n)| does so for the |i|-th basic variable being the |n|-th column.
Definition at line 229 of file spxbounds.cpp.
References SPxBasis::baseId(), SPxSolver::COLUMN, SPxBasis::desc(), soplex::infinity, SPxLPBase< Real >::lhs(), SPxLPBase< Real >::maxRowObj(), SPxLPBase< Real >::number(), SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::theLBbound, and SPxSolver::theUBbound.
Referenced by SPxSolver::setLeaveBounds().
void setOutstream |
( |
SPxOut & |
newOutstream | ) |
|
void setPricer |
( |
SPxPricer * |
pricer, |
|
|
const bool |
destroy = false |
|
) |
| |
|
virtual |
void setPrimal |
( |
Vector & |
p_vector | ) |
|
|
private |
setup feasibility bounds for entering algorithm
Setting up the feasiblity bound for normal primal variables is straightforward. However, slack variables need some more details on how we treate them. This is slightly different from usual textbook versions. Let . This can be transformed to , with . Hence, with this definition of slack variables , we can directly use vectors and as feasibility bounds.
Definition at line 32 of file spxbounds.cpp.
References SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theUCbound, SPxSolver::theURbound, and SPxLPBase< Real >::upper().
Referenced by SPxSolver::init(), and SPxSolver::reinitializeVecs().
void setRedCost |
( |
Vector & |
p_vector | ) |
|
|
private |
Definition at line 1480 of file spxsolve.cpp.
References SPxBasis::baseId(), SPxSolver::dim(), SPxSolver::fVec(), SPxSolver::isInitialized(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::MINIMIZE, SPxLPBase< Real >::number(), SPxSolver::pVec(), SPxSolver::rep(), SPxSolver::ROW, and SPxLPBase< Real >::spxSense().
void setSlacks |
( |
Vector & |
p_vector | ) |
|
|
private |
void setSolver |
( |
SLinSolver * |
slu, |
|
|
const bool |
destroy = false |
|
) |
| |
|
virtual |
void setSparsePricingFactor |
( |
Real |
fac | ) |
|
void setStarter |
( |
SPxStarter * |
starter, |
|
|
const bool |
destroy = false |
|
) |
| |
|
virtual |
void setTerminationIter |
( |
int |
iteration = -1 | ) |
|
|
virtual |
void setTester |
( |
SPxRatioTester * |
tester, |
|
|
const bool |
destroy = false |
|
) |
| |
|
virtual |
set LEAVE or ENTER algorithm.
Definition at line 169 of file spxsolver.cpp.
References SPxBasis::factorized, SPxSolver::forceRecompNonbasicValue(), SPxSolver::LEAVE, SPxBasis::load(), SPxSolver::m_numCycle, SPxBasis::matrixIsSetup, MSG_INFO3, SPxSolver::spxout, SPxSolver::theType, and SPxSolver::unInit().
Referenced by SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_solveRealStable(), SoPlexLegacy::setType(), and SPxSolver::solve().
Setup vectors to be cosolved within Simplex loop.
Load vector y to be coSolved with the basis matrix during the ENTER Simplex. The system will be solved after SPxSolver's call to SPxRatioTester. The system will be solved along with another system. Solving two linear system at a time has performance advantages over solving the two linear systems seperately.
Definition at line 1577 of file spxsolver.h.
Referenced by SPxSteepPR::selectEnter().
Setup vectors to be solved within Simplex loop.
Load vector y to be solved with the basis matrix during the LEAVE Simplex. The system will be solved after SPxSolver's call to SPxRatioTester. The system will be solved along with another system. Solving two linear system at a time has performance advantages over solving the two linear systems seperately.
Definition at line 1549 of file spxsolver.h.
Referenced by SPxSteepPR::selectLeave().
Setup vectors to be solved within Simplex loop.
Load a second additional vector y2 to be solved with the basis matrix during the LEAVE Simplex. The system will be solved after SPxSolver's call to SPxRatioTester. The system will be solved along with at least one other system. Solving several linear system at a time has performance advantages over solving them seperately.
Definition at line 1563 of file spxsolver.h.
Referenced by SPxBoundFlippingRT::flipAndUpdate().
void setupPupdate |
( |
void |
| ) |
|
|
protectedvirtual |
Definition at line 506 of file spxvecs.cpp.
References SSVectorBase< R >::assign2product(), SSVectorBase< R >::assign2product4setup(), SSVectorBase< R >::assign2productAndSetup(), UpdateVector::delta(), VectorBase< R >::dim(), SSVectorBase< R >::isSetup(), SSVectorBase< R >::setup(), SSVectorBase< R >::size(), SPxSolver::theCoPvec, SPxSolver::thecovectors, SPxSolver::thePvec, and SPxSolver::thevectors.
Referenced by SPxSolver::enter(), and SPxSolver::leave().
virtual Real shift |
( |
| ) |
const |
|
virtual |
Perform initial shifting to optain an feasible or pricable basis.
Definition at line 25 of file spxshift.cpp.
References SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::entertol(), SPxSolver::epsilon(), MSG_DEBUG, SPxSolver::shiftLBbound(), SPxSolver::shiftUBbound(), SPxSolver::testBounds(), SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theUBbound, and SPxSolver::type().
Referenced by SPxSolver::addedRows(), and SPxSolver::init().
void shiftLBbound |
( |
int |
i, |
|
|
Real |
to |
|
) |
| |
void shiftLCbound |
( |
int |
i, |
|
|
Real |
to |
|
) |
| |
void shiftLPbound |
( |
int |
i, |
|
|
Real |
to |
|
) |
| |
Perform initial shifting to optain an feasible or pricable basis.
Definition at line 78 of file spxshift.cpp.
References SPxSolver::coDim(), SPxSolver::coId(), SPxSolver::dim(), SPxSolver::epsilon(), SPxSolver::isBasic(), SPxSolver::LEAVE, SPxSolver::leavetol(), MSG_DEBUG, SPxSolver::shiftLCbound(), SPxSolver::shiftLPbound(), SPxSolver::shiftUCbound(), SPxSolver::shiftUPbound(), SPxSolver::testBounds(), SPxSolver::theCoLbound, SPxSolver::theCoPvec, SPxSolver::theCoUbound, SPxSolver::theLbound, SPxSolver::thePvec, SPxSolver::theUbound, and SPxSolver::type().
Referenced by SPxSolver::init().
void shiftUBbound |
( |
int |
i, |
|
|
Real |
to |
|
) |
| |
void shiftUCbound |
( |
int |
i, |
|
|
Real |
to |
|
) |
| |
void shiftUPbound |
( |
int |
i, |
|
|
Real |
to |
|
) |
| |
solve loaded LP.
Solves the loaded LP by processing the Simplex iteration until the termination criteria is fullfilled (see terminate()). The SPxStatus of the solver will indicate the reason for termination.
- Exceptions
-
SPxStatusException | if either no problem, solver, pricer or ratiotester loaded or if solve is still running when it shouldn't be |
- Todo:
- != REGULAR is not enough. Also OPTIMAL/DUAL/PRIMAL should be tested and acted accordingly.
- Todo:
- technically it would be ok to finish already when (priced && maxinfeas + shift() <= entertol()) is satisfied; maybe at least in the case when SoPlex keeps jumping back between ENTER and LEAVE always shifting (looping), we may relax this condition here; note also that unShift may increase shift() slightly due to roundoff errors
- Todo:
- technically it would be ok to finish already when (priced && maxinfeas + shift() <= entertol()) is satisfied; maybe at least in the case when SoPlex keeps jumping back between ENTER and LEAVE always shifting (looping), we may relax this condition here; note also that unShift may increase shift() slightly due to roundoff errors
Definition at line 73 of file spxsolve.cpp.
References SPxSolver::ABORT_CYCLING, SPxSolver::ABORT_ITER, DIdxSet::addIdx(), SPxBasis::baseId(), SPxSolver::basis(), SPxSolver::boundflips, IdxSet::clear(), SPxSolver::clearUpdateVecs(), SPxSolver::coDim(), SPxSolver::COLUMN, SPxSolver::computeCoTest(), SPxSolver::computeFtest(), SPxSolver::computeTest(), SPxSolver::coSolveVector2, SPxSolver::coSolveVector3, SPxBasis::desc(), SPxSolver::dim(), SPxBasis::DUAL, SPxSolver::ENTER, SPxSolver::enter(), SPxSolver::enterCount, SPxPricer::entered4(), SPxSolver::entertol(), SPxPricer::epsilon(), SPxSolver::epsilon(), SPxSolver::ERROR, SPxSolver::factorize(), SPxSolver::feastol(), SPxSolver::forceRecompNonbasicValue(), SPxSolver::fRhs(), SPxSolver::fTest(), SPxSolver::fVec(), SPxStarter::generate(), SPxRatioTester::getDelta(), SPxSolver::getPrimal(), soplex::GT(), SPxSolver::hyperPricingEnter, SPxSolver::hyperPricingLeave, SVectorBase< R >::index(), SPxSolver::infeasibilities, SPxSolver::infeasibilitiesCo, soplex::infinity, SPxSolver::init(), SPxSolver::instableEnter, SPxSolver::instableEnterId, SPxSolver::instableEnterVal, SPxSolver::instableLeave, SPxSolver::instableLeaveNum, SPxSolver::instableLeaveVal, SPxSolver::isColBasic(), SPxSolver::isInfeasible, SPxSolver::isInfeasibleCo, SPxSolver::isInitialized(), SPxSolver::isRowBasic(), SPxId::isSPxColId(), SPxId::isSPxRowId(), SPxId::isValid(), SPxBasis::iteration(), SPxSolver::iterations(), SPxBasis::iterCount, SPxBasis::lastEntered(), SPxBasis::lastIndex(), SPxBasis::lastLeft(), SPxBasis::lastUpdate(), SPxSolver::LEAVE, SPxSolver::leave(), SPxSolver::leaveCount, SPxSolver::leavetol(), SPxPricer::left4(), SPxLPBase< Real >::lhs(), SPxBasis::load(), SPxSolver::loadBasis(), SPxLPBase< Real >::lower(), soplex::LT(), SPxSolver::m_entertol, SPxSolver::m_leavetol, SPxSolver::m_numCycle, SPxSolver::m_status, SPxBasis::matrixIsSetup, MAXCYCLES, SPxSolver::maxInfeas(), SPxSolver::maxIters, MAXREFACPIVOTS, MAXSTALLRECOVERS, MAXSTALLS, MSG_DEBUG, MSG_ERROR, MSG_INFO2, MSG_INFO3, MSG_WARNING, SPxLPBase< Real >::nCols(), SPxSolver::NO_PRICER, SPxSolver::NO_PROBLEM, SPxSolver::NO_RATIOTESTER, SPxSolver::NO_SOLVER, SPxPricer::NOT_VIOLATED, SPxLPBase< Real >::nRows(), SPxLPBase< Real >::number(), SPxBasis::OPTIMAL, SPxSolver::OPTIMAL, SPxSolver::opttol(), SPxSolver::precisionReached(), SPxBasis::PRIMAL, SPxSolver::primalCount, SPxSolver::printDisplayLine(), SPxBasis::REGULAR, SPxSolver::REGULAR, SPxSolver::rep(), Timer::reset(), SPxLPBase< Real >::rhs(), SPxLPBase< Real >::rowVector(), SPxSolver::RUNNING, SPxPricer::selectEnter(), SPxPricer::selectLeave(), SPxSolver::setBasisStatus(), SPxRatioTester::setDelta(), SPxPricer::setEpsilon(), SPxPricer::setType(), SPxRatioTester::setType(), SPxSolver::setType(), SPxSolver::shift(), SPxBasis::SINGULAR, SPxSolver::SINGULAR, SVectorBase< R >::size(), SPxSolver::slinSolver(), SPxRatioTester::solver(), SPxPricer::solver(), SPxSolver::solveVector2, SPxSolver::solveVector3, SPxSolver::sparsePricingEnter, SPxSolver::sparsePricingEnterCo, SPxSolver::sparsePricingLeave, soplex::spxAbs(), SPxSolver::spxout, Timer::start(), SPxBasis::status(), SPxSolver::status(), Timer::stop(), SPxSolver::terminate(), SPxSolver::testBounds(), SPxSolver::theCoTest, SPxSolver::theCumulativeTime, SPxSolver::thepricer, SPxSolver::theratiotester, SPxSolver::thestarter, SPxSolver::theTest, SPxSolver::theTime, SPxSolver::time(), SPxSolver::totalboundflips, SPxSolver::type(), SPxSolver::UNKNOWN, SPxSolver::unShift(), SPxSolver::updateViols, SPxSolver::updateViolsCo, SPxLPBase< Real >::upper(), SVectorBase< R >::value(), SPxSolver::value(), and SPxPricer::VIOLATED.
Referenced by SoPlex::_solveRealLPAndRecordStatistics(), and SoPlexLegacy::solve().
std::string statistics |
( |
| ) |
const |
Status of solution process.
Definition at line 1536 of file spxsolve.cpp.
References SPxSolver::ABORT_CYCLING, SPxSolver::ABORT_ITER, SPxSolver::ABORT_TIME, SPxSolver::ABORT_VALUE, SPxBasis::DUAL, SPxSolver::ERROR, SPxBasis::INFEASIBLE, SPxSolver::INFEASIBLE, SPxSolver::m_status, SPxSolver::NO_PRICER, SPxBasis::NO_PROBLEM, SPxSolver::NO_PROBLEM, SPxSolver::NO_RATIOTESTER, SPxSolver::NO_SOLVER, SPxSolver::NOT_INIT, SPxBasis::OPTIMAL, SPxSolver::OPTIMAL, SPxBasis::PRIMAL, SPxBasis::REGULAR, SPxSolver::REGULAR, SPxSolver::RUNNING, SPxBasis::SINGULAR, SPxSolver::SINGULAR, SPxBasis::status(), SPxBasis::UNBOUNDED, SPxSolver::UNBOUNDED, and SPxSolver::UNKNOWN.
Referenced by SoPlex::_evaluateSolutionReal(), SoPlex::_resolveWithoutPreprocessing(), SoPlex::_solveRealForRational(), SoPlex::clearBasis(), SoPlexLegacy::getBasis(), SPxSolver::getBasis(), SoPlexLegacy::getDual(), SPxSolver::getDual(), SPxSolver::getDualfarkas(), SoPlexLegacy::getPrimal(), SPxSolver::getPrimal(), SPxSolver::getPrimalray(), SoPlexLegacy::getRedCost(), SPxSolver::getRedCost(), SPxSolver::getResult(), SoPlexLegacy::getSlacks(), SPxSolver::getSlacks(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxSolver::solve(), and SoPlexLegacy::status().
Termination criterion.
This method is called in each Simplex iteration to determine, if the algorithm is to terminate. In this case a nonzero value is returned.
This method is declared virtual to allow for implementation of other stopping criteria or using it as callback method within the Simplex loop, by overriding the method in a derived class. However, all implementations must terminate with the statement return SPxSolver::terminate(), if no own termination criteria is encountered.
Note, that the Simplex loop stopped even when terminate() returns 0, if the LP has been solved to optimality (i.e. no further pricing succeeds and no shift is present).
Definition at line 1101 of file spxsolve.cpp.
References SPxSolver::ABORT_TIME, SPxSolver::ABORT_VALUE, SPxSolver::computeEnterCoPrhs(), SPxSolver::computeFrhs(), SPxSolver::computeLeaveCoPrhs(), SPxSolver::computePvec(), SPxSolver::computeTest(), SPxBasis::coSolve(), SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::entertol(), SPxSolver::epsilon(), SPxSolver::factorize(), SPxSolver::FULL, soplex::infinity, SPxSolver::isTimeLimitReached(), SPxBasis::iteration(), SPxSolver::leavetol(), VectorBase< R >::length(), SPxSolver::m_status, SPxSolver::maxTime, MSG_DEBUG, MSG_INFO2, MSG_INFO3, MSG_WARNING, SPxSolver::noViols(), SPxSolver::objLimit, SPxLPBase< Real >::objOffset(), SPxBasis::OPTIMAL, SPxSolver::opttol(), SPxSolver::pricing(), SPxSolver::rep(), SPxSolver::shift(), SPxBasis::SINGULAR, SPxBasis::solve(), SPxSolver::spxout, SPxLPBase< Real >::spxSense(), SPxBasis::status(), SPxSolver::testVecs(), SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::type(), SPxSolver::UNKNOWN, SPxSolver::unShift(), SPxBasis::updateCount, and SPxSolver::value().
Referenced by SPxSolver::solve(), and SoPlexLegacy::terminate().
int terminationIter |
( |
| ) |
const |
|
virtual |
Real terminationTime |
( |
| ) |
const |
|
virtual |
Real terminationValue |
( |
| ) |
const |
|
virtual |
Violations of pVec.
In entering Simplex pricing selects checks vectors coPvec() and pVec() for violation of its bounds. Vector test() contains the violations for pVec(), i.e., if test()[i] < 0, the i'th element of pVec() is violated by test()[i]. Vector test() is only up to date for FULL pricing.
Definition at line 1392 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxDevexPR::buildBestPriceVectorEnterCoDim(), SPxSteepPR::buildBestPriceVectorEnterCoDim(), SPxSolver::computeTest(), SPxSolver::qualRedCostViolation(), SPxParMultPR::selectEnter(), SPxWeightPR::selectEnter(), SPxDantzigPR::selectEnterDenseCoDim(), SPxDevexPR::selectEnterDenseCoDim(), SPxSteepPR::selectEnterDenseCoDim(), SPxDevexPR::selectEnterHyperCoDim(), SPxSteepPR::selectEnterHyperCoDim(), SPxDantzigPR::selectEnterSparseCoDim(), SPxDevexPR::selectEnterSparseCoDim(), SPxSteepPR::selectEnterSparseCoDim(), and SPxSolver::updateTest().
test vector i with status stat .
Definition at line 63 of file enter.cpp.
References SPxSolver::COLUMN, SPxBasis::Desc::D_FREE, SPxBasis::Desc::D_ON_BOTH, SPxBasis::Desc::D_ON_LOWER, SPxBasis::Desc::D_ON_UPPER, SPxSolver::ENTER, SPxSolver::isBasic(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::maxObj(), SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxSolver::thePvec, and SPxSolver::type().
void testBounds |
( |
| ) |
const |
Definition at line 305 of file spxbounds.cpp.
References SPxSolver::coDim(), SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::entertol(), SPxBasis::iterCount, SPxSolver::leavetol(), MSG_INFO2, SPxSolver::spxout, SPxSolver::theCoLbound, SPxSolver::theCoPvec, SPxSolver::theCoUbound, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLbound, SPxSolver::thePvec, SPxSolver::theUBbound, SPxSolver::theUbound, and SPxSolver::type().
Referenced by SPxSolver::reinitializeVecs(), SPxSolver::shiftFvec(), SPxSolver::shiftPvec(), and SPxSolver::solve().
- Todo:
- Error message "this shalt not be": shalt this be an assert (also below)?
Definition at line 1005 of file spxsolve.cpp.
References VectorBase< R >::clear(), SPxSolver::coDim(), SPxBasis::coSolve(), SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::entertol(), SPxSolver::isBasic(), SPxSolver::isCoBasic(), SPxBasis::iteration(), SPxSolver::leavetol(), VectorBase< R >::length(), MSG_ERROR, MSG_INFO3, SPxBasis::multBaseWith(), SPxBasis::multWithBase(), SPxBasis::SINGULAR, SPxBasis::solve(), SPxSolver::spxout, SPxBasis::status(), SPxSolver::theCoPrhs, SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::theFrhs, SPxSolver::theFvec, SPxSolver::theTest, and SPxSolver::type().
Referenced by SPxSolver::factorize(), and SPxSolver::terminate().
return current Type.
Definition at line 412 of file spxsolver.h.
Referenced by SoPlex::_solveRealLPAndRecordStatistics(), SoPlex::_solveRealStable(), SPxDevexPR::addedCoVecs(), SPxSteepPR::addedCoVecs(), SPxSolver::addedRows(), SPxDevexPR::addedVecs(), SPxSteepPR::addedVecs(), SPxSolver::computeEnterCoPrhs(), SPxSolver::computeFrhs(), SPxSolver::computeFrhsXtra(), SPxSolver::computeFtest(), SPxSolver::computeLeaveCoPrhs(), SPxSolver::coTest(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::enter(), SPxSteepPR::entered4(), SPxSolver::factorize(), SPxPricer::getDualNorms(), SPxPricer::getNdualNorms(), SPxSolver::init(), SPxSteepPR::isConsistent(), SPxSolver::leave(), SPxSteepPR::left4(), SPxHybridPR::load(), SPxAutoPR::load(), SPxFastRT::load(), SPxSolver::maxInfeas(), SPxSolver::nonbasicValue(), SPxSolver::noViols(), SPxSolver::printDisplayLine(), SPxSolver::qualRedCostViolation(), SPxSolver::reinitializeVecs(), SPxSteepPR::removedVecs(), SPxPricer::setDualNorms(), SPxSolver::setPricing(), SPxWeightST::setupWeights(), SPxSolver::shiftFvec(), SPxSolver::shiftPvec(), SPxSolver::solve(), SPxSolver::terminate(), SPxSolver::test(), SPxSolver::testBounds(), SPxSolver::testVecs(), SoPlexLegacy::type(), SPxSolver::unShift(), SPxSolver::updateFtest(), and SPxSolver::value().
const Vector& ubBound |
( |
| ) |
const |
upper bound for fVec.
Definition at line 1202 of file spxsolver.h.
Referenced by SPxFastRT::maxDelta(), SPxFastRT::maxReLeave(), SPxFastRT::maxSelect(), SPxFastRT::maxShortLeave(), SPxFastRT::minDelta(), SPxFastRT::minReLeave(), SPxFastRT::minSelect(), SPxFastRT::minShortLeave(), SPxSolver::perturbMaxEnter(), SPxSolver::perturbMinEnter(), SPxDefaultRT::selectLeave(), SPxHarrisRT::selectLeave(), and SPxBoundFlippingRT::selectLeave().
upper bound for fVec, writable.
This method returns the upper bound for the feasibility vector. It may only be called for the ENTERing Simplex.
For the ENTERing Simplex algorithms, the feasibility vector is maintained to fullfill its bounds. As fVec itself, also its bounds depend on the chosen representation. Further, they may need to be shifted (see below).
Definition at line 1215 of file spxsolver.h.
const Vector& ucBound |
( |
| ) |
const |
Definition at line 1278 of file spxsolver.h.
Referenced by SPxBoundFlippingRT::getData(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minSelect(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), and SPxBoundFlippingRT::selectEnter().
upper bound for coPvec.
This method returns the upper bound for coPvec. It may only be called for the leaving Simplex algorithm.
For the leaving Simplex algorithms coPvec is maintained to fullfill its bounds. As coPvec itself, also its bound depend on the chosen representation. Further, they may need to be shifted (see below).
Definition at line 1292 of file spxsolver.h.
Definition at line 978 of file enter.cpp.
References SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::desc(), SPxSolver::isId(), SPxSolver::isInfeasible, SPxSolver::isInfeasibleCo, SPxId::isSPxColId(), SPxId::isSPxRowId(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::maxRowObj(), VectorBase< R >::multAdd(), SPxPricer::NOT_VIOLATED, SPxLPBase< Real >::number(), SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxSolver::rep(), SPxBasis::Desc::rowStatus(), SPxSolver::theCoTest, SPxSolver::theFrhs, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::theTest, SPxSolver::theUCbound, and SPxSolver::theURbound.
Referenced by SPxSolver::enter().
uninitialize data structures.
Definition at line 1714 of file spxsolver.h.
Referenced by SPxSolver::addedCols(), SPxSolver::addedRows(), SPxSolver::changeCol(), SPxSolver::changeElement(), SPxSolver::changeLhs(), SPxSolver::changeLower(), SPxSolver::changeMaxObj(), SPxSolver::changeObj(), SPxSolver::changeRange(), SPxSolver::changeRhs(), SPxSolver::changeRow(), SPxSolver::changeRowObj(), SPxSolver::changeSense(), SPxSolver::changeUpper(), SPxSolver::clear(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::initRep(), SPxSolver::loadBasis(), SPxSolver::loadLP(), SPxSolver::read(), SPxSolver::reLoad(), and SPxSolver::setType().
const SVector& unitVector |
( |
int |
i | ) |
const |
remove shift as much as possible.
Definition at line 471 of file spxshift.cpp.
References SPxBasis::baseId(), SPxSolver::clearDualBounds(), SPxId::COL_ID, SPxBasis::Desc::colStatus(), SPxSolver::COLUMN, SPxBasis::desc(), SPxSolver::dim(), SPxSolver::ENTER, SPxSolver::entertol(), SPxSolver::isBasic(), SPxSolver::isInitialized(), SPxSolver::LEAVE, SPxSolver::leavetol(), SPxLPBase< Real >::lhs(), SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxObj(), SPxLPBase< Real >::maxRowObj(), MSG_INFO3, SPxLPBase< Real >::nCols(), SPxLPBase< Real >::nRows(), SPxLPBase< Real >::number(), SPxSolver::rep(), SPxLPBase< Real >::rhs(), SPxSolver::ROW, SPxId::ROW_ID, SPxBasis::Desc::rowStatus(), SPxSolver::spxout, SPxSolver::theCoPvec, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theLCbound, SPxSolver::theLRbound, SPxSolver::thePvec, SPxSolver::theShift, SPxSolver::theUBbound, SPxSolver::theUCbound, SPxSolver::theURbound, SPxId::type(), SPxSolver::type(), and SPxLPBase< Real >::upper().
Referenced by SPxSolver::solve(), and SPxSolver::terminate().
const Vector& upBound |
( |
| ) |
const |
Definition at line 1344 of file spxsolver.h.
Referenced by SPxBoundFlippingRT::getData(), SPxFastRT::maxDelta(), SPxFastRT::maxReEnter(), SPxFastRT::maxSelect(), SPxFastRT::minDelta(), SPxFastRT::minReEnter(), SPxFastRT::minSelect(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMinLeave(), SPxDefaultRT::selectEnter(), SPxHarrisRT::selectEnter(), and SPxBoundFlippingRT::selectEnter().
upper bound for pVec.
This method returns the upper bound for pVec. It may only be called for the leaving Simplex algorithm.
For the leaving Simplex algorithms pVec is maintained to fullfill its bounds. As pVec itself, also its bound depend on the chosen representation. Further, they may need to be shifted (see below).
Definition at line 1358 of file spxsolver.h.
recompute coTest vector.
Definition at line 352 of file enter.cpp.
References DIdxSet::addIdx(), IdxSet::clear(), SPxBasis::Desc::coStatus(), SPxSolver::coTest(), UpdateVector::delta(), SPxBasis::desc(), SPxSolver::getEnterVals(), SPxSolver::hyperPricingEnter, UpdateVector::idx(), IdxSet::index(), SPxSolver::infeasibilities, SPxSolver::isBasic(), SPxSolver::isInfeasible, SPxSolver::leavetol(), SPxSolver::m_pricingViol, SPxSolver::m_pricingViolUpToDate, SPxPricer::NOT_VIOLATED, SPxSolver::remainingRoundsEnter, SSVectorBase< R >::setup(), IdxSet::size(), SPxSolver::sparsePricingEnter, SPxSolver::theCoPvec, SPxSolver::theCoTest, SPxSolver::updateViols, and SPxPricer::VIOLATED.
Referenced by SPxSolver::enter().
update basis feasibility test vector.
Definition at line 104 of file leave.cpp.
References DIdxSet::addIdx(), SPxSolver::boundflips, IdxSet::clear(), SPxSolver::entertol(), SPxSolver::epsilon(), SPxSolver::fTest(), SPxSolver::hyperPricingLeave, UpdateVector::idx(), IdxSet::index(), SSVectorBase< R >::index(), SPxSolver::infeasibilities, SPxSolver::isInfeasible, SPxSolver::LEAVE, SPxSolver::m_pricingViol, SPxSolver::m_pricingViolUpToDate, SPxPricer::NOT_VIOLATED, SPxSolver::remainingRoundsLeave, IdxSet::size(), SSVectorBase< R >::size(), SPxSolver::solveVector3, SPxSolver::sparsePricingLeave, soplex::spxAbs(), SPxSolver::theCoTest, SPxSolver::theFvec, SPxSolver::theLBbound, SPxSolver::theUBbound, SPxSolver::type(), SPxSolver::updateViols, SSVectorBase< R >::value(), and SPxPricer::VIOLATED.
Referenced by SPxSolver::leave().
bool updateNonbasicValue |
( |
Real |
objChange | ) |
|
- Returns
- whether nonbasic part of objective is reliable
Definition at line 886 of file spxsolver.cpp.
References SPxBasis::iteration(), SPxSolver::m_nonbasicValue, SPxSolver::m_nonbasicValueUpToDate, MSG_DEBUG, and SPxSolver::nonbasicValue().
Referenced by SPxSolver::changeLhsStatus(), SPxSolver::changeLowerStatus(), SPxSolver::changeRhsStatus(), SPxSolver::changeUpperStatus(), SPxSolver::enter(), SPxBoundFlippingRT::flipAndUpdate(), and SPxSolver::leave().
recompute test vector.
Definition at line 301 of file enter.cpp.
References DIdxSet::addIdx(), IdxSet::clear(), UpdateVector::delta(), SPxBasis::desc(), SPxSolver::hyperPricingEnter, UpdateVector::idx(), IdxSet::index(), SPxSolver::infeasibilitiesCo, SPxSolver::isBasic(), SPxSolver::isInfeasibleCo, SPxSolver::leavetol(), SPxSolver::m_pricingViolCo, SPxSolver::m_pricingViolCoUpToDate, SPxPricer::NOT_VIOLATED, SPxSolver::remainingRoundsEnterCo, SSVectorBase< R >::setup(), IdxSet::size(), SPxSolver::sparsePricingEnterCo, SPxBasis::Desc::status(), SPxSolver::test(), SPxSolver::thePvec, SPxSolver::theTest, SPxSolver::updateViolsCo, and SPxPricer::VIOLATED.
Referenced by SPxSolver::enter().
current objective value.
- Returns
- Objective value of the current solution vector (see getPrimal()).
Definition at line 863 of file spxsolver.cpp.
References SPxSolver::coPrhs(), SPxSolver::coPvec(), SPxSolver::fRhs(), SPxSolver::fVec(), soplex::infinity, SPxSolver::isInitialized(), SPxSolver::LEAVE, SPxSolver::nonbasicValue(), SPxSolver::rep(), SPxSolver::ROW, SPxLPBase< Real >::spxSense(), and SPxSolver::type().
Referenced by SPxSolver::computeDualfarkas4Col(), SPxSolver::computeDualfarkas4Row(), SPxSolver::computePrimalray4Col(), SPxSolver::computePrimalray4Row(), SPxSolver::getResult(), SPxSolver::printDisplayLine(), SPxFastRT::selectLeave(), SPxSolver::solve(), and SPxSolver::terminate().
converts VarStatus to basis status for columns
Definition at line 1646 of file spxsolver.cpp.
References SPxSolver::BASIC, SPxBasis::dualColStatus(), SPxSolver::FIXED, soplex::infinity, SPxLPBase< Real >::lower(), SPxLPBase< Real >::maxObj(), MSG_ERROR, SPxSolver::ON_LOWER, SPxSolver::ON_UPPER, SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxLPBase< Real >::upper(), and SPxSolver::ZERO.
Referenced by SPxSolver::setBasis().
converts VarStatus to basis status for rows
Definition at line 1587 of file spxsolver.cpp.
References SPxSolver::BASIC, SPxBasis::dualRowStatus(), SPxSolver::FIXED, soplex::infinity, SPxLPBase< Real >::lhs(), MSG_ERROR, SPxSolver::ON_LOWER, SPxSolver::ON_UPPER, SPxBasis::Desc::P_FIXED, SPxBasis::Desc::P_FREE, SPxBasis::Desc::P_ON_LOWER, SPxBasis::Desc::P_ON_UPPER, SPxLPBase< Real >::rhs(), and SPxSolver::ZERO.
Referenced by SPxSolver::setBasis().
const SVector& vector |
( |
int |
i | ) |
const |
i 'th vector.
- Returns
- a reference to the
i 'th, 0 <= i < coDim(), vector of the loaded LP (with respect to the chosen representation).
Definition at line 1018 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::computeFrhs(), SPxSolver::computeFrhs1(), SPxSolver::computeFrhsXtra(), SPxSolver::computePvec(), SPxSteepPR::entered4(), SPxBoundFlippingRT::flipAndUpdate(), SPxWeightST::generate(), SPxBoundFlippingRT::getData(), SPxBasis::loadDesc(), SPxBasis::loadMatrixVecs(), SPxFastRT::maxReEnter(), SPxFastRT::minReEnter(), SPxBasis::removedCol(), SPxBasis::removedRow(), SPxHarrisRT::selectEnter(), SPxSteepPR::selectEnter(), SPxBoundFlippingRT::selectEnter(), and SPxSteepPR::setupWeights().
vector associated to p_id .
- Returns
- Returns a reference to the vector of the loaded LP corresponding to
id (with respect to the chosen representation). If p_id is an id, a vector of the constraint matrix is returned, otherwise the corresponding unit vector (of the slack variable or bound inequality) is returned.
- Todo:
- The implementation does not exactly look like it will do what is promised in the describtion.
Definition at line 1049 of file spxsolver.h.
bool writeBasisFile |
( |
const char * |
filename, |
|
|
const NameSet * |
rowNames, |
|
|
const NameSet * |
colNames, |
|
|
const bool |
cpxFormat = false |
|
) |
| const |
|
virtual |
bool writeState |
( |
const char * |
filename, |
|
|
const NameSet * |
rowNames = NULL , |
|
|
const NameSet * |
colNames = NULL , |
|
|
const bool |
cpxFormat = false |
|
) |
| const |
|
virtual |
Write current LP, basis, and parameter settings. LP is written in MPS format to "\p filename".mps, basis is written in "\p filename".bas, and parameters are written to "\p filename".set. If rowNames and colNames are NULL , default names are used for the constraints and variables.
Definition at line 31 of file spxwritestate.cpp.
References SPxSolver::basis(), SPxSolver::COLUMN, SPxSolver::epsilon(), SPxSolver::feastol(), SPxBasis::getMaxUpdates(), soplex::infinity, SPxSolver::opttol(), SPxSolver::pricer(), SPxSolver::ratiotester(), SPxSolver::rep(), SOPLEX_SUBVERSION, SOPLEX_VERSION, SPxSolver::writeBasisFile(), and SPxLPBase< Real >::writeMPS().
Referenced by SoPlexLegacy::writeState().
when 3 systems are to be solved at a time; typically reserved for bound flipping ratio test (basic solution will be modified!)
Definition at line 255 of file spxsolver.h.
Referenced by SPxSolver::enter().
true if hyper sparse pricing is turned on in the entering Simplex
Definition at line 378 of file spxsolver.h.
Referenced by SPxSolver::computeCoTest(), SPxSolver::computeTest(), SPxSolver::hyperPricing(), SPxDevexPR::init(), SPxSolver::operator=(), SPxDevexPR::selectEnterX(), SPxSteepPR::selectEnterX(), SPxSteepPR::setType(), SPxSolver::solve(), SPxSolver::updateCoTest(), and SPxSolver::updateTest().
For the leaving Simplex algorithm this vector contains the indices of infeasible basic variables; for the entering Simplex algorithm this vector contains the indices of infeasible slack variables.
Definition at line 357 of file spxsolver.h.
Referenced by SPxDevexPR::buildBestPriceVectorEnterDim(), SPxSteepPR::buildBestPriceVectorEnterDim(), SPxDevexPR::buildBestPriceVectorLeave(), SPxSteepPR::buildBestPriceVectorLeave(), SPxSolver::clear(), SPxSolver::computeCoTest(), SPxSolver::computeFtest(), SPxSolver::init(), SPxSolver::operator=(), SPxDantzigPR::selectEnterSparseDim(), SPxDevexPR::selectEnterSparseDim(), SPxSteepPR::selectEnterSparseDim(), SPxDantzigPR::selectLeaveSparse(), SPxDevexPR::selectLeaveSparse(), SPxSteepPR::selectLeaveSparse(), SPxSolver::solve(), SPxSolver::updateCoTest(), and SPxSolver::updateFtest().
For the entering Simplex algorithm these vectors contains the indices of infeasible basic variables.
Definition at line 360 of file spxsolver.h.
Referenced by SPxDevexPR::buildBestPriceVectorEnterCoDim(), SPxSteepPR::buildBestPriceVectorEnterCoDim(), SPxSolver::clear(), SPxSolver::computeTest(), SPxSolver::init(), SPxSolver::operator=(), SPxDantzigPR::selectEnterSparseCoDim(), SPxDevexPR::selectEnterSparseCoDim(), SPxSteepPR::selectEnterSparseCoDim(), SPxSolver::solve(), and SPxSolver::updateTest().
0: index not violated, 1: index violated, 2: index violated and among candidate list
Binary vectors to store whether basic indices are infeasible the i-th entry equals false, if the i-th basic variable is not infeasible the i-th entry equals true, if the i-th basic variable is infeasible
Definition at line 370 of file spxsolver.h.
Referenced by SPxDevexPR::buildBestPriceVectorEnterDim(), SPxSteepPR::buildBestPriceVectorEnterDim(), SPxDevexPR::buildBestPriceVectorLeave(), SPxSteepPR::buildBestPriceVectorLeave(), SPxSolver::clear(), SPxSolver::computeCoTest(), SPxSolver::computeFtest(), SPxSolver::init(), SPxSolver::operator=(), SPxDevexPR::selectEnterHyperDim(), SPxSteepPR::selectEnterHyperDim(), SPxDantzigPR::selectEnterSparseDim(), SPxDevexPR::selectEnterSparseDim(), SPxSteepPR::selectEnterSparseDim(), SPxDevexPR::selectLeaveHyper(), SPxSteepPR::selectLeaveHyper(), SPxDantzigPR::selectLeaveSparse(), SPxDevexPR::selectLeaveSparse(), SPxSteepPR::selectLeaveSparse(), SPxSolver::solve(), SPxSolver::ungetEnterVal(), SPxSolver::updateCoTest(), and SPxSolver::updateFtest().
0: index not violated, 1: index violated, 2: index violated and among candidate list
Definition at line 371 of file spxsolver.h.
Referenced by SPxDevexPR::buildBestPriceVectorEnterCoDim(), SPxSteepPR::buildBestPriceVectorEnterCoDim(), SPxSolver::clear(), SPxSolver::computeTest(), SPxSolver::init(), SPxSolver::operator=(), SPxDevexPR::selectEnterHyperCoDim(), SPxSteepPR::selectEnterHyperCoDim(), SPxDantzigPR::selectEnterSparseCoDim(), SPxDevexPR::selectEnterSparseCoDim(), SPxSteepPR::selectEnterSparseCoDim(), SPxSolver::solve(), SPxSolver::ungetEnterVal(), and SPxSolver::updateTest().
bool m_nonbasicValueUpToDate |
|
private |
bool m_pricingViolCoUpToDate |
|
private |
bool m_pricingViolUpToDate |
|
private |
int remainingRoundsEnterCo |
when 3 systems are to be solved at a time; typically reserved for bound flipping ratio test (basic solution will be modified!)
Definition at line 251 of file spxsolver.h.
Referenced by SPxSolver::leave().
bool sparsePricingEnterCo |
message handler
Definition at line 384 of file spxsolver.h.
Referenced by SPxSolver::computeCoTest(), SPxSolver::computeFrhs2(), SPxSolver::computeFtest(), SPxSolver::computeTest(), SPxSolver::enter(), SPxSolver::factorize(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::leave(), SPxBasis::load(), SPxSolver::precisionReached(), SPxSolver::printDisplayLine(), SPxAutoPR::selectEnter(), SPxDevexPR::selectEnter(), SPxSteepPR::selectEnter(), SPxAutoPR::selectLeave(), SPxDevexPR::selectLeave(), SPxSteepPR::selectLeave(), SPxSolver::setSolver(), SPxHybridPR::setType(), SPxSolver::setType(), SPxSteepPR::setupWeights(), SPxSolver::solve(), SPxSolver::terminate(), SPxSolver::testBounds(), SPxSolver::testVecs(), and SPxSolver::unShift().
Definition at line 312 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::enter(), SPxSolver::factorize(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::init(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::reinitializeVecs(), SPxSolver::SPxSolver(), SPxSolver::terminate(), and SPxSolver::testVecs().
Definition at line 313 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::clearUpdateVecs(), SPxSolver::coTest(), SPxSolver::doPupdate(), SPxSolver::enter(), SPxSolver::factorize(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals2(), SPxSolver::init(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::maxInfeas(), SPxSolver::noViols(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::reinitializeVecs(), SPxSolver::setupPupdate(), SPxSolver::shiftPvec(), SPxSolver::SPxSolver(), SPxSolver::terminate(), SPxSolver::testBounds(), SPxSolver::testVecs(), SPxSolver::unShift(), and SPxSolver::updateCoTest().
Definition at line 327 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::clear(), SPxSolver::computeCoTest(), SPxSolver::computeFtest(), SPxSolver::getEnterVals(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::rejectEnter(), SPxSolver::solve(), SPxSolver::testVecs(), SPxSolver::ungetEnterVal(), SPxSolver::updateCoTest(), and SPxSolver::updateFtest().
const SVSet* thecovectors |
|
protected |
Definition at line 309 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::computeFrhs(), SPxSolver::computeFrhs1(), SPxSolver::computeFrhsXtra(), SPxSolver::enter(), SPxSolver::factorize(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::init(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::reinitializeVecs(), SPxSolver::SPxSolver(), SPxSolver::terminate(), SPxSolver::testVecs(), and SPxSolver::ungetEnterVal().
Definition at line 310 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::clearUpdateVecs(), SPxSolver::computeFtest(), SPxSolver::enter(), SPxSolver::factorize(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::init(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::maxInfeas(), SPxSolver::noViols(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::reinitializeVecs(), SPxSolver::shiftFvec(), SPxSolver::SPxSolver(), SPxSolver::terminate(), SPxSolver::testBounds(), SPxSolver::testVecs(), SPxSolver::unShift(), and SPxSolver::updateFtest().
Lower Basic Feasibility bound.
Definition at line 307 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::computeFtest(), SPxSolver::enter(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::maxInfeas(), SPxSolver::noViols(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::setEnterBound4Col(), SPxSolver::setEnterBound4Row(), SPxSolver::setLeaveBound4Col(), SPxSolver::setLeaveBound4Row(), SPxSolver::shiftFvec(), SPxSolver::testBounds(), SPxSolver::unShift(), and SPxSolver::updateFtest().
Lower Column Feasibility bound.
Definition at line 299 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::changeLowerStatus(), SPxSolver::changeUpperStatus(), SPxSolver::clear(), SPxSolver::computeLeaveCoPrhs4Col(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::nonbasicValue(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::rejectLeave(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SPxSolver::setEnterBound4Col(), SPxSolver::setPrimalBounds(), SPxSolver::SPxSolver(), SPxSolver::ungetEnterVal(), and SPxSolver::unShift().
Lower Row Feasibility bound.
Definition at line 297 of file spxsolver.h.
Referenced by SPxSolver::changeLhsStatus(), SPxSolver::changeRhsStatus(), SPxSolver::clear(), SPxSolver::computeLeaveCoPrhs4Row(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::nonbasicValue(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::rejectLeave(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SPxSolver::setEnterBound4Row(), SPxSolver::setPrimalBounds(), SPxSolver::SPxSolver(), SPxSolver::ungetEnterVal(), and SPxSolver::unShift().
Definition at line 340 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::getDualNorms(), SPxSolver::getNdualNorms(), SPxSolver::init(), SPxSolver::initRep(), SPxSolver::loadLP(), SPxSolver::operator=(), SPxSolver::precisionReached(), SPxSolver::read(), SPxSolver::reLoad(), SPxSolver::setDualNorms(), SPxSolver::setPricer(), SPxSolver::solve(), SPxSolver::SPxSolver(), and SPxSolver::~SPxSolver().
Definition at line 314 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::clearUpdateVecs(), SPxSolver::computePvec(), SPxSolver::doPupdate(), SPxSolver::enter(), SPxSolver::getLeaveVals2(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::maxInfeas(), SPxSolver::noViols(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::setupPupdate(), SPxSolver::shiftPvec(), SPxSolver::SPxSolver(), SPxSolver::test(), SPxSolver::testBounds(), SPxSolver::unShift(), and SPxSolver::updateTest().
Definition at line 341 of file spxsolver.h.
Referenced by SPxSolver::enter(), SPxSolver::init(), SPxSolver::leave(), SPxSolver::loadLP(), SPxSolver::operator=(), SPxSolver::read(), SPxSolver::reLoad(), SPxSolver::setTester(), SPxSolver::solve(), SPxSolver::SPxSolver(), and SPxSolver::~SPxSolver().
sum of all shifts applied to any bound.
Definition at line 242 of file spxsolver.h.
Referenced by SPxSolver::changeLhsStatus(), SPxSolver::changeLowerStatus(), SPxSolver::changeRhsStatus(), SPxSolver::changeUpperStatus(), SPxBoundFlippingRT::getData(), SPxSolver::init(), SPxSolver::leave(), SPxFastRT::maxReEnter(), SPxFastRT::minReEnter(), SPxSolver::operator=(), SPxSolver::perturbMax(), SPxSolver::perturbMaxLeave(), SPxSolver::perturbMin(), SPxSolver::perturbMinLeave(), SPxSolver::reinitializeVecs(), and SPxSolver::unShift().
Definition at line 328 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::clear(), SPxSolver::computeTest(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxSolver::getEnterVals(), SPxSolver::isConsistent(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::rejectEnter(), SPxSolver::solve(), SPxSolver::testVecs(), SPxSolver::ungetEnterVal(), and SPxSolver::updateTest().
Upper Basic Feasibility bound.
In entering Simplex algorithm, the ratio test must ensure that all basic variables remain within their feasibility bounds. To give fast acces to them, the bounds of basic variables are copied into the following two vectors.
Definition at line 306 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::computeFtest(), SPxSolver::enter(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::maxInfeas(), SPxSolver::noViols(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::setEnterBound4Col(), SPxSolver::setEnterBound4Row(), SPxSolver::setLeaveBound4Col(), SPxSolver::setLeaveBound4Row(), SPxSolver::shiftFvec(), SPxSolver::testBounds(), SPxSolver::unShift(), and SPxSolver::updateFtest().
Upper Column Feasibility bound.
Definition at line 298 of file spxsolver.h.
Referenced by SPxSolver::addedRows(), SPxSolver::changeLowerStatus(), SPxSolver::changeUpperStatus(), SPxSolver::clear(), SPxSolver::computeLeaveCoPrhs4Col(), SPxSolver::doRemoveCol(), SPxSolver::doRemoveCols(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::nonbasicValue(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::rejectLeave(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SPxSolver::setEnterBound4Col(), SPxSolver::setPrimalBounds(), SPxSolver::SPxSolver(), SPxSolver::ungetEnterVal(), and SPxSolver::unShift().
Upper Row Feasibility bound.
Definition at line 296 of file spxsolver.h.
Referenced by SPxSolver::changeLhsStatus(), SPxSolver::changeRhsStatus(), SPxSolver::clear(), SPxSolver::computeLeaveCoPrhs4Row(), SPxSolver::doRemoveRow(), SPxSolver::doRemoveRows(), SPxBoundFlippingRT::flipAndUpdate(), SPxSolver::getEnterVals(), SPxSolver::getEnterVals2(), SPxSolver::getLeaveVals(), SPxSolver::getLeaveVals2(), SPxSolver::initRep(), SPxSolver::isConsistent(), SPxSolver::leave(), SPxSolver::nonbasicValue(), SPxSolver::operator=(), SPxSolver::reDim(), SPxSolver::rejectLeave(), SPxSolver::setDualColBounds(), SPxSolver::setDualRowBounds(), SPxSolver::setEnterBound4Row(), SPxSolver::setPrimalBounds(), SPxSolver::SPxSolver(), SPxSolver::ungetEnterVal(), and SPxSolver::unShift().
|