98 PostStep(
const char* p_name, std::shared_ptr<Tolerances> tols,
int nR = 0,
int nC = 0)
216 ,
m_row(lp.rowVector(_i))
324 R newLo, R newUp, R oldLo, R oldUp, std::shared_ptr<Tolerances> tols)
334 ,
m_obj(lp.spxSense() ==
SPxLPBase<R>::MINIMIZE ? lp.obj(_j) : -lp.obj(_j))
335 ,
m_col(lp.colVector(_j))
412 ,
m_lRhs(lhsFixed ? lp.lhs(_i) : lp.rhs(_i))
413 ,
m_row(lp.rowVector(_i))
414 ,
m_objs(lp.rowVector(_i).size())
416 ,
m_cols(lp.rowVector(_i).size())
425 for(
int k = 0; k <
m_row.size(); ++k)
495 std::shared_ptr<Tolerances> tols,
bool correctIdx =
true)
500 ,
m_obj(lp.spxSense() ==
SPxLPBase<R>::MINIMIZE ? lp.obj(_j) : -lp.obj(_j))
504 ,
m_col(lp.colVector(_j))
557 if(EQrel(lp.
lower(j), lp.
upper(j), this->feastol()))
559 else if(EQrel(val, lp.
lower(j), this->feastol()))
561 else if(EQrel(val, lp.
upper(j), this->feastol()))
625 ,
m_bnd(loFree ? lp.upper(_j) : lp.lower(_j))
626 ,
m_col(col_idx_sorted)
627 ,
m_lRhs(lp.colVector(_j).size())
629 ,
m_rows(lp.colVector(_j).size())
632 for(
int k = 0; k <
m_col.size(); ++k)
634 int r =
m_col.index(k);
704 std::shared_ptr<Tolerances> tols)
713 ,
m_row(lp.rowVector(_i))
770 R slackVal, std::shared_ptr<Tolerances> tols)
776 ,
m_obj(lp.spxSense() ==
SPxLPBase<R>::MINIMIZE ? lp.obj(_j) : -lp.obj(_j))
780 ,
m_row(lp.rowVector(_i))
851 std::shared_ptr<Tolerances> tols)
858 ,
m_jObj(lp.spxSense() ==
SPxLPBase<R>::MINIMIZE ? lp.obj(_j) : -lp.obj(_j))
859 ,
m_kObj(lp.spxSense() ==
SPxLPBase<R>::MINIMIZE ? lp.obj(_k) : -lp.obj(_k))
860 ,
m_aij(lp.colVector(_j).value(0))
871 ,
m_col(lp.colVector(_k))
945 bool isTheLast,
bool isFixedRow, std::shared_ptr<Tolerances> tols,
bool isFirst =
false)
962 R rowScale = scale[_i];
964 for(
int k = 0; k < dupRows.
size(); ++k)
1035 std::shared_ptr<Tolerances> tols,
bool isFirst =
false,
bool isTheLast =
false)
1039 ,
m_loJ(lp.lower(_j))
1040 ,
m_upJ(lp.upper(_j))
1041 ,
m_loK(lp.lower(_k))
1042 ,
m_upK(lp.upper(_k))
1106 std::shared_ptr<Tolerances> tols)
1114 ,
m_obj(lp.spxSense() ==
SPxLPBase<R>::MINIMIZE ? lp.obj(_j) : -lp.obj(_j))
1118 ,
m_row(lp.rowVector(_i))
1119 ,
m_col(lp.colVector(_j))
1186 R constant, std::shared_ptr<Tolerances> tols)
1194 ,
m_obj(lp.spxSense() ==
SPxLPBase<R>::MINIMIZE ? lp.obj(_j) : -lp.obj(_j))
1198 ,
m_row(lp.rowVector(_i))
1199 ,
m_col(lp.colVector(_j))
1258 std::shared_ptr<Tolerances> tols)
1455 return this->
tolerances()->floatingPointFeastol();
1460 return this->
tolerances()->floatingPointOpttol();
1548 bool keepbounds =
false, uint32_t seed = 0);
1608 assert(rowsSize < 0 || rowsSize >=
m_rBasisStat.size());
1609 assert(colsSize < 0 || colsSize >=
m_cBasisStat.size());
1631 this->epsiloncompare = eps;
1637 if(
EQ(e1.
val, e2.
val, this->epsiloncompare))
1670#include "spxmainsm.hpp"
Save arrays of arbitrary types.
Safe arrays of data objects.
Sparse vector nonzero element.
int idx
Index of nonzero element.
R val
Value of nonzero element.
Exception class for things that should NEVER happen.
Saving LPs in a form suitable for SoPlex.
const VectorBase< R > & rhs() const
Returns right hand side vector.
SPxSense spxSense() const
Returns the optimization sense.
const VectorBase< R > & lhs() const
Returns left hand side vector.
SPxSense
Optimization sense.
virtual void removeRow(int i)
Removes i 'th row.
virtual void removeCol(int i)
Removes i 'th column.
const VectorBase< R > & lower() const
Returns (internal and possibly scaled) lower bound vector.
R obj(int i) const
Returns objective value of column i.
int nCols() const
Returns number of columns in LP.
const SVectorBase< R > & rowVector(int i) const
Gets row vector of row i.
const VectorBase< R > & upper() const
Returns upper bound vector.
int nRows() const
Returns number of rows in LP.
const SVectorBase< R > & colVector(int i) const
Returns column vector of column i.
AggregationPS & operator=(const AggregationPS &rhs)
assignment operator
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
AggregationPS(const AggregationPS &old)
copy constructor
AggregationPS(const SPxLPBase< R > &lp, int _i, int _j, R rhs, R oldupper, R oldlower, std::shared_ptr< Tolerances > tols)
virtual PostStep * clone() const
clone function for polymorphism
Postsolves doubleton equations combined with a column singleton.
DoubletonEquationPS(const DoubletonEquationPS &old)
copy constructor
DoubletonEquationPS & operator=(const DoubletonEquationPS &rhs)
assignment operator
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
DoubletonEquationPS(const SPxLPBase< R > &lp, int _j, int _k, int _i, R oldLo, R oldUp, std::shared_ptr< Tolerances > tols)
virtual PostStep * clone() const
clone function for polymorphism
Postsolves duplicate columns.
DuplicateColsPS(const DuplicateColsPS &old)
copy constructor
DuplicateColsPS(const SPxLPBase< R > &lp, int _j, int _k, R scale, DataArray< int > perm, std::shared_ptr< Tolerances > tols, bool isFirst=false, bool isTheLast=false)
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
virtual PostStep * clone() const
clone function for polymorphism
DuplicateColsPS & operator=(const DuplicateColsPS &rhs)
assignment operator
Postsolves duplicate rows.
DataArray< bool > m_isLhsEqualRhs
DSVectorBase< R > m_scale
DuplicateRowsPS(const DuplicateRowsPS &old)
copy constructor
DuplicateRowsPS(const SPxLPBase< R > &lp, int _i, int maxLhsIdx, int minRhsIdx, const DSVectorBase< R > &dupRows, const Array< R > scale, const DataArray< int > perm, const DataArray< bool > isLhsEqualRhs, bool isTheLast, bool isFixedRow, std::shared_ptr< Tolerances > tols, bool isFirst=false)
DSVectorBase< R > m_rowObj
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
DataArray< int > m_rIdxLocalOld
DuplicateRowsPS & operator=(const DuplicateRowsPS &rhs)
assignment operator
virtual PostStep * clone() const
clone function for polymorphism
Postsolves empty constraints.
EmptyConstraintPS(const SPxLPBase< R > &lp, int _i, std::shared_ptr< Tolerances > tols)
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
EmptyConstraintPS & operator=(const EmptyConstraintPS &rhs)
assignment operator
virtual PostStep * clone() const
clone function for polymorphism
EmptyConstraintPS(const EmptyConstraintPS &old)
copy constructor
Postsolves variable bound fixing.
SPxSolverBase< R >::VarStatus m_status
FixBoundsPS(const SPxLPBase< R > &lp, int j, R val, std::shared_ptr< Tolerances > tols)
FixBoundsPS(const FixBoundsPS &old)
copy constructor
FixBoundsPS & operator=(const FixBoundsPS &rhs)
assignment operator
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
virtual PostStep * clone() const
clone function for polymorphism
Postsolves variable fixing.
DSVectorBase< R > m_col
does the index mapping have to be updated in postsolving?
FixVariablePS(const SPxLPBase< R > &lp, SPxMainSM &simplifier, int _j, const R val, std::shared_ptr< Tolerances > tols, bool correctIdx=true)
FixVariablePS(const FixVariablePS &old)
copy constructor
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
FixVariablePS & operator=(const FixVariablePS &rhs)
assignment operator
virtual PostStep * clone() const
clone function for polymorphism
Postsolves forcing constraints.
ForceConstraintPS(const ForceConstraintPS &old)
copy constructor
ForceConstraintPS & operator=(const ForceConstraintPS &rhs)
assignment operator
ForceConstraintPS(const SPxLPBase< R > &lp, int _i, bool lhsFixed, DataArray< bool > &fixCols, Array< R > &lo, Array< R > &up, std::shared_ptr< Tolerances > tols)
DataArray< bool > m_fixed
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
virtual PostStep * clone() const
clone function for polymorphism
Array< DSVectorBase< R > > m_cols
Postsolves free column singletons.
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
FreeColSingletonPS & operator=(const FreeColSingletonPS &rhs)
assignment operator
FreeColSingletonPS(const SPxLPBase< R > &lp, SPxMainSM &simplifier, int _j, int _i, R slackVal, std::shared_ptr< Tolerances > tols)
FreeColSingletonPS(const FreeColSingletonPS &old)
copy constructor
virtual PostStep * clone() const
clone function for polymorphism
Postsolves unconstraint constraints.
FreeConstraintPS(const SPxLPBase< R > &lp, int _i, std::shared_ptr< Tolerances > tols)
FreeConstraintPS(const FreeConstraintPS &old)
copy constructor
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
FreeConstraintPS & operator=(const FreeConstraintPS &rhs)
assignment operator
virtual PostStep * clone() const
clone function for polymorphism
Postsolves the case when constraints are removed due to a variable with zero objective that is free i...
FreeZeroObjVariablePS(const FreeZeroObjVariablePS &old)
copy constructor
FreeZeroObjVariablePS & operator=(const FreeZeroObjVariablePS &rhs)
assignment operator
FreeZeroObjVariablePS(const SPxLPBase< R > &lp, int _j, bool loFree, DSVectorBase< R > col_idx_sorted, std::shared_ptr< Tolerances > tols)
DSVectorBase< R > m_rowObj
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
Array< DSVectorBase< R > > m_rows
virtual PostStep * clone() const
clone function for polymorphism
Postsolves multi aggregation.
MultiAggregationPS(const SPxLPBase< R > &lp, SPxMainSM &simplifier, int _i, int _j, R constant, std::shared_ptr< Tolerances > tols)
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
MultiAggregationPS(const MultiAggregationPS &old)
copy constructor
MultiAggregationPS & operator=(const MultiAggregationPS &rhs)
assignment operator
virtual PostStep * clone() const
clone function for polymorphism
Base class for postsolving operations.
virtual R feastol() const
PostStep(const char *p_name, std::shared_ptr< Tolerances > tols, int nR=0, int nC=0)
constructor.
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const =0
executes the postsolving.
virtual const char * getName() const
get name of simplifying step.
virtual R epsilon() const
std::shared_ptr< Tolerances > _tolerances
0-epsilon of this poststep
virtual bool checkBasisDim(DataArray< typename SPxSolverBase< R >::VarStatus > rows, DataArray< typename SPxSolverBase< R >::VarStatus > cols) const
virtual PostStep * clone() const =0
clone function for polymorphism
const char * m_name
name of the simplifier
PostStep & operator=(const PostStep &)
assignment operator
PostStep(const PostStep &old)
copy constructor.
virtual ~PostStep()
destructor.
Postsolves row objectives.
int m_j
slack column index
RowObjPS(const SPxLPBase< R > &lp, int _i, int _j, std::shared_ptr< Tolerances > tols)
RowObjPS & operator=(const RowObjPS &rhs)
assignment operator
RowObjPS(const RowObjPS &old)
copy constructor
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
virtual PostStep * clone() const
clone function for polymorphism
Postsolves row singletons.
RowSingletonPS(const RowSingletonPS &old)
copy constructor
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
RowSingletonPS & operator=(const RowSingletonPS &rhs)
assignment operator
RowSingletonPS(const SPxLPBase< R > &lp, int _i, int _j, bool strictLo, bool strictUp, R newLo, R newUp, R oldLo, R oldUp, std::shared_ptr< Tolerances > tols)
virtual PostStep * clone() const
clone function for polymorphism
Postsolves variable bound tightening from pseudo objective propagation.
TightenBoundsPS(const TightenBoundsPS &old)
copy constructor
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
TightenBoundsPS & operator=(const TightenBoundsPS &rhs)
assignment operator
TightenBoundsPS(const SPxLPBase< R > &lp, int j, R origupper, R origlower, std::shared_ptr< Tolerances > tols)
virtual PostStep * clone() const
clone function for polymorphism
Postsolves column singletons with zero objective.
virtual void execute(VectorBase< R > &x, VectorBase< R > &y, VectorBase< R > &s, VectorBase< R > &r, DataArray< typename SPxSolverBase< R >::VarStatus > &cBasis, DataArray< typename SPxSolverBase< R >::VarStatus > &rBasis, bool isOptimal) const
ZeroObjColSingletonPS & operator=(const ZeroObjColSingletonPS &rhs)
assignment operator
ZeroObjColSingletonPS(const ZeroObjColSingletonPS &old)
copy constructor
ZeroObjColSingletonPS(const SPxLPBase< R > &lp, const SPxMainSM &, int _j, int _i, std::shared_ptr< Tolerances > tols)
virtual PostStep * clone() const
clone function for polymorphism
LP simplifier for removing uneccessary row/columns.
int cIdx(int j) const
returns for a given column index of the (reduced) LP the corresponding column index in the unsimplifi...
SPxMainSM(Timer::TYPE ttype=Timer::USER_TIME)
void removeRow(SPxLPBase< R > &lp, int i)
removes a row in the LP.
void handleExtremes(SPxLPBase< R > &lp)
handles extreme values by setting them to zero or R(infinity).
void propagatePseudoobj(SPxLPBase< R > &lp)
tightens variable bounds by propagating the pseudo objective function value.
SPxMainSM(const SPxMainSM &old)
copy constructor.
Array< DSVectorBase< R > > m_classSetRows
stores parallel classes with non-zero colum entry
VectorBase< R > m_slack
unsimplified slack VectorBase<R>.
SPxSimplifier< R >::Result simplifyDual(SPxLPBase< R > &lp, bool &again)
performs simplification steps on the LP based on dual concepts.
void fixColumn(SPxLPBase< R > &lp, int i, bool correctIdx=true)
handles the fixing of a variable. correctIdx is true iff the index mapping has to be updated.
virtual ~SPxMainSM()
destructor.
SPxSimplifier< R >::Result duplicateCols(SPxLPBase< R > &lp, bool &again)
removes duplicate columns
SPxSimplifier< R >::Result removeRowSingleton(SPxLPBase< R > &lp, const SVectorBase< R > &row, int &i)
remove row singletons.
SPxSimplifier< R >::Result duplicateRows(SPxLPBase< R > &lp, bool &again)
removes duplicate rows.
void computeMinMaxValues(SPxLPBase< R > &lp, R side, R val, R minRes, R maxRes, R &minVal, R &maxVal)
calculate min/max value for the multi aggregated variables
VectorBase< R > m_dual
unsimplified dual solution VectorBase<R>.
int rIdx(int i) const
returns for a given row index of the (reduced) LP the corresponding row index in the unsimplified LP.
SPxSimplifier< R >::Result multiaggregation(SPxLPBase< R > &lp, bool &again)
performs multi-aggregations of variable based upon constraint activitu.
Array< DSVectorBase< R > > m_dupCols
arrange duplicate columns w.r.t. their pClass values
virtual const VectorBase< R > & unsimplifiedSlacks()
returns a reference to the unsimplified slack values.
R m_cutoffbound
the cutoff bound that is found by heuristics
SPxSimplifier< R >::Result simplifyCols(SPxLPBase< R > &lp, bool &again)
performs simplification steps on the columns of the LP.
void trivialHeuristic(SPxLPBase< R > &lp)
tries to find good lower bound solutions by applying some trivial heuristics
SPxSimplifier< R >::Result m_result
result of the simplification.
virtual const VectorBase< R > & unsimplifiedRedCost()
returns a reference to the unsimplified reduced costs.
VectorBase< R > m_prim
unsimplified primal solution VectorBase<R>.
SPxSimplifier< R >::Result aggregateVars(SPxLPBase< R > &lp, const SVectorBase< R > &row, int &i)
aggregate two variables that appear in an equation.
SPxSimplifier< R >::Result removeEmpty(SPxLPBase< R > &lp)
removed empty rows and empty columns.
Array< DSVectorBase< R > > m_dupRows
arrange duplicate rows using bucket sort w.r.t. their pClass values
bool checkSolution(SPxLPBase< R > &lp, VectorBase< R > sol)
checks a solution for feasibility
Array< DSVectorBase< R > > m_classSetCols
stores parallel classes with non-zero row entry
virtual SPxSolverBase< R >::VarStatus getBasisColStatus(int j) const
gets basis status for a single column.
virtual SPxSimplifier< R >::Result result() const
returns result status of the simplification
Array< std::shared_ptr< PostStep > > m_hist
VectorBase<R> of presolve history.
virtual const VectorBase< R > & unsimplifiedDual()
returns a reference to the unsimplified dual solution.
SPxSimplifier< R >::Result simplifyRows(SPxLPBase< R > &lp, bool &again)
performs simplification steps on the rows of the LP.
DataArray< typename SPxSolverBase< R >::VarStatus > m_rBasisStat
basis status of rows.
virtual SPxSimplifier< R >::Result simplify(SPxLPBase< R > &lp, Real remainingTime, bool keepbounds=false, uint32_t seed=0)
simplify SPxLPBase<R> lp.
DataArray< int > m_stat
preprocessing history.
VectorBase< R > m_redCost
unsimplified reduced cost VectorBase<R>.
DataArray< int > m_cIdx
column index VectorBase<R> in original LP.
int m_addedcols
columns added by handleRowObjectives()
void removeCol(SPxLPBase< R > &lp, int j)
removes a column in the LP.
virtual SPxSolverBase< R >::VarStatus getBasisRowStatus(int i) const
gets basis status for a single row.
bool m_postsolved
status of postsolving.
virtual void getBasis(typename SPxSolverBase< R >::VarStatus rows[], typename SPxSolverBase< R >::VarStatus cols[], const int rowsSize=-1, const int colsSize=-1) const
get optimal basis.
SPxMainSM & operator=(const SPxMainSM &rhs)
assignment operator
void handleRowObjectives(SPxLPBase< R > &lp)
DataArray< int > m_rIdx
row index VectorBase<R> in original LP.
virtual SPxSimplifier< R > * clone() const
clone function for polymorphism
void computeMinMaxResidualActivity(SPxLPBase< R > &lp, int rowNumber, int colNumber, R &minAct, R &maxAct)
computes the minimum and maximum residual activity for a given row and column. If colNumber is set to...
virtual void unsimplify(const VectorBase< R > &x, const VectorBase< R > &y, const VectorBase< R > &s, const VectorBase< R > &r, const typename SPxSolverBase< R >::VarStatus rows[], const typename SPxSolverBase< R >::VarStatus cols[], bool isOptimal=true)
reconstructs an optimal solution for the unsimplified LP.
virtual const VectorBase< R > & unsimplifiedPrimal()
returns a reference to the unsimplified primal solution.
SPxLPBase< R >::SPxSense m_thesense
optimization sense.
virtual bool isUnsimplified() const
specifies whether an optimal solution has already been unsimplified.
bool m_keepbounds
keep some bounds (for boundflipping)
DataArray< typename SPxSolverBase< R >::VarStatus > m_cBasisStat
basis status of columns.
R m_pseudoobj
the pseudo objective function value
LP simplification abstract base class.
virtual void addObjoffset(const R val)
add objective offset.
Result
Result of the simplification.
@ OKAY
simplification could be done
const std::shared_ptr< Tolerances > tolerances() const
get the _tolerances member variable
SPxSimplifier & operator=(const SPxSimplifier &rhs)
assignment operator
Sequential object-oriented SimPlex.
int & index(int n)
Reference to index of n 'th nonzero.
int size() const
Number of used indices.
Exception classes for SoPlex.
Everything should be within this namespace.
SOPLEX_THREADLOCAL const Real infinity
void spx_alloc(T &p, int n=1)
Allocate memory.
Debugging, floating point type and parameter definitions.
LP simplification base class.
comparator for class SVectorBase<R>::Element: compare nonzeros according to value
int operator()(const typename SVectorBase< R >::Element &e1, const typename SVectorBase< R >::Element &e2) const
comparator for class SVectorBase<R>::Element: compare nonzeros according to index
int operator()(const typename SVectorBase< R >::Element &e1, const typename SVectorBase< R >::Element &e2) const