191 << static_cast<const char*>((tp ==
LEAVE)
192 ?
"leaving" :
"entering")
193 <<
" algorithm" << std::endl;)
571 s <<
"Basis is singular (numerical troubles, feastol = " <<
feastol() <<
", opttol = " <<
opttol()
607 MSG_DEBUG(std::cout <<
"DSOLVE21 fVec: " << ftmp.
length() << std::endl;)
619 MSG_DEBUG(std::cout <<
"DSOLVE23 coPvec: " << ctmp.
length() << std::endl;)
631 MSG_DEBUG(std::cout <<
"DSOLVE24 pVec: " << ptmp.
length() << std::endl;)
658 #ifdef ENABLE_ADDITIONAL_CHECKS 680 for(
int i = 0; i <
dim(); i++)
695 for(
int i = 0; i <
dim(); i++)
699 else if((*
theCoPvec)[i] < (*theCoLbound)[i])
703 for(
int i = 0; i <
coDim(); i++)
705 if((*
thePvec)[i] > (*theUbound)[i])
707 else if((*
thePvec)[i] < (*theLbound)[i])
723 for(
int i = 0; i <
dim(); i++)
736 for(
int i = 0; i <
dim(); i++)
738 if((*
theCoPvec)[i] - (*theCoUbound)[i] > tol)
745 for(
int i = 0; i <
coDim(); i++)
747 if((*
thePvec)[i] - (*theUbound)[i] > tol)
750 if((*
theLbound)[i] - (*thePvec)[i] > tol)
764 #ifndef ENABLE_ADDITIONAL_CHECKS 776 for(i =
nCols() - 1; i >= 0; --i)
799 for(i =
nRows() - 1; i >= 0; --i)
824 for(i =
nCols() - 1; i >= 0; --i)
846 for(i =
nRows() - 1; i >= 0; --i)
873 for(i =
nCols() - 1; i >= 0; --i)
895 for(i =
nRows() - 1; i >= 0; --i)
918 #ifdef ENABLE_ADDITIONAL_CHECKS 923 <<
", correct nonbasic value: " << val
969 <<
": updated objValue: " << objChange
1515 #ifdef ENABLE_CONSISTENCY_CHECKS 1574 reinterpret_cast<const SVSet*>(static_cast<const LPRowSet*>(
this))
1576 reinterpret_cast<const SVSet*
>(
static_cast<const LPColSet*
>(
this))
1593 != reinterpret_cast<const SVSet*>(static_cast<const LPColSet*>(
this))
1595 != reinterpret_cast<const SVSet*>(static_cast<const LPRowSet*>(
this))
1739 MSG_ERROR(std::cerr <<
"ESOLVE26 ERROR: unknown basis status (" << stat <<
")" 1761 rstat =
lhs(row) <
rhs(row)
1768 rstat =
lhs(row) <
rhs(row)
1806 MSG_ERROR(std::cerr <<
"ESOLVE27 ERROR: unknown VarStatus (" <<
int(stat) <<
")" 1824 else if(
maxObj(col) > 0.0)
1880 MSG_ERROR(std::cerr <<
"ESOLVE28 ERROR: unknown VarStatus (" <<
int(stat) <<
")" 1890 assert(0 <= row && row <
nRows());
1896 assert(0 <= col && col <
nCols());
1901 const int colsSize)
const 1906 assert(rowsSize < 0 || rowsSize >=
nRows());
1907 assert(colsSize < 0 || colsSize >=
nCols());
1910 for(i =
nCols() - 1; i >= 0; --i)
1914 for(i =
nRows() - 1; i >= 0; --i)
1930 for(
int row =
nRows() - 1; row >= 0; --row)
1935 else if(p_rows[row] ==
BASIC)
1949 for(
int col =
nCols() - 1; col >= 0; --col)
1954 else if(p_cols[col] ==
BASIC)
1968 if(basisdim !=
dim())
1983 for(i = 0; i <
nRows(); i++)
1986 for(i = 0; i <
nCols(); i++)
1999 int numDegenerate = 0;
2000 Real degeneracyLevel = 0;
2006 for(
int i = 0; i <
nCols(); ++i)
2015 degeneracyLevel =
Real(numDegenerate) /
nCols();
2021 degeneracyLevel = degenVars /
nRows();
2028 for(
int i = 0; i <
nCols(); i++)
2048 degeneracyLevel = degenVars /
nCols();
2055 degeneracyLevel = degenVars /
nRows();
2059 return degeneracyLevel;
2074 assert(nnormsRow ==
dim());
2081 assert(nnormsRow ==
coDim());
2082 assert(nnormsCol ==
dim());
2100 assert(nnormsRow ==
dim());
2102 for(
int i = 0; i < nnormsRow; ++i)
2110 assert(nnormsCol ==
dim());
2111 assert(nnormsRow ==
coDim());
2113 for(
int i = 0; i < nnormsRow; ++i)
2116 for(
int i = 0; i < nnormsCol; ++i)
2134 for(
int i = 0; i < nnormsRow; ++i)
2146 for(
int i = 0; i < nnormsRow; ++i)
2149 for(
int i = 0; i < nnormsCol; ++i)
2162 assert(ncols ==
nCols() || (ncols == 0 && intInfo == NULL));
2166 for(
int i = 0; i < ncols; ++i)
2227 os <<
"NO_RATIOTESTER";
2243 os <<
"ABORT_CYCLING";
2255 os <<
"ABORT_VALUE";
const VectorBase< Real > & rhs() const
Returns right hand side vector.
void computeFtest()
compute basis feasibility test vector.
Real boundrange
absolute range of all bounds in the problem
void clearUpdate()
clear ,
int iteration() const
returns number of basis changes since last load().
Exception class for things that should NEVER happen.This class is derived from the SoPlex exception b...
Vector & multWithBase(Vector &x) const
Vector-basis product.
SoPlex start basis generation base class.
free variable fixed to zero.
Safe arrays of data objects.Class DataArray provides safe arrays of Data Objects. For general C++ obj...
void reDim(int newdim, const bool setZero=true)
Resets DVectorBase's dimension to newdim.
Basis is not known to be dual nor primal feasible.
void coSolve(Vector &x, const Vector &rhs)
Cosolves linear system with basis matrix.
UnitVectorBase< Real > UnitVector
int enterDegenCand
the number of degenerate candidates in the entering algorithm
primal variable is fixed to both bounds
int nClckSkipsLeft
remaining number of times the clock can be safely skipped
UpdateVector primVec
primal vector
const R & objOffset() const
Returns the objective function value offset.
SPxOut * spxout
message handler
bool isConsistent() const
Consistency check.
int boundflips
number of performed bound flips
bool getDualNorms(int &nnormsRow, int &nnormsCol, Real *norms) const
get dual norms
primal or dual variable is undefined
void invalidate()
invalidates actual basis.
const VectorBase< Real > & upper() const
Returns upper bound vector.
Desc::Status dualColStatus(int i) const
dual Status for the i'th column variable of the loaded LP.
#define DEFAULT_BND_VIOL
default allowed bound violation
void getNdualNorms(int &nnormsRow, int &nnormsCol) const
get number of dual norms
DIdxSet updateViols
store indices that were changed in the previous iteration and must be checked in hyper pricing ...
SPxOut * spxout
message handler
bool sparsePricingLeave
These values enable or disable sparse pricing.
THREADLOCAL const Real infinity
DVector * theUbound
Upper bound for vars.
Pricing pricing() const
return current Pricing.
Real objrange
absolute range of all objective coefficients in the problem
void setBasis(const VarStatus rows[], const VarStatus cols[])
set the lp solver's basis.
UpdateVector addVec
storage for thePvec = &addVec
Abstract pricer base class.
Real leavetol() const
feasibility tolerance maintained by ratio test during LEAVE algorithm.
DVector * theCoUbound
Upper bound for covars.
SSVector * solveVector3
when 3 systems are to be solved at a time; typically reserved for bound flipping ratio test (basic so...
void computeTest()
compute test vector in ENTERing Simplex.
Status getBasis(VarStatus rows[], VarStatus cols[], const int rowsSize=-1, const int colsSize=-1) const
get current basis, and return solver status.
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...
int degenCompIterOffset
the number of iterations performed before the degeneracy level is computed
virtual void reDim()
reset dimensions of vectors according to loaded LP.
Real feastol() const
allowed primal feasibility tolerance.
UpdateVector dualVec
dual vector
void unscaleLPandReloadBasis()
unscales the LP and reloads the basis
virtual void setBasisSolver(SLinSolver *slu, const bool destroy=false)
setup linear solver to use. If destroy is true, slusolver will be freed in destructor.
Type theType
entering or leaving algortihm.
Status & rowStatus(int i)
Representation
LP basis representation.
bool sparsePricingEnterCo
true if sparsePricing is turned on in the entering Simplex
virtual void clear()
clear all data in solver.
virtual void setRep(SPxSolver::Representation)
sets basis representation.
void setType(Type tp)
set LEAVE or ENTER algorithm.
void clear()
clear vector and update vector
VarStatus basisStatusToVarStatus(SPxBasis::Desc::Status stat) const
converts basis status to VarStatus
Abstract ratio test base class.
solve() aborted due to iteration limit.
int leaveDegenCand
the number of degenerate candidates in the leaving algorithm
DecompStatus
Improved dual simplex status.
virtual int terminationIter() const
return iteration limit.
virtual SPxStarter * clone() const =0
clone function for polymorphism
int m_maxCycle
maximum steps before cycling is detected.
DataArray< int > isInfeasible
0: index not violated, 1: index violated, 2: index violated and among candidate list ...
No Problem has been loaded.
bool NE(Real a, Real b, Real eps=Param::epsilon())
returns true iff |a-b| > eps
Real length() const
Floating point approximation of euclidian norm (without any approximation guarantee).
Pricing thePricing
full or partial pricing.
void clear()
removes all indices.
virtual bool noViols(Real tol) const
check for violations above tol and immediately return false w/o checking the remaining values ...
Abstract ratio test base class.Class SPxRatioTester is the virtual base class for computing the ratio...
DVector primRhs
rhs vector for computing the primal vector
SPxLPBase< Real > & operator=(const SPxLPBase< Real > &old)
Assignment operator.
int dim() const
dimension of basis matrix.
Vector & multBaseWith(Vector &x) const
Basis-vector product.
SoPlex start basis generation base class.SPxStarter is the virtual base class for classes generating ...
virtual bool read(std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
Reads LP in LP or MPS format from input stream in.
void clear()
remove all elements.
void reDim(int newdim)
reset dimension
variable fixed to identical bounds.
Real sparsePricingFactor
enable sparse pricing when viols < factor * dim()
virtual SPxRatioTester * clone() const =0
clone function for polymorphism
LP has been proven to be primal infeasible.
void setPrimalBounds()
setup feasibility bounds for entering algorithm
SSVector * solveVector2rhs
when 2 systems are to be solved at a time; typically for speepest edge weights
bool isTimeLimitReached(const bool forceCheck=false)
returns whether current time limit is reached; call to time() may be skipped unless forceCheck is tru...
void setOpttol(Real d)
set parameter opttol.
Real time() const
time spent in last call to method solve().
bool factorized
true iff factor = matrix .
bool freeRatioTester
true iff theratiotester should be freed inside of object
void setRep()
sets descriptor representation according to loaded LP.
Sparse Linear Solver virtual base class.Class SLinSolver provides a class for solving sparse linear s...
Real m_nonbasicValue
nonbasic part of current objective value
virtual Real value()
current objective value.
bool setDualNorms(int nnormsRow, int nnormsCol, Real *norms)
set dual norms
Real lastShift
for forcing feasibility.
virtual void computeLeaveCoPrhs()
compute theCoPrhs for leaving Simplex.
SPxSolver(Type type=LEAVE, Representation rep=ROW, Timer::TYPE ttype=Timer::USER_TIME)
default constructor.
virtual void setTerminationTime(Real time=infinity)
set time limit.
Desc::Status dualRowStatus(int i) const
dual Status for the i'th row variable of the loaded LP.
bool freePricer
true iff thepricer should be freed inside of object
Representation theRep
row or column representation.
dual variable is left free, but unset
Real getDegeneracyLevel(Vector degenvec)
get level of dual degeneracy
Wrapper for different output streams and verbosity levels.
int nRows() const
Returns number of rows in LP.
virtual SPxPricer * clone() const =0
clone function for polymorphism
const Vector & fRhs() const
right-hand side vector for fVec
primal variable is set to its upper bound
UpdateVector & coPvec() const
copricing vector.
int remainingRoundsLeave
number of dense rounds/refactorizations until sparsePricing is enabled again
int m_numCycle
actual number of degenerate steps so far.
int maxIters
maximum allowed iterations.
Real m_entertol
feasibility tolerance maintained during entering algorithm
nothing known about basis status (possibly due to a singular basis in transformed problem) ...
SPxStatus status() const
returns current SPxStatus.
SSVector * solveVector3rhs
when 3 systems are to be solved at a time; typically reserved for bound flipping ratio test (basic so...
UpdateVector * theRPvec
row pricing vector
bool m_pricingViolCoUpToDate
true, if the stored violation in coDim is up to date
void reDim()
resizes internal arrays.
SSVector * coSolveVector3
when 3 systems are to be solved at a time; typically reserved for bound flipping ratio test (basic so...
Status status() const
Status of solution process.
DVector * theLbound
Lower bound for vars.
SPxSense spxSense() const
Returns the optimization sense.
virtual void clear()
unloads LP.
Real m_pricingViol
maximal feasibility violation of current solution
virtual void unInit()
uninitialize data structures.
std::ostream & operator<<(std::ostream &s, const VectorBase< R > &vec)
Output operator.
Real entertol() const
feasibility tolerance maintained by ratio test during ENTER algorithm.
SPxBasis::Desc::Status varStatusToBasisStatusRow(int row, VarStatus stat) const
converts VarStatus to basis status for rows
LP has been solved to optimality.
virtual void setPricer(SPxPricer *pricer, const bool destroy=false)
setup pricer to use. If destroy is true, pricer will be freed in destructor.
Real cumulativeTime() const
cumulative time spent in all calls to method solve().
virtual void setLeaveBounds()
#define MSG_ERROR(x)
Prints out message x if the verbosity level is at least SPxOut::ERROR.
const SVSet * thecovectors
the LP coVectors according to representation
virtual Real terminationTime() const
return time limit.
UpdateVector & fVec() const
feasibility vector.
virtual void reinitializeVecs()
setup all vecs fresh
dual variable is set to its upper bound
solve() aborted due to time limit.
DVector theLBbound
Lower Basic Feasibility bound.
DVector coWeights
store dual norms
primal variable is left free, but unset
Real siderange
absolute range of all side in the problem
const VectorBase< Real > & lhs() const
Returns left hand side vector.
SPxSolver & operator=(const SPxSolver &base)
assignment operator
int primalCount
number of primal iterations
Abstract pricer base class.Class SPxPricer is a pure virtual class defining the interface for pricer ...
void shiftPvec()
Perform initial shifting to optain an feasible or pricable basis.
SSVector * coSolveVector3rhs
when 3 systems are to be solved at a time; typically reserved for bound flipping ratio test (basic so...
variable set to its upper bound.
bool updateNonbasicValue(Real objChange)
virtual void loadBasisSolver(SLinSolver *solver, const bool destroy=false)
sets up linear solver to use.
Dynamic index set.Class DIdxSet provides dynamic IdxSet in the sense, that no restrictions are posed ...
DVector theURbound
Upper Row Feasibility bound.
bool freeStarter
true iff thestarter should be freed inside of object
bool sparsePricingEnter
true if sparsePricing is turned on in the entering Simplex for slack variables
int remainingRoundsEnterCo
virtual void load(SPxSolver *p_solver)
loads LP.
int leaveCycles
the number of degenerate steps during the leaving algorithm
static Timer * createTimer(Timer::TYPE ttype)
create timers and allocate memory for them
const VectorBase< R > & maxRowObj() const
Timer * theTime
time spent in last call to method solve()
virtual void setDelta(Real newDelta)
set allowed bound violation
Status & colStatus(int i)
Real m_leavetol
feasibility tolerance maintained during leaving algorithm
virtual void loadLP(const SPxLP &LP, bool initSlackBasis=true)
copy LP.
variable set to its lower bound.
DVector theUBbound
Upper Basic Feasibility bound.
Preconfigured SoPlex LP solver.
#define MSG_INFO3(spxout, x)
Prints out message x if the verbosity level is at least SPxOut::INFO3.
Real m_pricingViolCo
maximal feasibility violation of current solution in coDim
DVector * theCoLbound
Lower bound for covars.
Real epsilon() const
values are considered to be 0.
Debugging, floating point type and parameter definitions.
virtual void loadBasis(const SPxBasis::Desc &)
set a start basis.
Simplex basis.Consider the linear program as provided from class SPxLP: where , and ...
Set of strings.Class NameSet implements a symbol or name table. It allows to store or remove names (i...
void restoreInitialBasis()
Restores initial basis.
int totalboundflips
total number of bound flips
int polishCount
number of solution polishing iterations
Sequential object-oriented SimPlex.SPxSolver is an LP solver class using the revised Simplex algorith...
bool EQ(Real a, Real b, Real eps=Param::epsilon())
returns true iff |a-b| <= eps
SolutionPolish polishObj
objective of solution polishing
UpdateVector & pVec() const
pricing vector.
virtual void load(SPxSolver *p_solver)
loads LP.
bool fullPerturbation
whether to perturb the entire problem or just the bounds relevant for the current pivot ...
SSVector * solveVector2
when 2 systems are to be solved at a time; typically for speepest edge weights
DVector theLRbound
Lower Row Feasibility bound.
DVector theUCbound
Upper Column Feasibility bound.
virtual void setTerminationIter(int iteration=-1)
set iteration limit.
bool isInitialized() const
has the internal data been initialized?
virtual bool read(std::istream &in, NameSet *rowNames=0, NameSet *colNames=0, DIdxSet *intVars=0)
read LP from input stream.
int decompIterationLimit
the maximum number of iterations before the decomposition simplex is aborted.
Status m_status
status of algorithm.
int dim() const
Dimension of vector.
Starting basis has not been found yet.
Exception base class.This class implements a base class for our SoPlex exceptions We provide a what()...
Everything should be within this namespace.
bool isBasisValid(DataArray< VarStatus > rows, DataArray< VarStatus > cols)
check a given basis for validity.
bool EQrel(Real a, Real b, Real eps=Param::epsilon())
returns true iff |relDiff(a,b)| <= eps
R getEpsilon() const
Returns the non-zero epsilon used.
Real theCumulativeTime
cumulative time spent in all calls to method solve()
virtual void setTester(SPxRatioTester *tester, const bool destroy=false)
setup ratio-tester to use. If destroy is true, tester will be freed in destructor.
Real dualDegenSum
the sum of the dual degeneracy percentage
SSVector * coSolveVector2rhs
when 2 systems are to be solved at a time; typically for speepest edge weights
solve() aborted due to detection of cycling.
Set of LP columns.Class LPColSetBase implements a set of LPColBase%s. Unless for memory limitations...
SPxBasis & operator=(const SPxBasis &rhs)
assignment operator
primal variable is set to its lower bound
bool m_nonbasicValueUpToDate
true, if the stored objValue is up to date
const VectorBase< R > & maxObj() const
Returns objective vector for maximization problem.
Exception class for incorrect usage of interface methods.
void setIntegralityInformation(int ncols, int *intInfo)
pass integrality information about the variables to the solver
DVector theLCbound
Lower Column Feasibility bound.
virtual void clearUpdateVecs(void)
int leaveCount
number of LEAVE iterations
nothing known on loaded problem.
don't perform modifications on optimal basis
VarStatus getBasisRowStatus(int row) const
gets basis status for a single row
virtual void factorize()
factorizes the basis matrix.
bool isConsistent() const
check consistency.
VarStatus getBasisColStatus(int col) const
gets basis status for a single column
void computeFrhs()
compute feasibility vector from scratch.
void clear()
Set vector to 0.
SPxBasis::Desc::Status varStatusToBasisStatusCol(int col, VarStatus stat) const
converts VarStatus to basis status for columns
SPxRatioTester * theratiotester
virtual Real terminationValue() const
return objective limit.
void shiftFvec()
Perform initial shifting to optain an feasible or pricable basis.
dual variable is set to its lower bound
int enterCycles
the number of degenerate steps during the entering algorithm
DSVector primalRay
stores primal ray in case of unboundedness
int size() const
return nr. of elements.
virtual void loadDesc(const Desc &)
sets up basis.
Type type() const
return current Type.
DataArray< int > isInfeasibleCo
0: index not violated, 1: index violated, 2: index violated and among candidate list ...
Real theShift
sum of all shifts applied to any bound.
void unscaleLP()
unscales the lp and clears basis
virtual SPxSolver * solver() const
returns loaded SPxSolver object.
int coDim() const
codimension.
bool hyperPricingEnter
true if hyper sparse pricing is turned on in the entering Simplex
bool isConsistent() const
Consistency check.
#define MSG_INFO1(spxout, x)
Prints out message x if the verbosity level is at least SPxOut::INFO1.
bool isConsistent() const
DSVector dualFarkas
stores dual farkas proof in case of infeasibility
int nCols() const
Returns number of columns in LP.
int enterCount
number of ENTER iterations
const Vector & coPrhs() const
Right-hand side vector for coPvec.
DVector weights
dual pricing norms
int printCondition
printing the current condition number in the log (0 - off, 1 - estimate,exact, 2 - exact)";ratio esti...
Array< UnitVector > unitVecs
array of unit vectors
const SVSet * thevectors
the LP vectors according to representation
DataArray< int > integerVariables
supplementary variable information, 0: continous variable, 1: integer variable
virtual void setEnterBounds()
dual variable has two bounds
Real maxTime
maximum allowed time.
Exception class for status exceptions during the computationsThis class is derived from the SoPlex ex...
void setFeastol(Real d)
set parameter feastol.
virtual void init()
intialize data structures.
bool initialized
true, if all vectors are setup.
virtual void computeEnterCoPrhs()
compute theCoPrhs for entering Simplex.
const SVSetBase< R > * colSet() const
Returns the complete SVSetBase.
bool isZero(Real a, Real eps=Param::epsilon())
returns true iff |a| <= eps
void forceRecompNonbasicValue()
#define MSGinconsistent(name)
bool weightsAreSetup
are the dual norms already set up?
void solve(Vector &x, const Vector &rhs)
void initRep(Representation p_rep)
initialize ROW or COLUMN representation.
SSVector & delta()
update vector , writeable
Real opttol() const
allowed optimality, i.e., dual feasibility tolerance.
bool m_pricingViolUpToDate
true, if the stored violation is up to date
void hyperPricing(bool h)
enable or disable hyper sparse pricing
void setMax(int newmax=1)
sets the maximum number of indices.
Real objLimit
< the number of calls to the method isTimeLimitReached()
const SVSetBase< R > * rowSet() const
Returns the complete SVSet.
virtual void clear()
clears the LP.
void computePvec()
compute entire pVec().
virtual void setTerminationValue(Real value=infinity)
set objective limit.
virtual void load(SPxSolver *lp, bool initSlackBasis=true)
loads the LP lp to the basis.
bool getStartingDecompBasis
flag to indicate whether the simplex is solved to get the starting improved dual simplex basis ...
virtual void unLoad()
unloads the LP from the basis.
virtual void clear()
unloads LP.
Status
Status of a variable.
SSVector * coSolveVector2
when 2 systems are to be solved at a time; typically for speepest edge weights
virtual void reLoad()
reload LP.
void reSize(int newsize)
reset size to newsize.
virtual Real maxInfeas() const
maximal infeasibility of basis
DIdxSet infeasibilitiesCo
DVector dualRhs
rhs vector for computing the dual vector
bool hyperPricingLeave
true if hyper sparse pricing is turned on in the leaving Simplex
const VectorBase< Real > & lower() const
Returns (internal and possibly scaled) lower bound vector.
void setDecompStatus(DecompStatus decomp_stat)
turn on or off the improved dual simplex.
const Desc & desc() const
Representation rep() const
return the current basis representation.
Real nonbasicValue()
Compute part of objective value.
solve() aborted due to objective limit.
columnwise representation.
void spx_free(T &p)
Release memory.
bool isConsistent() const
consistency check.
Basis is singular, numerical troubles?
UpdateVector * theCPvec
column pricing vector
virtual void factorize()
Factorize basis matrix.
Basis is primal feasible.
void resetClockStats()
resets clock average statistics
SPxSolver * solver() const
returns loaded solver.
LP has a usable Basis (maybe LP is changed).
bool matrixIsSetup
true iff the pointers in matrix are set up correctly.
void setBasisStatus(SPxBasis::SPxStatus stat)
set the lp solver's basis status.
void setPricing(Pricing pr)
set FULL or PARTIAL pricing.
LP has been proven to be primal unbounded.
No Problem has been loaded to the basis.
void setDelta(Real d)
set parameter delta, i.e., set feastol and opttol to same value.
Timer::TYPE timerType
type of timer (user or wallclock)
void computeCoTest()
compute coTest vector.
Real primalDegenSum
the sum of the primal degeneracy percentage