|
LP simplifier for removing uneccessary row/columns.This SPxSimplifier is mainly based on the paper "Presolving in
linear programming" by E. Andersen and K. Andersen (Mathematical Programming, 1995). It implements all proposed methods and some other preprocessing techniques for removing redundant rows and columns and bounds. Also infeasibility and unboundedness may be detected.
More...
#include <spxmainsm.h>
|
|
| SPxMainSM (Timer::TYPE ttype=Timer::USER_TIME) |
| default constructor.
|
|
| SPxMainSM (const SPxMainSM &old) |
| copy constructor.
|
|
SPxMainSM & | operator= (const SPxMainSM &rhs) |
| assignment operator
|
|
virtual | ~SPxMainSM () |
| destructor.
|
|
virtual SPxSimplifier * | clone () const |
| clone function for polymorphism
|
|
|
virtual Result | simplify (SPxLP &lp, Real eps, Real delta) |
| simplify SPxLP lp with identical primal and dual feasibility tolerance.
|
|
virtual Result | simplify (SPxLP &lp, Real eps, Real ftol, Real otol, bool keepbounds=false) |
| simplify SPxLP lp with independent primal and dual feasibility tolerance.
|
|
virtual void | unsimplify (const Vector &x, const Vector &y, const Vector &s, const Vector &r, const SPxSolver::VarStatus rows[], const SPxSolver::VarStatus cols[]) |
| reconstructs an optimal solution for the unsimplified LP.
|
|
virtual Result | result () const |
| returns result status of the simplification
|
|
virtual bool | isUnsimplified () const |
| specifies whether an optimal solution has already been unsimplified.
|
|
virtual const Vector & | unsimplifiedPrimal () |
| returns a reference to the unsimplified primal solution.
|
|
virtual const Vector & | unsimplifiedDual () |
| returns a reference to the unsimplified dual solution.
|
|
virtual const Vector & | unsimplifiedSlacks () |
| returns a reference to the unsimplified slack values.
|
|
virtual const Vector & | unsimplifiedRedCost () |
| returns a reference to the unsimplified reduced costs.
|
|
virtual SPxSolver::VarStatus | getBasisRowStatus (int i) const |
| gets basis status for a single row.
|
|
virtual SPxSolver::VarStatus | getBasisColStatus (int j) const |
| gets basis status for a single column.
|
|
virtual void | getBasis (SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[], const int rowsSize=-1, const int colsSize=-1) const |
| get optimal basis.
|
|
virtual const char * | getName () const |
| get name of simplifier.
|
|
virtual Real | timeUsed () const |
|
virtual Real | getObjoffset () const |
| get objective offset.
|
|
virtual void | addObjoffset (const Real val) |
| add objective offset.
|
|
virtual void | setMinReduction (const Real minRed) |
| set minimal reduction threshold to continue simplification
|
|
virtual bool | isConsistent () const |
| consistency check
|
|
| SPxSimplifier (const char *p_name, Timer::TYPE ttype=Timer::USER_TIME) |
| constructor
|
|
| SPxSimplifier (const SPxSimplifier &old) |
| copy constructor
|
|
SPxSimplifier & | operator= (const SPxSimplifier &rhs) |
| assignment operator
|
|
virtual | ~SPxSimplifier () |
| destructor.
|
|
|
|
enum | SimpleStep {
EMPTY_ROW = 0,
FREE_ROW = 1,
SINGLETON_ROW = 2,
FORCE_ROW = 3,
EMPTY_COL = 4,
FIX_COL = 5,
FREE_ZOBJ_COL = 6,
ZOBJ_SINGLETON_COL = 7,
DOUBLETON_ROW = 8,
FREE_SINGLETON_COL = 9,
DOMINATED_COL = 10,
WEAKLY_DOMINATED_COL = 11,
DUPLICATE_ROW = 12,
FIX_DUPLICATE_COL = 13,
SUB_DUPLICATE_COL = 14
} |
| Different simplification steps. More...
|
|
|
|
void | handleRowObjectives (SPxLP &lp) |
| handle row objectives
|
|
void | handleExtremes (SPxLP &lp) |
| handles extreme values by setting them to zero or infinity.
|
|
Result | removeEmpty (SPxLP &lp) |
| removed empty rows and empty columns.
|
|
Result | removeRowSingleton (SPxLP &lp, const SVector &row, int &i) |
| remove row singletons.
|
|
Result | simplifyRows (SPxLP &lp, bool &again) |
| performs simplification steps on the rows of the LP.
|
|
Result | simplifyCols (SPxLP &lp, bool &again) |
| performs simplification steps on the columns of the LP.
|
|
Result | simplifyDual (SPxLP &lp, bool &again) |
| performs simplification steps on the LP based on dual concepts.
|
|
Result | duplicateRows (SPxLP &lp, bool &again) |
| removes duplicate rows.
|
|
Result | duplicateCols (SPxLP &lp, bool &again) |
| removes duplicate columns
|
|
void | fixColumn (SPxLP &lp, int i, bool correctIdx=true) |
| handles the fixing of a variable. correctIdx is true iff the index mapping has to be updated.
|
|
void | removeRow (SPxLP &lp, int i) |
| removes a row in the LP.
|
|
void | removeCol (SPxLP &lp, int j) |
| removes a column in the LP.
|
|
int | rIdx (int i) const |
| returns for a given row index of the (reduced) LP the corresponding row index in the unsimplified LP.
|
|
int | cIdx (int j) const |
| returns for a given column index of the (reduced) LP the corresponding column index in the unsimplified LP.
|
|
Real | epsZero () const |
|
Real | feastol () const |
|
Real | opttol () const |
|
LP simplifier for removing uneccessary row/columns.
This SPxSimplifier is mainly based on the paper "Presolving in
linear programming" by E. Andersen and K. Andersen (Mathematical Programming, 1995). It implements all proposed methods and some other preprocessing techniques for removing redundant rows and columns and bounds. Also infeasibility and unboundedness may be detected.
Removed are:
- empty rows / columns
- unconstraint rows
- row singletons
- forcing rows
- zero objective column singletons
- (implied) free column singletons
- doubleton equations combined with a column singleton
- (implicitly) fixed columns
- redundant lhs / rhs
- redundant variable bounds
- variables that are free in one direction
- (weakly) dominated columns
- duplicate rows / columns
Definition at line 60 of file spxmainsm.h.
Different simplification steps.
Enumerator |
---|
EMPTY_ROW |
|
FREE_ROW |
|
SINGLETON_ROW |
|
FORCE_ROW |
|
EMPTY_COL |
|
FIX_COL |
|
FREE_ZOBJ_COL |
|
ZOBJ_SINGLETON_COL |
|
DOUBLETON_ROW |
|
FREE_SINGLETON_COL |
|
DOMINATED_COL |
|
WEAKLY_DOMINATED_COL |
|
DUPLICATE_ROW |
|
FIX_DUPLICATE_COL |
|
SUB_DUPLICATE_COL |
|
Definition at line 1052 of file spxmainsm.h.
removes duplicate columns
Definition at line 3315 of file spxmainsm.cpp.
References ASSERT_WARN, SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeUpper(), SPxLPBase< R >::colVector(), SPxMainSM::DuplicateColsPS, SPxMainSM::epsZero(), soplex::EQrel(), SPxMainSM::feastol(), SPxMainSM::FIX_DUPLICATE_COL, SPxMainSM::FixBoundsPS, SPxMainSM::fixColumn(), soplex::GErel(), SVectorBase< R >::index(), soplex::infinity, soplex::isNotZero(), soplex::isZero(), soplex::LErel(), SPxLPBase< R >::lower(), SPxMainSM::m_cIdx, SPxMainSM::m_classSetCols, SPxMainSM::m_dupCols, SPxMainSM::m_hist, SPxSimplifier::m_minReduction, SPxSimplifier::m_remCols, SPxSimplifier::m_remNzos, SPxMainSM::m_stat, SPxLPBase< R >::maxObj(), MSG_INFO2, MSG_INFO3, SPxLPBase< R >::nCols(), soplex::NErel(), SPxLPBase< R >::nRows(), SPxSimplifier::OKAY, SPxLPBase< R >::removeCols(), SPxMainSM::removeEmpty(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), soplex::spx_free(), SPxSimplifier::spxout, soplex::SPxQuicksort(), SPxMainSM::SUB_DUPLICATE_COL, SPxSimplifier::UNBOUNDED, SPxLPBase< R >::upper(), and SVectorBase< R >::value().
Referenced by SPxMainSM::simplify().
removes duplicate rows.
Definition at line 2961 of file spxmainsm.cpp.
References ASSERT_WARN, SPxLPBase< R >::changeRange(), SPxLPBase< R >::colVector(), SPxMainSM::DUPLICATE_ROW, SPxMainSM::DuplicateRowsPS, SPxMainSM::epsZero(), soplex::EQrel(), SPxMainSM::feastol(), SVectorBase< R >::index(), SPxSimplifier::INFEASIBLE, soplex::infinity, soplex::isNotZero(), SPxLPBase< R >::lhs(), soplex::LTrel(), SPxMainSM::m_classSetRows, SPxMainSM::m_dupRows, SPxMainSM::m_hist, SPxSimplifier::m_minReduction, SPxSimplifier::m_remNzos, SPxSimplifier::m_remRows, SPxMainSM::m_rIdx, SPxMainSM::m_stat, MSG_INFO2, MSG_INFO3, SPxLPBase< R >::nCols(), soplex::NErel(), SPxLPBase< R >::nRows(), SPxSimplifier::OKAY, SPxMainSM::removeEmpty(), SPxLPBase< R >::removeRows(), SPxMainSM::removeRowSingleton(), SPxLPBase< R >::rhs(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), soplex::spx_free(), SPxSimplifier::spxout, soplex::SPxQuicksort(), and SVectorBase< R >::value().
Referenced by SPxMainSM::simplify().
void fixColumn |
( |
SPxLP & |
lp, |
|
|
int |
i, |
|
|
bool |
correctIdx = true |
|
) |
| |
|
private |
handles the fixing of a variable. correctIdx is true iff the index mapping has to be updated.
Definition at line 3691 of file spxmainsm.cpp.
References SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeRhs(), SPxLPBase< R >::colVector(), SPxMainSM::epsZero(), soplex::EQrel(), SPxMainSM::feastol(), SPxMainSM::FixVariablePS, SVectorBase< R >::index(), soplex::infinity, soplex::isNotZero(), soplex::isZero(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), SPxMainSM::m_hist, soplex::maxAbs(), MSG_INFO3, soplex::NE(), SPxLPBase< R >::rhs(), SVectorBase< R >::size(), soplex::spx_alloc(), SPxSimplifier::spxout, SPxLPBase< R >::upper(), and SVectorBase< R >::value().
Referenced by SPxMainSM::duplicateCols(), SPxMainSM::simplifyCols(), and SPxMainSM::simplifyDual().
void handleExtremes |
( |
SPxLP & |
lp | ) |
|
|
private |
handles extreme values by setting them to zero or infinity.
Definition at line 1268 of file spxmainsm.cpp.
References SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeObj(), SPxLPBase< R >::changeRhs(), SPxLPBase< R >::changeUpper(), SPxLPBase< R >::colVector_w(), SPxMainSM::epsZero(), SPxMainSM::feastol(), SPxMainSM::FREE_ROW, SPxMainSM::FreeConstraintPS, SVectorBase< R >::index(), soplex::infinity, SPxLPBase< R >::isConsistent(), soplex::isZero(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), SPxSimplifier::m_chgBnds, SPxSimplifier::m_chgLRhs, SPxMainSM::m_hist, SPxSimplifier::m_remNzos, SPxSimplifier::m_remRows, SPxMainSM::m_stat, MSG_INFO2, MSG_INFO3, MSG_WARNING, SPxLPBase< R >::nCols(), soplex::NE(), SPxLPBase< R >::nRows(), SVectorBase< R >::number(), SPxLPBase< R >::obj(), SVectorBase< R >::remove(), SPxMainSM::removeRow(), SPxLPBase< R >::rhs(), SPxLPBase< R >::rowVector_w(), SVectorBase< R >::size(), soplex::spx_alloc(), soplex::spxAbs(), SPxSimplifier::spxout, SPxLPBase< R >::upper(), and SVectorBase< R >::value().
Referenced by SPxMainSM::simplify().
void handleRowObjectives |
( |
SPxLP & |
lp | ) |
|
|
private |
handle row objectives
Definition at line 1251 of file spxmainsm.cpp.
References SPxLPBase< R >::addCol(), SPxLPBase< R >::changeRange(), SPxLPBase< R >::changeRowObj(), SPxLPBase< R >::lhs(), SPxMainSM::m_addedcols, SPxMainSM::m_hist, SPxLPBase< R >::maxRowObj(), SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SPxLPBase< R >::rhs(), SPxLPBase< R >::rowObj(), and soplex::spx_alloc().
Referenced by SPxMainSM::simplify().
virtual bool isUnsimplified |
( |
| ) |
const |
|
virtual |
assignment operator
Definition at line 1223 of file spxmainsm.h.
References SPxMainSM::m_addedcols, SPxMainSM::m_cBasisStat, SPxMainSM::m_cIdx, SPxMainSM::m_dual, SPxMainSM::m_epsilon, SPxMainSM::m_feastol, SPxMainSM::m_hist, SPxMainSM::m_keepbounds, SPxMainSM::m_opttol, SPxMainSM::m_postsolved, SPxMainSM::m_prim, SPxMainSM::m_rBasisStat, SPxMainSM::m_redCost, SPxMainSM::m_rIdx, SPxMainSM::m_slack, SPxMainSM::m_stat, SPxMainSM::m_thesense, SPxSimplifier::operator=(), and soplex::spx_free().
void removeCol |
( |
SPxLP & |
lp, |
|
|
int |
j |
|
) |
| |
|
private |
removed empty rows and empty columns.
Definition at line 1463 of file spxmainsm.cpp.
References ASSERT_WARN, SPxLPBase< R >::colVector(), SPxMainSM::EMPTY_COL, SPxMainSM::EMPTY_ROW, SPxMainSM::EmptyConstraintPS, SPxMainSM::epsZero(), SPxMainSM::feastol(), SPxMainSM::FixBoundsPS, SPxMainSM::FixVariablePS, soplex::GT(), SPxSimplifier::INFEASIBLE, soplex::infinity, soplex::isZero(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), soplex::LT(), SPxMainSM::m_hist, SPxSimplifier::m_remCols, SPxSimplifier::m_remRows, SPxMainSM::m_stat, SPxLPBase< R >::maxObj(), MSG_INFO2, MSG_INFO3, SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SPxSimplifier::OKAY, SPxMainSM::removeCol(), SPxMainSM::removeRow(), SPxLPBase< R >::rhs(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), SPxSimplifier::spxout, SPxSimplifier::UNBOUNDED, and SPxLPBase< R >::upper().
Referenced by SPxMainSM::duplicateCols(), and SPxMainSM::duplicateRows().
void removeRow |
( |
SPxLP & |
lp, |
|
|
int |
i |
|
) |
| |
|
private |
remove row singletons.
Definition at line 1571 of file spxmainsm.cpp.
References SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeUpper(), SPxMainSM::epsZero(), SPxMainSM::feastol(), soplex::GT(), soplex::GTrel(), SVectorBase< R >::index(), SPxSimplifier::INFEASIBLE, soplex::infinity, soplex::isZero(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), soplex::LT(), soplex::LTrel(), SPxMainSM::m_hist, SPxSimplifier::m_remNzos, SPxSimplifier::m_remRows, SPxMainSM::m_stat, MSG_INFO3, SPxSimplifier::OKAY, SPxMainSM::removeRow(), SPxLPBase< R >::rhs(), SPxMainSM::RowSingletonPS, SPxMainSM::SINGLETON_ROW, SVectorBase< R >::size(), soplex::spx_alloc(), SPxSimplifier::spxout, SPxLPBase< R >::upper(), and SVectorBase< R >::value().
Referenced by SPxMainSM::duplicateRows(), and SPxMainSM::simplifyRows().
virtual Result result |
( |
| ) |
const |
|
virtual |
simplify SPxLP lp with identical primal and dual feasibility tolerance.
Implements SPxSimplifier.
Definition at line 1290 of file spxmainsm.h.
simplify SPxLP lp with independent primal and dual feasibility tolerance.
Implements SPxSimplifier.
Definition at line 3767 of file spxmainsm.cpp.
References SPxMainSM::DOMINATED_COL, SPxMainSM::DOUBLETON_ROW, SPxMainSM::DUPLICATE_ROW, SPxMainSM::duplicateCols(), SPxMainSM::duplicateRows(), SPxMainSM::EMPTY_COL, SPxMainSM::EMPTY_ROW, SPxMainSM::FIX_COL, SPxMainSM::FIX_DUPLICATE_COL, SPxMainSM::FORCE_ROW, SPxMainSM::FREE_ROW, SPxMainSM::FREE_SINGLETON_COL, SPxMainSM::FREE_ZOBJ_COL, SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), soplex::infinity, SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), SPxMainSM::m_addedcols, SPxMainSM::m_cBasisStat, SPxSimplifier::m_chgBnds, SPxSimplifier::m_chgLRhs, SPxMainSM::m_cIdx, SPxMainSM::m_classSetCols, SPxMainSM::m_classSetRows, SPxMainSM::m_dual, SPxMainSM::m_dupCols, SPxMainSM::m_dupRows, SPxMainSM::m_epsilon, SPxMainSM::m_feastol, SPxMainSM::m_hist, SPxMainSM::m_keepbounds, SPxSimplifier::m_keptBnds, SPxSimplifier::m_keptLRhs, SPxMainSM::m_opttol, SPxMainSM::m_postsolved, SPxMainSM::m_prim, SPxMainSM::m_rBasisStat, SPxMainSM::m_redCost, SPxSimplifier::m_remCols, SPxSimplifier::m_remNzos, SPxSimplifier::m_remRows, SPxMainSM::m_result, SPxMainSM::m_rIdx, SPxMainSM::m_slack, SPxMainSM::m_stat, SPxMainSM::m_thesense, SPxSimplifier::m_timeUsed, MSG_INFO1, MSG_INFO2, SPxLPBase< R >::nCols(), SPxLPBase< R >::nNzos(), SPxLPBase< R >::nRows(), SPxSimplifier::OKAY, DVectorBase< R >::reDim(), Timer::reset(), DataArray< T >::reSize(), SPxLPBase< R >::rhs(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SPxMainSM::SINGLETON_ROW, DataArray< T >::size(), soplex::spx_free(), SPxSimplifier::spxout, SPxLPBase< R >::spxout, SPxLPBase< R >::spxSense(), Timer::start(), Timer::stop(), SPxMainSM::SUB_DUPLICATE_COL, SPxLPBase< R >::upper(), SPxSimplifier::VANISHED, SPxMainSM::WEAKLY_DOMINATED_COL, and SPxMainSM::ZOBJ_SINGLETON_COL.
performs simplification steps on the columns of the LP.
Definition at line 2180 of file spxmainsm.cpp.
References ASSERT_WARN, SPxLPBase< R >::changeBounds(), SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeObj(), SPxLPBase< R >::changeRange(), SPxLPBase< R >::changeUpper(), SPxLPBase< R >::colVector(), SPxMainSM::DOUBLETON_ROW, SPxMainSM::DoubletonEquationPS, SPxMainSM::EMPTY_COL, SPxMainSM::epsZero(), soplex::EQrel(), SPxMainSM::feastol(), SPxMainSM::FIX_COL, SPxMainSM::FixBoundsPS, SPxMainSM::fixColumn(), SPxMainSM::FixVariablePS, SPxMainSM::FREE_ROW, SPxMainSM::FREE_SINGLETON_COL, SPxMainSM::FREE_ZOBJ_COL, SPxMainSM::FreeColSingletonPS, SPxMainSM::FreeConstraintPS, SPxMainSM::FreeZeroObjVariablePS, soplex::GT(), soplex::GTrel(), SVectorBase< R >::index(), SPxSimplifier::INFEASIBLE, soplex::infinity, soplex::isNotZero(), soplex::isZero(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), soplex::LT(), soplex::LTrel(), SPxSimplifier::m_chgBnds, SPxMainSM::m_hist, SPxSimplifier::m_minReduction, SPxSimplifier::m_remCols, SPxSimplifier::m_remNzos, SPxSimplifier::m_remRows, SPxMainSM::m_stat, soplex::maxAbs(), SPxLPBase< R >::maxObj(), MSG_INFO2, MSG_INFO3, SPxLPBase< R >::nCols(), soplex::NErel(), SPxLPBase< R >::nRows(), SPxLPBase< R >::obj(), SPxSimplifier::OKAY, SPxMainSM::removeCol(), SPxMainSM::removeRow(), SPxLPBase< R >::rhs(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), SPxSimplifier::spxout, soplex::SPxQuicksort(), SPxSimplifier::UNBOUNDED, SPxLPBase< R >::upper(), SVectorBase< R >::value(), SPxMainSM::ZeroObjColSingletonPS, and SPxMainSM::ZOBJ_SINGLETON_COL.
Referenced by SPxMainSM::simplify().
performs simplification steps on the LP based on dual concepts.
Definition at line 2707 of file spxmainsm.cpp.
References ASSERT_WARN, SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeUpper(), SPxLPBase< R >::colVector(), SPxMainSM::DOMINATED_COL, SPxSimplifier::DUAL_INFEASIBLE, soplex::EQrel(), SPxMainSM::feastol(), SPxMainSM::FIX_COL, SPxMainSM::FixBoundsPS, SPxMainSM::fixColumn(), SPxMainSM::FREE_ROW, SPxMainSM::FreeConstraintPS, soplex::GTrel(), SVectorBase< R >::index(), soplex::infinity, soplex::isNotZero(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), soplex::LTrel(), SPxMainSM::m_hist, SPxSimplifier::m_minReduction, SPxSimplifier::m_remCols, SPxSimplifier::m_remNzos, SPxSimplifier::m_remRows, SPxMainSM::m_stat, SPxLPBase< R >::maxObj(), MSG_INFO2, MSG_INFO3, SPxLPBase< R >::nCols(), SPxLPBase< R >::nRows(), SPxSimplifier::OKAY, SPxMainSM::opttol(), SPxMainSM::removeCol(), SPxMainSM::removeRow(), SPxLPBase< R >::rhs(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), SPxSimplifier::spxout, SPxSimplifier::UNBOUNDED, SPxLPBase< R >::upper(), SVectorBase< R >::value(), and SPxMainSM::WEAKLY_DOMINATED_COL.
Referenced by SPxMainSM::simplify().
performs simplification steps on the rows of the LP.
Definition at line 1644 of file spxmainsm.cpp.
References ASSERT_WARN, SPxLPBase< R >::changeLhs(), SPxLPBase< R >::changeLower(), SPxLPBase< R >::changeRhs(), SPxLPBase< R >::changeUpper(), SPxMainSM::EMPTY_ROW, SPxMainSM::EmptyConstraintPS, Param::epsilon(), SPxMainSM::epsZero(), soplex::EQrel(), SPxMainSM::feastol(), SPxMainSM::FORCE_ROW, SPxMainSM::ForceConstraintPS, SPxMainSM::FREE_ROW, SPxMainSM::FreeConstraintPS, soplex::GErel(), soplex::GT(), soplex::GTrel(), SVectorBase< R >::index(), SPxSimplifier::INFEASIBLE, soplex::infinity, soplex::isNotZero(), soplex::isZero(), soplex::LErel(), SPxLPBase< R >::lhs(), SPxLPBase< R >::lower(), soplex::LT(), soplex::LTrel(), SPxSimplifier::m_chgBnds, SPxSimplifier::m_chgLRhs, SPxMainSM::m_epsilon, SPxMainSM::m_hist, SPxMainSM::m_keepbounds, SPxSimplifier::m_keptBnds, SPxSimplifier::m_keptLRhs, SPxSimplifier::m_minReduction, SPxSimplifier::m_remNzos, SPxSimplifier::m_remRows, SPxMainSM::m_stat, soplex::maxAbs(), MSG_INFO2, MSG_INFO3, MSG_WARNING, soplex::NErel(), SPxLPBase< R >::nRows(), SPxSimplifier::OKAY, SPxMainSM::removeRow(), SPxMainSM::removeRowSingleton(), SPxLPBase< R >::rhs(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), soplex::spx_alloc(), soplex::spxAbs(), SPxSimplifier::spxout, SPxLPBase< R >::upper(), and SVectorBase< R >::value().
Referenced by SPxMainSM::simplify().
virtual const Vector& unsimplifiedDual |
( |
| ) |
|
|
virtual |
virtual const Vector& unsimplifiedPrimal |
( |
| ) |
|
|
virtual |
virtual const Vector& unsimplifiedRedCost |
( |
| ) |
|
|
virtual |
virtual const Vector& unsimplifiedSlacks |
( |
| ) |
|
|
virtual |
reconstructs an optimal solution for the unsimplified LP.
Reimplemented from SPxSimplifier.
Definition at line 3972 of file spxmainsm.cpp.
References SPxSolver::BASIC, VectorBase< R >::dim(), SPxMainSM::epsZero(), SPxSimplifier::getName(), soplex::isZero(), SPxMainSM::m_addedcols, SPxMainSM::m_cBasisStat, SPxMainSM::m_cIdx, SPxMainSM::m_dual, SPxMainSM::m_hist, SPxMainSM::m_postsolved, SPxMainSM::m_prim, SPxMainSM::m_rBasisStat, SPxMainSM::m_redCost, SPxMainSM::m_slack, SPxMainSM::m_thesense, SPxLPBase< Real >::MAXIMIZE, MSG_DEBUG, MSG_INFO1, DVectorBase< R >::reDim(), DataArray< T >::reSize(), DataArray< T >::size(), soplex::spx_free(), and SPxSimplifier::spxout.
vector of presolve history.
Definition at line 1084 of file spxmainsm.h.
Referenced by SPxMainSM::duplicateCols(), SPxMainSM::duplicateRows(), SPxMainSM::fixColumn(), SPxMainSM::handleExtremes(), SPxMainSM::handleRowObjectives(), SPxMainSM::operator=(), SPxMainSM::removeEmpty(), SPxMainSM::removeRowSingleton(), SPxMainSM::simplify(), SPxMainSM::simplifyCols(), SPxMainSM::simplifyDual(), SPxMainSM::simplifyRows(), SPxMainSM::SPxMainSM(), SPxMainSM::unsimplify(), and SPxMainSM::~SPxMainSM().
status of postsolving.
Definition at line 1089 of file spxmainsm.h.
Referenced by SPxMainSM::getBasis(), SPxMainSM::getBasisColStatus(), SPxMainSM::getBasisRowStatus(), SPxMainSM::isUnsimplified(), SPxMainSM::operator=(), SPxMainSM::simplify(), SPxMainSM::unsimplifiedDual(), SPxMainSM::unsimplifiedPrimal(), SPxMainSM::unsimplifiedRedCost(), SPxMainSM::unsimplifiedSlacks(), and SPxMainSM::unsimplify().
|