Least squares scaling.This SPxScaler implementation performs least squares scaling as suggested by Curtis and Reid in: On the Automatic Scaling of Matrices for Gaussian Elimination (1972). More...
#include <spxleastsqsc.h>
Public Member Functions | |
Construction / destruction | |
| SPxLeastSqSC () | |
| default constructor (this scaler makes no use of inherited member m_colFirst) More... | |
| SPxLeastSqSC (const SPxLeastSqSC &old) | |
| copy constructor More... | |
| SPxLeastSqSC & | operator= (const SPxLeastSqSC &) |
| assignment operator More... | |
| virtual | ~SPxLeastSqSC () |
| destructor More... | |
| virtual SPxScaler * | clone () const |
| clone function for polymorphism More... | |
Access / modification | |
| virtual void | setRealParam (Real param, const char *name) |
| set real param (conjugate gradient accuracy) More... | |
| virtual void | setIntParam (int param, const char *name) |
| set int param (maximal conjugate gradient rounds) More... | |
Public Member Functions inherited from SPxScaler | |
| virtual int | computeScaleExp (const SVector &vec, const DataArray< int > &oldScaleExp) const |
| compute a single scaling vector , e.g. of a newly added row More... | |
| virtual int | computeScaleExp (const SVectorBase< Rational > &vec, const DataArray< int > &oldScaleExp) const |
| virtual void | applyScaling (SPxLPBase< Real > &lp) |
applies m_colscale and m_rowscale to the lp. More... | |
| SPxScaler (const char *name, bool colFirst=false, bool doBoth=true, SPxOut *spxout=NULL) | |
| constructor More... | |
| SPxScaler (const SPxScaler &) | |
| copy constructor More... | |
| SPxScaler & | operator= (const SPxScaler &) |
| assignment operator More... | |
| virtual | ~SPxScaler () |
| destructor. More... | |
| virtual const char * | getName () const |
| get name of scaler More... | |
| virtual void | setOrder (bool colFirst) |
| set scaling order More... | |
| virtual void | setBoth (bool both) |
| set wether column and row scaling should be performed More... | |
| virtual void | setOutstream (SPxOut &newOutstream) |
| set message handler More... | |
| virtual void | scale (SPxLPBase< Real > &lp, bool persistent=true)=0 |
| scale SPxLP. More... | |
| virtual void | unscale (SPxLPBase< Real > &lp) |
| unscale SPxLP More... | |
| virtual int | getColScaleExp (int i) const |
returns scaling factor for column i More... | |
| virtual int | getRowScaleExp (int i) const |
returns scaling factor for row i More... | |
| virtual void | getColUnscaled (const SPxLPBase< Real > &lp, int i, DSVector &vec) const |
gets unscaled column i More... | |
| virtual Real | getColMaxAbsUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns maximum absolute value of unscaled column i More... | |
| virtual Real | getColMinAbsUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns minumum absolute value of unscaled column i More... | |
| virtual Real | upperUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns unscaled upper bound i More... | |
| virtual void | getUpperUnscaled (const SPxLPBase< Real > &lp, Vector &vec) const |
| returns unscaled upper bound vector of LP More... | |
| virtual Real | lowerUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns unscaled lower bound i More... | |
| virtual void | getLowerUnscaled (const SPxLPBase< Real > &lp, Vector &vec) const |
| gets unscaled lower bound vector More... | |
| virtual Real | maxObjUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns unscaled objective function coefficient of i More... | |
| virtual void | getMaxObjUnscaled (const SPxLPBase< Real > &lp, Vector &vec) const |
| gets unscaled objective function More... | |
| virtual void | getRowUnscaled (const SPxLPBase< Real > &lp, int i, DSVector &vec) const |
returns unscaled row i More... | |
| virtual Real | getRowMaxAbsUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns maximum absolute value of unscaled row i More... | |
| virtual Real | getRowMinAbsUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns minimum absolute value of unscaled row i More... | |
| virtual Real | rhsUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns unscaled right hand side i More... | |
| virtual void | getRhsUnscaled (const SPxLPBase< Real > &lp, Vector &vec) const |
| gets unscaled right hand side vector More... | |
| virtual Real | lhsUnscaled (const SPxLPBase< Real > &lp, int i) const |
returns unscaled left hand side i of LP More... | |
| virtual void | getLhsUnscaled (const SPxLPBase< Real > &lp, Vector &vec) const |
| returns unscaled left hand side vector of LP More... | |
| virtual Real | getCoefUnscaled (const SPxLPBase< Real > &lp, int row, int col) const |
| returns unscaled coefficient of LP More... | |
| virtual void | unscalePrimal (const SPxLPBase< Real > &lp, Vector &x) const |
unscale dense primal solution vector given in x. More... | |
| virtual void | unscaleSlacks (const SPxLPBase< Real > &lp, Vector &s) const |
unscale dense slack vector given in s. More... | |
| virtual void | unscaleDual (const SPxLPBase< Real > &lp, Vector &pi) const |
unscale dense dual solution vector given in pi. More... | |
| virtual void | unscaleRedCost (const SPxLPBase< Real > &lp, Vector &r) const |
unscale dense reduced cost vector given in r. More... | |
| virtual void | unscalePrimalray (const SPxLPBase< Real > &lp, Vector &ray) const |
unscale primal ray given in ray. More... | |
| virtual void | unscaleDualray (const SPxLPBase< Real > &lp, Vector &ray) const |
unscale dual ray given in ray. More... | |
| virtual void | scaleObj (const SPxLPBase< Real > &lp, VectorReal &origObj) const |
apply scaling to objective function vector origObj. More... | |
| virtual Real | scaleObj (const SPxLPBase< Real > &lp, int i, Real origObj) const |
returns scaled objective function coefficient origObj. More... | |
| virtual Real | scaleElement (const SPxLPBase< Real > &lp, int row, int col, Real val) const |
returns scaled LP element in row and col. More... | |
| virtual Real | scaleLower (const SPxLPBase< Real > &lp, int col, Real lower) const |
returns scaled lower bound of column col. More... | |
| virtual Real | scaleUpper (const SPxLPBase< Real > &lp, int col, Real upper) const |
returns scaled upper bound of column col. More... | |
| virtual Real | scaleLhs (const SPxLPBase< Real > &lp, int row, Real lhs) const |
returns scaled left hand side of row row. More... | |
| virtual Real | scaleRhs (const SPxLPBase< Real > &lp, int row, Real rhs) const |
returns scaled right hand side of row row. More... | |
| virtual Real | minAbsColscale () const |
| absolute smallest column scaling factor More... | |
| virtual Real | maxAbsColscale () const |
| absolute biggest column scaling factor More... | |
| virtual Real | minAbsRowscale () const |
| absolute smallest row scaling factor More... | |
| virtual Real | maxAbsRowscale () const |
| absolute biggest row scaling factor More... | |
| virtual Real | maxColRatio (const SPxLPBase< Real > &lp) const |
| maximum ratio between absolute biggest and smallest element in any column. More... | |
| virtual Real | maxRowRatio (const SPxLPBase< Real > &lp) const |
| maximum ratio between absolute biggest and smallest element in any row. More... | |
| virtual bool | isConsistent () const |
| consistency check More... | |
Scaling | |
| Real | acrcydivisor = ACCURACY_DIVISOR |
| int | maxrounds = MAX_ROUNDS |
| virtual void | scale (SPxLP &lp, bool persistent=true) |
| Scale the loaded SPxLP. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from SPxScaler | |
| virtual void | setup (SPxLPBase< Real > &lp) |
| clear and setup scaling arrays in the LP More... | |
Protected Attributes inherited from SPxScaler | |
| const char * | m_name |
| Name of the scaler. More... | |
| DataArray< int > * | m_activeColscaleExp |
| pointer to currently active column scaling factors More... | |
| DataArray< int > * | m_activeRowscaleExp |
| pointer to currently active row scaling factors More... | |
| bool | m_colFirst |
| do column scaling first More... | |
| bool | m_doBoth |
| do columns and rows More... | |
| SPxOut * | spxout |
| message handler More... | |
Least squares scaling.
This SPxScaler implementation performs least squares scaling as suggested by Curtis and Reid in: On the Automatic Scaling of Matrices for Gaussian Elimination (1972).
Definition at line 38 of file spxleastsqsc.h.
|
explicit |
default constructor (this scaler makes no use of inherited member m_colFirst)
Definition at line 197 of file spxleastsqsc.cpp.
Referenced by SPxLeastSqSC::clone().
| SPxLeastSqSC | ( | const SPxLeastSqSC & | old | ) |
copy constructor
Definition at line 201 of file spxleastsqsc.cpp.
|
virtual |
destructor
Definition at line 52 of file spxleastsqsc.h.
|
virtual |
clone function for polymorphism
Implements SPxScaler.
Definition at line 55 of file spxleastsqsc.h.
References SPxLeastSqSC::scale(), SPxLeastSqSC::setIntParam(), SPxLeastSqSC::setRealParam(), and SPxLeastSqSC::SPxLeastSqSC().
| SPxLeastSqSC & operator= | ( | const SPxLeastSqSC & | rhs | ) |
assignment operator
Definition at line 205 of file spxleastsqsc.cpp.
References SPxScaler::operator=().
|
virtual |
Scale the loaded SPxLP.
Definition at line 228 of file spxleastsqsc.cpp.
References SPxLeastSqSC::acrcydivisor, SPxScaler::applyScaling(), SSVectorBase< R >::assign2product4setup(), SSVectorBase< R >::assignPWproduct4setup(), LPColSetBase< R >::colSet(), soplex::initConstVecs(), SSVectorBase< R >::isSetup(), SPxScaler::m_activeColscaleExp, SPxScaler::m_activeRowscaleExp, SPxScaler::maxAbsColscale(), SPxLPBase< R >::maxAbsNzo(), SPxScaler::maxAbsRowscale(), SPxScaler::maxColRatio(), SPxLeastSqSC::maxrounds, SPxScaler::maxRowRatio(), SPxScaler::minAbsColscale(), SPxLPBase< R >::minAbsNzo(), SPxScaler::minAbsRowscale(), MSG_INFO1, MSG_INFO2, MSG_INFO3, SPxLPBase< R >::nCols(), SPxLPBase< R >::nNzos(), SPxLPBase< R >::nRows(), LPRowSetBase< R >::rowSet(), SPxScaler::setup(), SSVectorBase< R >::setup(), SPxScaler::spxout, soplex::updateRes(), soplex::updateScale(), and soplex::updateScaleFinal().
Referenced by SPxLeastSqSC::clone().
|
virtual |
set int param (maximal conjugate gradient rounds)
Reimplemented from SPxScaler.
Definition at line 222 of file spxleastsqsc.cpp.
References SPxLeastSqSC::maxrounds.
Referenced by SPxLeastSqSC::clone().
|
virtual |
set real param (conjugate gradient accuracy)
Reimplemented from SPxScaler.
Definition at line 216 of file spxleastsqsc.cpp.
References SPxLeastSqSC::acrcydivisor.
Referenced by SPxLeastSqSC::clone().
|
protected |
Definition at line 78 of file spxleastsqsc.h.
Referenced by SPxLeastSqSC::scale(), and SPxLeastSqSC::setRealParam().
|
protected |
Definition at line 79 of file spxleastsqsc.h.
Referenced by SPxLeastSqSC::scale(), and SPxLeastSqSC::setIntParam().