129 explicit SPxScaler(
const char* name,
bool colFirst =
false,
bool doBoth =
true,
158 virtual void setIntParam(
int param,
const char* name =
"intparam");
268#include "spxscaler.hpp"
Saving LPs in a form suitable for SoPlex.
Wrapper for several output streams. A verbosity level is used to decide which stream to use and wheth...
LP scaler abstract base class.
virtual void getUpperUnscaled(const SPxLPBase< R > &lp, VectorBase< R > &vec) const
returns unscaled upper bound vector of lp
DataArray< int > * m_activeColscaleExp
pointer to currently active column scaling factors
virtual void setBoth(bool both)
set wether column and row scaling should be performed
virtual R maxColRatio(const SPxLPBase< R > &lp) const
maximum ratio between absolute biggest and smallest element in any column.
virtual void scaleObj(const SPxLPBase< R > &lp, VectorBase< R > &origObj) const
apply scaling to objective function vector origObj.
const std::shared_ptr< Tolerances > tolerances() const
get the _tolerances member variable
void computeExpVec(const std::vector< R > &vec, DataArray< int > &vecExp)
round vector entries to power of 2
virtual R rhsUnscaled(const SPxLPBase< R > &lp, int i) const
returns unscaled right hand side i
bool m_colFirst
do column scaling first
SPxOut * spxout
message handler
virtual void unscaleRedCost(const SPxLPBase< R > &lp, VectorBase< R > &r) const
unscale dense reduced cost vector given in r.
virtual R scaleObj(const SPxLPBase< R > &lp, int i, R origObj) const
returns scaled objective function coefficient origObj.
virtual R getColMinAbsUnscaled(const SPxLPBase< R > &lp, int i) const
returns minumum absolute value of unscaled column i
SPxScaler(const char *name, bool colFirst=false, bool doBoth=true, SPxOut *spxout=nullptr)
constructor
virtual void unscaleSlacks(const SPxLPBase< R > &lp, VectorBase< R > &s) const
unscale dense slack vector given in s.
virtual const char * getName() const
get name of scaler
virtual void setup(SPxLPBase< R > &lp)
clear and setup scaling arrays in the LP
virtual R scaleLower(const SPxLPBase< R > &lp, int col, R lower) const
returns scaled lower bound of column col.
SPxScaler & operator=(const SPxScaler &)
assignment operator
virtual R getRowMaxAbsUnscaled(const SPxLPBase< R > &lp, int i) const
returns maximum absolute value of unscaled row i
virtual R minAbsColscale() const
absolute smallest column scaling factor
virtual void setRealParam(R param, const char *name="realparam")
set R parameter
std::shared_ptr< Tolerances > _tolerances
the tolerances
virtual void unscaleDualray(const SPxLPBase< R > &lp, VectorBase< R > &ray) const
unscale dual ray given in ray.
virtual void getColUnscaled(const SPxLPBase< R > &lp, int i, DSVectorBase< R > &vec) const
gets unscaled column i
DataArray< int > * m_activeRowscaleExp
pointer to currently active row scaling factors
virtual R maxAbsRowscale() const
absolute biggest row scaling factor
virtual void getRowUnscaled(const SPxLPBase< R > &lp, int i, DSVectorBase< R > &vec) const
returns unscaled row i
virtual int getRowScaleExp(int i) const
returns scaling factor for row i
virtual R getRowMinAbsUnscaled(const SPxLPBase< R > &lp, int i) const
returns minimum absolute value of unscaled row i
virtual bool isConsistent() const
consistency check
bool m_doBoth
do columns and rows
virtual R scaleRhs(const SPxLPBase< R > &lp, int row, R rhs) const
returns scaled right hand side of row row.
virtual int getColScaleExp(int i) const
returns scaling factor for column i
virtual R maxAbsColscale() const
absolute biggest column scaling factor
virtual R scaleUpper(const SPxLPBase< R > &lp, int col, R upper) const
returns scaled upper bound of column col.
virtual R minAbsRowscale() const
absolute smallest row scaling factor
virtual void unscalePrimalray(const SPxLPBase< R > &lp, VectorBase< R > &ray) const
unscale primal ray given in ray.
virtual void applyScaling(SPxLPBase< R > &lp)
applies m_colscale and m_rowscale to the lp.
virtual R lowerUnscaled(const SPxLPBase< R > &lp, int i) const
returns unscaled lower bound i
const char * m_name
Name of the scaler.
virtual void scale(SPxLPBase< R > &lp, bool persistent=true)=0
scale SPxLP.
virtual void setIntParam(int param, const char *name="intparam")
set int parameter
virtual R maxObjUnscaled(const SPxLPBase< R > &lp, int i) const
returns unscaled objective function coefficient of i
virtual int computeScaleExp(const SVectorBase< R > &vec, const DataArray< int > &oldScaleExp) const
compute a single scaling vector , e.g. of a newly added row
virtual SPxScaler * clone() const =0
clone function for polymorphism
virtual R upperUnscaled(const SPxLPBase< R > &lp, int i) const
returns unscaled upper bound i
virtual R getCoefUnscaled(const SPxLPBase< R > &lp, int row, int col) const
returns unscaled coefficient of lp
virtual R maxRowRatio(const SPxLPBase< R > &lp) const
maximum ratio between absolute biggest and smallest element in any row.
virtual void unscalePrimal(const SPxLPBase< R > &lp, VectorBase< R > &x) const
unscale dense primal solution vector given in x.
virtual void getLhsUnscaled(const SPxLPBase< R > &lp, VectorBase< R > &vec) const
returns unscaled left hand side vector of lp
SPxScaler(const SPxScaler &)
copy constructor
virtual void setOrder(bool colFirst)
set scaling order
friend std::ostream & operator<<(std::ostream &s, const SPxScaler< T > &sc)
virtual void unscaleDual(const SPxLPBase< R > &lp, VectorBase< R > &pi) const
unscale dense dual solution vector given in pi.
virtual void getLowerUnscaled(const SPxLPBase< R > &lp, VectorBase< R > &vec) const
gets unscaled lower bound vector
virtual R scaleLhs(const SPxLPBase< R > &lp, int row, R lhs) const
returns scaled left hand side of row row.
virtual R lhsUnscaled(const SPxLPBase< R > &lp, int i) const
returns unscaled left hand side i of lp
virtual void setTolerances(std::shared_ptr< Tolerances > &tolerances)
set tolerances
virtual void getRhsUnscaled(const SPxLPBase< R > &lp, VectorBase< R > &vec) const
gets unscaled right hand side vector
virtual R getColMaxAbsUnscaled(const SPxLPBase< R > &lp, int i) const
returns maximum absolute value of unscaled column i
virtual R scaleElement(const SPxLPBase< R > &lp, int row, int col, R val) const
returns scaled LP element in row and col.
virtual void getMaxObjUnscaled(const SPxLPBase< R > &lp, VectorBase< R > &vec) const
gets unscaled objective function
virtual void setOutstream(SPxOut &newOutstream)
set message handler
virtual ~SPxScaler()
destructor.
virtual void unscale(SPxLPBase< R > &lp)
unscale SPxLP
Save arrays of data objects.
Everything should be within this namespace.
Debugging, floating point type and parameter definitions.
Dense vector for linear algebra.