Scippy

SoPlex

Sequential object-oriented simPlex

SPxMainSM Class Reference

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>

Classes

class  AggregationPS
 Postsolves aggregation. More...
 
class  DoubletonEquationPS
 Postsolves doubleton equations combined with a column singleton. More...
 
class  DuplicateColsPS
 Postsolves duplicate columns. More...
 
class  DuplicateRowsPS
 Postsolves duplicate rows. More...
 
struct  ElementCompare
 comparator for class SVector::Element: compare nonzeros according to value More...
 
class  EmptyConstraintPS
 Postsolves empty constraints. More...
 
class  FixBoundsPS
 Postsolves variable bound fixing. More...
 
class  FixVariablePS
 Postsolves variable fixing. More...
 
class  ForceConstraintPS
 Postsolves forcing constraints. More...
 
class  FreeColSingletonPS
 Postsolves free column singletons. More...
 
class  FreeConstraintPS
 Postsolves unconstraint constraints. More...
 
class  FreeZeroObjVariablePS
 Postsolves the case when constraints are removed due to a variable with zero objective that is free in one direction. More...
 
struct  IdxCompare
 comparator for class SVector::Element: compare nonzeros according to index More...
 
class  MultiAggregationPS
 Postsolves multi aggregation. More...
 
class  PostStep
 Base class for postsolving operations.Class PostStep is an abstract base class providing the interface for operations in the postsolving process. More...
 
class  RowObjPS
 Postsolves row objectives. More...
 
class  RowSingletonPS
 Postsolves row singletons. More...
 
class  TightenBoundsPS
 Postsolves variable bound tightening from pseudo objective propagation. More...
 
class  ZeroObjColSingletonPS
 Postsolves column singletons with zero objective. More...
 

Public Member Functions

 SPxMainSM (Timer::TYPE ttype=Timer::USER_TIME)
 default constructor. More...
 
 SPxMainSM (const SPxMainSM &old)
 copy constructor. More...
 
SPxMainSMoperator= (const SPxMainSM &rhs)
 assignment operator More...
 
virtual ~SPxMainSM ()
 destructor. More...
 
virtual SPxSimplifierclone () const
 clone function for polymorphism More...
 
virtual Result simplify (SPxLP &lp, Real eps, Real delta)
 simplify SPxLP lp with identical primal and dual feasibility tolerance. More...
 
virtual Result simplify (SPxLP &lp, Real eps, Real ftol, Real otol, bool keepbounds=false)
 simplify SPxLP lp with independent primal and dual feasibility tolerance. More...
 
virtual void unsimplify (const Vector &x, const Vector &y, const Vector &s, const Vector &r, const SPxSolver::VarStatus rows[], const SPxSolver::VarStatus cols[], bool isOptimal=true)
 reconstructs an optimal solution for the unsimplified LP. More...
 
virtual Result result () const
 returns result status of the simplification More...
 
virtual bool isUnsimplified () const
 specifies whether an optimal solution has already been unsimplified. More...
 
virtual const VectorunsimplifiedPrimal ()
 returns a reference to the unsimplified primal solution. More...
 
virtual const VectorunsimplifiedDual ()
 returns a reference to the unsimplified dual solution. More...
 
virtual const VectorunsimplifiedSlacks ()
 returns a reference to the unsimplified slack values. More...
 
virtual const VectorunsimplifiedRedCost ()
 returns a reference to the unsimplified reduced costs. More...
 
virtual SPxSolver::VarStatus getBasisRowStatus (int i) const
 gets basis status for a single row. More...
 
virtual SPxSolver::VarStatus getBasisColStatus (int j) const
 gets basis status for a single column. More...
 
virtual void getBasis (SPxSolver::VarStatus rows[], SPxSolver::VarStatus cols[], const int rowsSize=-1, const int colsSize=-1) const
 get optimal basis. More...
 
- Public Member Functions inherited from SPxSimplifier
virtual const char * getName () const
 get name of simplifier. More...
 
virtual Real timeUsed () const
 
virtual Real getObjoffset () const
 get objective offset. More...
 
virtual void addObjoffset (const Real val)
 add objective offset. More...
 
virtual void setMinReduction (const Real minRed)
 set minimal reduction threshold to continue simplification More...
 
virtual bool isConsistent () const
 consistency check More...
 
 SPxSimplifier (const char *p_name, Timer::TYPE ttype=Timer::USER_TIME)
 constructor More...
 
 SPxSimplifier (const SPxSimplifier &old)
 copy constructor More...
 
SPxSimplifieroperator= (const SPxSimplifier &rhs)
 assignment operator More...
 
virtual ~SPxSimplifier ()
 destructor. More...
 

Protected Member Functions

Real epsZero () const
 
Real feastol () const
 
Real opttol () const
 

Private Types

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, AGGREGATION = 15,
  MULTI_AGG = 16
}
 Different simplification steps. More...
 

Private Member Functions

void handleRowObjectives (SPxLP &lp)
 handle row objectives More...
 
void handleExtremes (SPxLP &lp)
 handles extreme values by setting them to zero or infinity. More...
 
void computeMinMaxResidualActivity (SPxLP &lp, int rowNumber, int colNumber, Real &minAct, Real &maxAct)
 computes the minimum and maximum residual activity for a given row and column. If colNumber is set to -1, then More...
 
void computeMinMaxValues (SPxLP &lp, Real side, Real val, Real minRes, Real maxRes, Real &minVal, Real &maxVal)
 calculate min/max value for the multi aggregated variables More...
 
void trivialHeuristic (SPxLP &lp)
 tries to find good lower bound solutions by applying some trivial heuristics More...
 
bool checkSolution (SPxLP &lp, DVector sol)
 checks a solution for feasibility More...
 
void propagatePseudoobj (SPxLP &lp)
 tightens variable bounds by propagating the pseudo objective function value. More...
 
Result removeEmpty (SPxLP &lp)
 removed empty rows and empty columns. More...
 
Result removeRowSingleton (SPxLP &lp, const SVector &row, int &i)
 remove row singletons. More...
 
Result aggregateVars (SPxLP &lp, const SVector &row, int &i)
 aggregate two variables that appear in an equation. More...
 
Result simplifyRows (SPxLP &lp, bool &again)
 performs simplification steps on the rows of the LP. More...
 
Result simplifyCols (SPxLP &lp, bool &again)
 performs simplification steps on the columns of the LP. More...
 
Result simplifyDual (SPxLP &lp, bool &again)
 performs simplification steps on the LP based on dual concepts. More...
 
Result multiaggregation (SPxLP &lp, bool &again)
 performs multi-aggregations of variable based upon constraint activitu. More...
 
Result duplicateRows (SPxLP &lp, bool &again)
 removes duplicate rows. More...
 
Result duplicateCols (SPxLP &lp, bool &again)
 removes duplicate columns More...
 
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. More...
 
void removeRow (SPxLP &lp, int i)
 removes a row in the LP. More...
 
void removeCol (SPxLP &lp, int j)
 removes a column in the LP. More...
 
int rIdx (int i) const
 returns for a given row index of the (reduced) LP the corresponding row index in the unsimplified LP. More...
 
int cIdx (int j) const
 returns for a given column index of the (reduced) LP the corresponding column index in the unsimplified LP. More...
 

Private Attributes

DVector m_prim
 unsimplified primal solution vector. More...
 
DVector m_slack
 unsimplified slack vector. More...
 
DVector m_dual
 unsimplified dual solution vector. More...
 
DVector m_redCost
 unsimplified reduced cost vector. More...
 
DataArray< SPxSolver::VarStatusm_cBasisStat
 basis status of columns. More...
 
DataArray< SPxSolver::VarStatusm_rBasisStat
 basis status of rows. More...
 
DataArray< int > m_cIdx
 column index vector in original LP. More...
 
DataArray< int > m_rIdx
 row index vector in original LP. More...
 
DataArray< PostStep * > m_hist
 vector of presolve history. More...
 
Array< DSVectorm_classSetRows
 stores parallel classes with non-zero colum entry More...
 
Array< DSVectorm_classSetCols
 stores parallel classes with non-zero row entry More...
 
Array< DSVectorm_dupRows
 arrange duplicate rows using bucket sort w.r.t. their pClass values More...
 
Array< DSVectorm_dupCols
 arrange duplicate columns w.r.t. their pClass values More...
 
bool m_postsolved
 status of postsolving. More...
 
Real m_epsilon
 epsilon zero. More...
 
Real m_feastol
 primal feasibility tolerance. More...
 
Real m_opttol
 dual feasibility tolerance. More...
 
DataArray< int > m_stat
 preprocessing history. More...
 
SPxLP::SPxSense m_thesense
 optimization sense. More...
 
bool m_keepbounds
 keep some bounds (for boundflipping) More...
 
int m_addedcols
 columns added by handleRowObjectives() More...
 
Result m_result
 result of the simplification. More...
 
Real m_cutoffbound
 the cutoff bound that is found by heuristics More...
 
Real m_pseudoobj
 the pseudo objective function value More...
 

Friends

class FreeConstraintPS
 
class EmptyConstraintPS
 
class RowSingletonPS
 
class ForceConstraintPS
 
class FixVariablePS
 
class FixBoundsPS
 
class FreeZeroObjVariablePS
 
class ZeroObjColSingletonPS
 
class FreeColSingletonPS
 
class DoubletonEquationPS
 
class DuplicateRowsPS
 
class DuplicateColsPS
 
class AggregationPS
 

Additional Inherited Members

- Public Types inherited from SPxSimplifier
enum  Result {
  OKAY = 0, INFEASIBLE = 1, DUAL_INFEASIBLE = 2, UNBOUNDED = 3,
  VANISHED = 4
}
 Result of the simplification. More...
 
- Protected Attributes inherited from SPxSimplifier
const char * m_name
 name of the simplifier More...
 
Timerm_timeUsed
 user time used for simplification More...
 
Timer::TYPE m_timerType
 
int m_remRows
 number of removed rows More...
 
int m_remCols
 number of removed columns More...
 
int m_remNzos
 number of removed nonzero coefficients More...
 
int m_chgBnds
 number of changed bounds More...
 
int m_chgLRhs
 number of change right-hand sides More...
 
int m_keptBnds
 number of kept bounds More...
 
int m_keptLRhs
 number of kept left- and right-hand sides More...
 
Real m_objoffset
 objective offset More...
 
Real m_minReduction
 minimal reduction (sum of removed rows/cols) to continue simplification More...
 
SPxOutspxout
 message handler More...
 

Detailed Description

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.

Member Enumeration Documentation

◆ SimpleStep

enum SimpleStep
private

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 
AGGREGATION 
MULTI_AGG 

Definition at line 1280 of file spxmainsm.h.

Constructor & Destructor Documentation

◆ SPxMainSM() [1/2]

default constructor.

Definition at line 1441 of file spxmainsm.h.

Referenced by SPxMainSM::clone().

◆ SPxMainSM() [2/2]

SPxMainSM ( const SPxMainSM old)

copy constructor.

Definition at line 1456 of file spxmainsm.h.

References DataArray< T >::append(), SPxMainSM::m_hist, and DataArray< T >::reSize().

◆ ~SPxMainSM()

virtual ~SPxMainSM ( )
virtual

destructor.

Definition at line 1537 of file spxmainsm.h.

References DataArray< T >::size(), and soplex::spx_free().

Member Function Documentation

◆ aggregateVars()

◆ checkSolution()

◆ cIdx()

int cIdx ( int  j) const
private

returns for a given column index of the (reduced) LP the corresponding column index in the unsimplified LP.

Definition at line 1411 of file spxmainsm.h.

Referenced by SPxMainSM::ForceConstraintPS::execute(), and SPxMainSM::DuplicateColsPS::execute().

◆ clone()

virtual SPxSimplifier* clone ( ) const
virtual

clone function for polymorphism

Implements SPxSimplifier.

Definition at line 1550 of file spxmainsm.h.

References SPxMainSM::SPxMainSM().

◆ computeMinMaxResidualActivity()

void computeMinMaxResidualActivity ( SPxLP lp,
int  rowNumber,
int  colNumber,
Real minAct,
Real maxAct 
)
private

computes the minimum and maximum residual activity for a given row and column. If colNumber is set to -1, then

computes the minimum and maximum residual activity for a given variable

Definition at line 1782 of file spxmainsm.cpp.

References soplex::GE(), soplex::GT(), SVectorBase< R >::index(), soplex::infinity, soplex::LE(), SPxLPBase< R >::lower(), soplex::LT(), SPxLPBase< R >::rowVector(), SVectorBase< R >::size(), SPxLPBase< R >::upper(), and SVectorBase< R >::value().

Referenced by SPxMainSM::multiaggregation().

◆ computeMinMaxValues()

void computeMinMaxValues ( SPxLP lp,
Real  side,
Real  val,
Real  minRes,
Real  maxRes,
Real minVal,
Real maxVal 
)
private

calculate min/max value for the multi aggregated variables

Definition at line 1841 of file spxmainsm.cpp.

References soplex::GE(), soplex::GT(), soplex::infinity, soplex::LE(), and soplex::LT().

Referenced by SPxMainSM::multiaggregation().

◆ duplicateCols()

◆ duplicateRows()

◆ epsZero()

◆ feastol()

◆ fixColumn()

◆ getBasis()

virtual void getBasis ( SPxSolver::VarStatus  rows[],
SPxSolver::VarStatus  cols[],
const int  rowsSize = -1,
const int  colsSize = -1 
) const
virtual

get optimal basis.

Implements SPxSimplifier.

Definition at line 1619 of file spxmainsm.h.

References DataArray< T >::size().

◆ getBasisColStatus()

virtual SPxSolver::VarStatus getBasisColStatus ( int  j) const
virtual

gets basis status for a single column.

Implements SPxSimplifier.

Definition at line 1613 of file spxmainsm.h.

◆ getBasisRowStatus()

virtual SPxSolver::VarStatus getBasisRowStatus ( int  i) const
virtual

gets basis status for a single row.

Implements SPxSimplifier.

Definition at line 1607 of file spxmainsm.h.

◆ handleExtremes()

◆ handleRowObjectives()

◆ isUnsimplified()

virtual bool isUnsimplified ( ) const
virtual

specifies whether an optimal solution has already been unsimplified.

Reimplemented from SPxSimplifier.

Definition at line 1578 of file spxmainsm.h.

References SPxMainSM::m_postsolved.

◆ multiaggregation()

◆ operator=()

◆ opttol()

Real opttol ( ) const
protected

Definition at line 1430 of file spxmainsm.h.

References SPxMainSM::m_opttol.

Referenced by SPxMainSM::simplifyDual().

◆ propagatePseudoobj()

◆ removeCol()

void removeCol ( SPxLP lp,
int  j 
)
private

◆ removeEmpty()

◆ removeRow()

◆ removeRowSingleton()

◆ result()

virtual Result result ( ) const
virtual

returns result status of the simplification

Implements SPxSimplifier.

Definition at line 1572 of file spxmainsm.h.

References SPxMainSM::m_result.

◆ rIdx()

int rIdx ( int  i) const
private

returns for a given row index of the (reduced) LP the corresponding row index in the unsimplified LP.

Definition at line 1406 of file spxmainsm.h.

Referenced by SPxMainSM::FreeZeroObjVariablePS::execute(), and SPxMainSM::DuplicateRowsPS::execute().

◆ simplify() [1/2]

virtual Result simplify ( SPxLP lp,
Real  eps,
Real  delta 
)
virtual

simplify SPxLP lp with identical primal and dual feasibility tolerance.

Implements SPxSimplifier.

Definition at line 1560 of file spxmainsm.h.

References SPxMainSM::PostStep::eps(), and SPxMainSM::unsimplify().

◆ simplify() [2/2]

SPxSimplifier::Result simplify ( SPxLP lp,
Real  eps,
Real  ftol,
Real  otol,
bool  keepbounds = false 
)
virtual

simplify SPxLP lp with independent primal and dual feasibility tolerance.

Implements SPxSimplifier.

Definition at line 4981 of file spxmainsm.cpp.

References SPxMainSM::AGGREGATION, SPxMainSM::DOMINATED_COL, SPxMainSM::DOUBLETON_ROW, SPxMainSM::DUPLICATE_ROW, SPxMainSM::duplicateCols(), SPxMainSM::duplicateRows(), SPxMainSM::EMPTY_COL, SPxMainSM::EMPTY_ROW, SPxMainSM::PostStep::eps(), soplex::EQ(), 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_cutoffbound, 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, SPxSimplifier::m_objoffset, SPxMainSM::m_opttol, SPxMainSM::m_postsolved, SPxMainSM::m_prim, SPxMainSM::m_pseudoobj, 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, MSG_INFO3, SPxMainSM::MULTI_AGG, SPxMainSM::multiaggregation(), SPxLPBase< R >::nCols(), SPxLPBase< R >::nNzos(), SPxLPBase< R >::nRows(), SPxSimplifier::OKAY, SPxMainSM::propagatePseudoobj(), 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, SPxMainSM::trivialHeuristic(), SPxLPBase< R >::upper(), SPxSimplifier::VANISHED, SPxMainSM::WEAKLY_DOMINATED_COL, and SPxMainSM::ZOBJ_SINGLETON_COL.

◆ simplifyCols()

SPxSimplifier::Result simplifyCols ( SPxLP lp,
bool &  again 
)
private

performs simplification steps on the columns of the LP.

Definition at line 3081 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_DEBUG, MSG_INFO2, 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().

◆ simplifyDual()

◆ simplifyRows()

SPxSimplifier::Result simplifyRows ( SPxLP lp,
bool &  again 
)
private

◆ trivialHeuristic()

◆ unsimplifiedDual()

virtual const Vector& unsimplifiedDual ( )
virtual

returns a reference to the unsimplified dual solution.

Implements SPxSimplifier.

Definition at line 1589 of file spxmainsm.h.

References SPxMainSM::m_dual.

◆ unsimplifiedPrimal()

virtual const Vector& unsimplifiedPrimal ( )
virtual

returns a reference to the unsimplified primal solution.

Implements SPxSimplifier.

Definition at line 1583 of file spxmainsm.h.

References SPxMainSM::m_prim.

◆ unsimplifiedRedCost()

virtual const Vector& unsimplifiedRedCost ( )
virtual

returns a reference to the unsimplified reduced costs.

Implements SPxSimplifier.

Definition at line 1601 of file spxmainsm.h.

References SPxMainSM::m_redCost.

◆ unsimplifiedSlacks()

virtual const Vector& unsimplifiedSlacks ( )
virtual

returns a reference to the unsimplified slack values.

Implements SPxSimplifier.

Definition at line 1595 of file spxmainsm.h.

References SPxMainSM::m_slack.

◆ unsimplify()

Friends And Related Function Documentation

◆ AggregationPS

friend class AggregationPS
friend

Definition at line 1273 of file spxmainsm.h.

Referenced by SPxMainSM::aggregateVars(), and SPxMainSM::AggregationPS::clone().

◆ DoubletonEquationPS

friend class DoubletonEquationPS
friend

Definition at line 1270 of file spxmainsm.h.

Referenced by SPxMainSM::DoubletonEquationPS::clone(), and SPxMainSM::simplifyCols().

◆ DuplicateColsPS

friend class DuplicateColsPS
friend

Definition at line 1272 of file spxmainsm.h.

Referenced by SPxMainSM::DuplicateColsPS::clone(), and SPxMainSM::duplicateCols().

◆ DuplicateRowsPS

friend class DuplicateRowsPS
friend

Definition at line 1271 of file spxmainsm.h.

Referenced by SPxMainSM::DuplicateRowsPS::clone(), and SPxMainSM::duplicateRows().

◆ EmptyConstraintPS

◆ FixBoundsPS

◆ FixVariablePS

◆ ForceConstraintPS

friend class ForceConstraintPS
friend

Definition at line 1264 of file spxmainsm.h.

Referenced by SPxMainSM::ForceConstraintPS::clone(), and SPxMainSM::simplifyRows().

◆ FreeColSingletonPS

friend class FreeColSingletonPS
friend

Definition at line 1269 of file spxmainsm.h.

Referenced by SPxMainSM::FreeColSingletonPS::clone(), and SPxMainSM::simplifyCols().

◆ FreeConstraintPS

◆ FreeZeroObjVariablePS

friend class FreeZeroObjVariablePS
friend

◆ RowSingletonPS

friend class RowSingletonPS
friend

◆ ZeroObjColSingletonPS

friend class ZeroObjColSingletonPS
friend

Member Data Documentation

◆ m_addedcols

int m_addedcols
private

◆ m_cBasisStat

DataArray<SPxSolver::VarStatus> m_cBasisStat
private

basis status of columns.

Definition at line 1310 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), and SPxMainSM::unsimplify().

◆ m_cIdx

DataArray<int> m_cIdx
private

column index vector in original LP.

Definition at line 1312 of file spxmainsm.h.

Referenced by SPxMainSM::duplicateCols(), SPxMainSM::operator=(), SPxMainSM::simplify(), and SPxMainSM::unsimplify().

◆ m_classSetCols

Array<DSVector> m_classSetCols
private

stores parallel classes with non-zero row entry

Definition at line 1317 of file spxmainsm.h.

Referenced by SPxMainSM::duplicateCols(), and SPxMainSM::simplify().

◆ m_classSetRows

Array<DSVector> m_classSetRows
private

stores parallel classes with non-zero colum entry

Definition at line 1316 of file spxmainsm.h.

Referenced by SPxMainSM::duplicateRows(), and SPxMainSM::simplify().

◆ m_cutoffbound

Real m_cutoffbound
private

the cutoff bound that is found by heuristics

Definition at line 1331 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::propagatePseudoobj(), SPxMainSM::simplify(), and SPxMainSM::trivialHeuristic().

◆ m_dual

DVector m_dual
private

unsimplified dual solution vector.

Definition at line 1308 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), SPxMainSM::unsimplifiedDual(), and SPxMainSM::unsimplify().

◆ m_dupCols

Array<DSVector> m_dupCols
private

arrange duplicate columns w.r.t. their pClass values

Definition at line 1321 of file spxmainsm.h.

Referenced by SPxMainSM::duplicateCols(), and SPxMainSM::simplify().

◆ m_dupRows

Array<DSVector> m_dupRows
private

arrange duplicate rows using bucket sort w.r.t. their pClass values

Definition at line 1319 of file spxmainsm.h.

Referenced by SPxMainSM::duplicateRows(), and SPxMainSM::simplify().

◆ m_epsilon

Real m_epsilon
private

epsilon zero.

Definition at line 1323 of file spxmainsm.h.

Referenced by SPxMainSM::epsZero(), SPxMainSM::operator=(), SPxMainSM::simplify(), and SPxMainSM::simplifyRows().

◆ m_feastol

Real m_feastol
private

primal feasibility tolerance.

Definition at line 1324 of file spxmainsm.h.

Referenced by SPxMainSM::feastol(), SPxMainSM::operator=(), and SPxMainSM::simplify().

◆ m_hist

◆ m_keepbounds

bool m_keepbounds
private

keep some bounds (for boundflipping)

Definition at line 1328 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), and SPxMainSM::simplifyRows().

◆ m_opttol

Real m_opttol
private

dual feasibility tolerance.

Definition at line 1325 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::opttol(), and SPxMainSM::simplify().

◆ m_postsolved

bool m_postsolved
private

status of postsolving.

Definition at line 1322 of file spxmainsm.h.

Referenced by SPxMainSM::isUnsimplified(), SPxMainSM::operator=(), SPxMainSM::simplify(), and SPxMainSM::unsimplify().

◆ m_prim

DVector m_prim
private

unsimplified primal solution vector.

Definition at line 1306 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), SPxMainSM::unsimplifiedPrimal(), and SPxMainSM::unsimplify().

◆ m_pseudoobj

Real m_pseudoobj
private

the pseudo objective function value

Definition at line 1332 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::propagatePseudoobj(), and SPxMainSM::simplify().

◆ m_rBasisStat

DataArray<SPxSolver::VarStatus> m_rBasisStat
private

basis status of rows.

Definition at line 1311 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), and SPxMainSM::unsimplify().

◆ m_redCost

DVector m_redCost
private

unsimplified reduced cost vector.

Definition at line 1309 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), SPxMainSM::unsimplifiedRedCost(), and SPxMainSM::unsimplify().

◆ m_result

Result m_result
private

result of the simplification.

Definition at line 1330 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::result(), and SPxMainSM::simplify().

◆ m_rIdx

DataArray<int> m_rIdx
private

row index vector in original LP.

Definition at line 1313 of file spxmainsm.h.

Referenced by SPxMainSM::duplicateRows(), SPxMainSM::operator=(), and SPxMainSM::simplify().

◆ m_slack

DVector m_slack
private

unsimplified slack vector.

Definition at line 1307 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), SPxMainSM::unsimplifiedSlacks(), and SPxMainSM::unsimplify().

◆ m_stat

◆ m_thesense

SPxLP::SPxSense m_thesense
private

optimization sense.

Definition at line 1327 of file spxmainsm.h.

Referenced by SPxMainSM::operator=(), SPxMainSM::simplify(), and SPxMainSM::unsimplify().