LP simplification abstract base class. More...
#include <spxsimplifier.h>
Public Member Functions | |
void | setOutstream (SPxOut &newOutstream) |
virtual void | setTolerances (std::shared_ptr< Tolerances > newTolerances) |
set the _tolerances member variable More... | |
const std::shared_ptr< Tolerances > | tolerances () const |
get the _tolerances member variable More... | |
Access / modfication | |
virtual const char * | getName () const |
get name of simplifier. More... | |
virtual R | timeUsed () const |
Simplifying / unsimplifying | |
virtual Result | simplify (SPxLPBase< R > &lp, Real remainingTime, bool keepbounds=false, uint32_t seed=0)=0 |
simplify SPxLP lp More... | |
virtual void | unsimplify (const VectorBase< R > &, const VectorBase< R > &, const VectorBase< R > &, const VectorBase< R > &, const typename SPxSolverBase< R >::VarStatus[], const typename SPxSolverBase< R >::VarStatus[], bool isOptimal=true)=0 |
reconstructs an optimal solution for the unsimplified LP. More... | |
virtual Result | result () const =0 |
returns result status of the simplification More... | |
virtual bool | isUnsimplified () const |
specifies whether an optimal solution has already been unsimplified. More... | |
virtual const VectorBase< R > & | unsimplifiedPrimal ()=0 |
returns a reference to the unsimplified primal solution. More... | |
virtual const VectorBase< R > & | unsimplifiedDual ()=0 |
returns a reference to the unsimplified dual solution. More... | |
virtual const VectorBase< R > & | unsimplifiedSlacks ()=0 |
returns a reference to the unsimplified slack values. More... | |
virtual const VectorBase< R > & | unsimplifiedRedCost ()=0 |
returns a reference to the unsimplified reduced costs. More... | |
virtual SPxSolverBase< R >::VarStatus | getBasisRowStatus (int) const =0 |
gets basis status for a single row. More... | |
virtual SPxSolverBase< R >::VarStatus | getBasisColStatus (int) const =0 |
gets basis status for a single column. More... | |
virtual void | getBasis (typename SPxSolverBase< R >::VarStatus[], typename SPxSolverBase< R >::VarStatus[], const int rowsSize=-1, const int colsSize=-1) const =0 |
get optimal basis. More... | |
virtual R | getObjoffset () const |
get objective offset. More... | |
virtual void | addObjoffset (const R val) |
add objective offset. More... | |
virtual void | setMinReduction (const R minRed) |
set minimal reduction threshold to continue simplification More... | |
Consistency check | |
virtual bool | isConsistent () const |
consistency check More... | |
Protected Attributes | |
Protected Data | |
const char * | m_name |
name of the simplifier More... | |
Timer * | m_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... | |
R | m_objoffset |
objective offset More... | |
R | m_minReduction |
minimal reduction (sum of removed rows/cols) to continue simplification More... | |
SPxOut * | spxout |
message handler More... | |
std::shared_ptr< Tolerances > | _tolerances |
Types | |
enum | Result { OKAY = 0 , INFEASIBLE = 1 , DUAL_INFEASIBLE = 2 , UNBOUNDED = 3 , VANISHED = 4 } |
Result of the simplification. More... | |
SPxSimplifier (const char *p_name, Timer::TYPE ttype=Timer::USER_TIME) | |
constructor More... | |
SPxSimplifier (const SPxSimplifier &old) | |
copy constructor More... | |
SPxSimplifier & | operator= (const SPxSimplifier &rhs) |
assignment operator More... | |
virtual | ~SPxSimplifier () |
destructor. More... | |
virtual SPxSimplifier * | clone () const =0 |
clone function for polymorphism More... | |
LP simplification abstract base class.
Instances of classes derived from SPxSimplifier may be loaded to SoPlex in order to simplify LPs before solving them. SoPlex will call simplify() on itself. Generally any SPxLP can be given to a SPxSimplifier for simplify()ing it. The simplification cannot be undone, but given an primal/dual solution for the simplified SPxLP, the simplifier can reconstruct the primal/dual solution of the unsimplified LP.
Definition at line 51 of file spxsimplifier.h.
enum Result |
Result of the simplification.
Definition at line 92 of file spxsimplifier.h.
|
explicit |
constructor
Definition at line 106 of file spxsimplifier.h.
References TimerFactory::createTimer(), SPxSimplifier< R >::isConsistent(), and SPxSimplifier< R >::m_timeUsed.
SPxSimplifier | ( | const SPxSimplifier< R > & | old | ) |
copy constructor
Definition at line 126 of file spxsimplifier.h.
References TimerFactory::createTimer(), SPxSimplifier< R >::isConsistent(), SPxSimplifier< R >::m_timerType, and SPxSimplifier< R >::m_timeUsed.
|
virtual |
destructor.
Definition at line 168 of file spxsimplifier.h.
References SPxSimplifier< R >::m_name, SPxSimplifier< R >::m_timeUsed, soplex::spx_free(), and Timer::~Timer().
|
virtual |
add objective offset.
Definition at line 239 of file spxsimplifier.h.
References SPxSimplifier< R >::m_objoffset.
Referenced by SPxMainSM< R >::FixVariablePS::FixVariablePS(), SPxMainSM< R >::FreeColSingletonPS::FreeColSingletonPS(), and SPxMainSM< R >::MultiAggregationPS::MultiAggregationPS().
|
pure virtual |
clone function for polymorphism
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
pure virtual |
get optimal basis.
Implemented in Presol< BP >, SPxMainSM< BP >, Presol< R >, and SPxMainSM< R >.
|
pure virtual |
gets basis status for a single column.
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
pure virtual |
gets basis status for a single row.
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
virtual |
get name of simplifier.
Definition at line 182 of file spxsimplifier.h.
References SPxSimplifier< R >::m_name.
|
virtual |
get objective offset.
Definition at line 233 of file spxsimplifier.h.
References SPxSimplifier< R >::m_objoffset.
|
virtual |
consistency check
Definition at line 256 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=(), and SPxSimplifier< R >::SPxSimplifier().
|
virtual |
specifies whether an optimal solution has already been unsimplified.
Reimplemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
Definition at line 206 of file spxsimplifier.h.
SPxSimplifier & operator= | ( | const SPxSimplifier< R > & | rhs | ) |
assignment operator
Definition at line 144 of file spxsimplifier.h.
References SPxSimplifier< R >::isConsistent(), SPxSimplifier< R >::m_chgBnds, SPxSimplifier< R >::m_chgLRhs, SPxSimplifier< R >::m_keptBnds, SPxSimplifier< R >::m_keptLRhs, SPxSimplifier< R >::m_minReduction, SPxSimplifier< R >::m_name, SPxSimplifier< R >::m_objoffset, SPxSimplifier< R >::m_remCols, SPxSimplifier< R >::m_remNzos, SPxSimplifier< R >::m_remRows, SPxSimplifier< R >::m_timerType, SPxSimplifier< R >::m_timeUsed, and SPxSimplifier< R >::spxout.
Referenced by SPxMainSM< R >::operator=().
|
pure virtual |
returns result status of the simplification
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
virtual |
set minimal reduction threshold to continue simplification
Definition at line 245 of file spxsimplifier.h.
References SPxSimplifier< R >::m_minReduction.
void setOutstream | ( | SPxOut & | newOutstream | ) |
Definition at line 262 of file spxsimplifier.h.
References SPxSimplifier< R >::spxout.
|
virtual |
set the _tolerances member variable
Definition at line 268 of file spxsimplifier.h.
|
pure virtual |
simplify SPxLP lp
Implemented in Presol< BP >, SPxMainSM< BP >, Presol< R >, and SPxMainSM< R >.
|
virtual |
Definition at line 186 of file spxsimplifier.h.
References SPxSimplifier< R >::m_timeUsed, and Timer::time().
const std::shared_ptr< Tolerances > tolerances | ( | ) | const |
get the _tolerances member variable
Definition at line 273 of file spxsimplifier.h.
References SPxSimplifier< R >::_tolerances.
Referenced by SPxMainSM< R >::epsZero(), SPxMainSM< R >::feastol(), and SPxMainSM< R >::opttol().
|
pure virtual |
returns a reference to the unsimplified dual solution.
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
pure virtual |
returns a reference to the unsimplified primal solution.
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
pure virtual |
returns a reference to the unsimplified reduced costs.
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
pure virtual |
returns a reference to the unsimplified slack values.
Implemented in SPxMainSM< R >, SPxMainSM< BP >, Presol< R >, and Presol< BP >.
|
pure virtual |
reconstructs an optimal solution for the unsimplified LP.
Implemented in Presol< BP >, SPxMainSM< BP >, Presol< R >, and SPxMainSM< R >.
|
protected |
Definition at line 83 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::tolerances().
|
protected |
number of changed bounds
Definition at line 69 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=().
|
protected |
number of change right-hand sides
Definition at line 71 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=().
|
protected |
number of kept bounds
Definition at line 73 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=().
|
protected |
number of kept left- and right-hand sides
Definition at line 75 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=().
|
protected |
minimal reduction (sum of removed rows/cols) to continue simplification
Definition at line 79 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=(), and SPxSimplifier< R >::setMinReduction().
|
protected |
name of the simplifier
Definition at line 58 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::getName(), SPxSimplifier< R >::operator=(), and SPxSimplifier< R >::~SPxSimplifier().
|
protected |
objective offset
Definition at line 77 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::addObjoffset(), SPxSimplifier< R >::getObjoffset(), and SPxSimplifier< R >::operator=().
|
protected |
number of removed columns
Definition at line 65 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=().
|
protected |
number of removed nonzero coefficients
Definition at line 67 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=().
|
protected |
number of removed rows
Definition at line 63 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=().
|
protected |
Definition at line 61 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=(), and SPxSimplifier< R >::SPxSimplifier().
|
protected |
user time used for simplification
Definition at line 60 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=(), SPxSimplifier< R >::SPxSimplifier(), SPxSimplifier< R >::timeUsed(), and SPxSimplifier< R >::~SPxSimplifier().
|
protected |
message handler
tolerances used by the solver
Definition at line 81 of file spxsimplifier.h.
Referenced by SPxSimplifier< R >::operator=(), and SPxSimplifier< R >::setOutstream().