19 #ifndef _SPXSIMPLIFIER_H_ 20 #define _SPXSIMPLIFIER_H_ 107 , m_minReduction(1e-4)
117 , m_timerType(old.m_timerType)
118 , m_remRows(old.m_remRows)
119 , m_remCols(old.m_remCols)
120 , m_remNzos(old.m_remNzos)
121 , m_chgBnds(old.m_chgBnds)
122 , m_chgLRhs(old.m_chgLRhs)
123 , m_keptBnds(old.m_keptBnds)
124 , m_keptLRhs(old.m_keptLRhs)
125 , m_objoffset(old.m_objoffset)
126 , m_minReduction(old.m_minReduction)
177 return m_timeUsed->
time();
188 bool keepbounds =
false) = 0;
219 const int colsSize = -1)
const = 0;
236 m_minReduction = minRed;
257 #endif // _SPXSIMPLIFIER_H_ virtual const Vector & unsimplifiedSlacks()=0
returns a reference to the unsimplified slack values.
int m_keptLRhs
number of kept left- and right-hand sides
virtual SPxSolver::VarStatus getBasisColStatus(int) const =0
gets basis status for a single column.
Result
Result of the simplification.
the problem was so much simplified that it vanished
virtual Result simplify(SPxLP &lp, Real eps, Real delta)=0
simplify SPxLP lp with identical primal and dual feasibility tolerance.
int m_remNzos
number of removed nonzero coefficients
virtual Real timeUsed() const
virtual ~SPxSimplifier()
destructor.
int m_keptBnds
number of kept bounds
Real m_minReduction
minimal reduction (sum of removed rows/cols) to continue simplification
const char * m_name
name of the simplifier
virtual SPxSolver::VarStatus getBasisRowStatus(int) const =0
gets basis status for a single row.
virtual void addObjoffset(const Real val)
add objective offset.
simplification could be done
virtual SPxSimplifier * clone() const =0
clone function for polymorphism
Timer * m_timeUsed
user time used for simplification
SPxSimplifier & operator=(const SPxSimplifier &rhs)
assignment operator
std::ostream & operator<<(std::ostream &s, const VectorBase< R > &vec)
Output operator.
virtual const char * getName() const
get name of simplifier.
virtual Real getObjoffset() const
get objective offset.
LP simplification abstract base class.Instances of classes derived from SPxSimplifier may be loaded t...
Wrapper for several output streams. A verbosity level is used to decide which stream to use and wheth...
virtual void setMinReduction(const Real minRed)
set minimal reduction threshold to continue simplification
virtual void getBasis(SPxSolver::VarStatus[], SPxSolver::VarStatus[], const int rowsSize=-1, const int colsSize=-1) const =0
get optimal basis.
primal infeasibility was detected
virtual Real time() const =0
static Timer * createTimer(Timer::TYPE ttype)
create timers and allocate memory for them
virtual const Vector & unsimplifiedPrimal()=0
returns a reference to the unsimplified primal solution.
int m_remRows
number of removed rows
Debugging, floating point type and parameter definitions.
Everything should be within this namespace.
primal unboundedness was detected
virtual void unsimplify(const Vector &, const Vector &, const Vector &, const Vector &, const SPxSolver::VarStatus[], const SPxSolver::VarStatus[], bool isOptimal=true)=0
reconstructs an optimal solution for the unsimplified LP.
virtual Result result() const =0
returns result status of the simplification
Real m_objoffset
objective offset
Saving LPs in a form suitable for SoPlex.
virtual bool isConsistent() const
consistency check
virtual bool isUnsimplified() const
specifies whether an optimal solution has already been unsimplified.
int m_chgBnds
number of changed bounds
virtual const Vector & unsimplifiedDual()=0
returns a reference to the unsimplified dual solution.
SPxSimplifier(const char *p_name, Timer::TYPE ttype=Timer::USER_TIME)
constructor
int m_remCols
number of removed columns
virtual const Vector & unsimplifiedRedCost()=0
returns a reference to the unsimplified reduced costs.
SPxSimplifier(const SPxSimplifier &old)
copy constructor
SPxOut * spxout
message handler
int m_chgLRhs
number of change right-hand sides
Wrapper for the system time query methods.
void spx_free(T &p)
Release memory.
dual infeasibility was detected