Scippy

SoPlex

Sequential object-oriented simPlex

SPxLeastSqSC Class Reference

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...
 
SPxLeastSqSCoperator= (const SPxLeastSqSC &)
 assignment operator More...
 
virtual ~SPxLeastSqSC ()
 destructor More...
 
virtual SPxScalerclone () 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...
 
SPxScaleroperator= (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...
 
void computeExpVec (const std::vector< Real > &vec, DataArray< int > &vecExp)
 round vector entries to power of 2 More...
 
virtual bool isConsistent () const
 consistency check More...
 

Scaling

Real acrcydivisor = 1000.0
 
int maxrounds = 20
 
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...
 
SPxOutspxout
 message handler More...
 

Detailed Description

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 36 of file spxleastsqsc.h.

Constructor & Destructor Documentation

◆ SPxLeastSqSC() [1/2]

SPxLeastSqSC ( )
explicit

default constructor (this scaler makes no use of inherited member m_colFirst)

Definition at line 194 of file spxleastsqsc.cpp.

Referenced by SPxLeastSqSC::clone().

◆ SPxLeastSqSC() [2/2]

SPxLeastSqSC ( const SPxLeastSqSC old)

copy constructor

Definition at line 198 of file spxleastsqsc.cpp.

◆ ~SPxLeastSqSC()

virtual ~SPxLeastSqSC ( )
virtual

destructor

Definition at line 50 of file spxleastsqsc.h.

Member Function Documentation

◆ clone()

virtual SPxScaler* clone ( ) const
virtual

clone function for polymorphism

Implements SPxScaler.

Definition at line 53 of file spxleastsqsc.h.

References SPxLeastSqSC::scale(), SPxLeastSqSC::setIntParam(), SPxLeastSqSC::setRealParam(), and SPxLeastSqSC::SPxLeastSqSC().

◆ operator=()

SPxLeastSqSC & operator= ( const SPxLeastSqSC rhs)

assignment operator

Definition at line 202 of file spxleastsqsc.cpp.

References SPxScaler::operator=().

◆ scale()

◆ setIntParam()

void setIntParam ( int  param,
const char *  name 
)
virtual

set int param (maximal conjugate gradient rounds)

Reimplemented from SPxScaler.

Definition at line 219 of file spxleastsqsc.cpp.

References SPxLeastSqSC::maxrounds.

Referenced by SPxLeastSqSC::clone().

◆ setRealParam()

void setRealParam ( Real  param,
const char *  name 
)
virtual

set real param (conjugate gradient accuracy)

Reimplemented from SPxScaler.

Definition at line 213 of file spxleastsqsc.cpp.

References SPxLeastSqSC::acrcydivisor.

Referenced by SPxLeastSqSC::clone().

Member Data Documentation

◆ acrcydivisor

Real acrcydivisor = 1000.0
protected

Definition at line 76 of file spxleastsqsc.h.

Referenced by SPxLeastSqSC::scale(), and SPxLeastSqSC::setRealParam().

◆ maxrounds

int maxrounds = 20
protected

Definition at line 77 of file spxleastsqsc.h.

Referenced by SPxLeastSqSC::scale(), and SPxLeastSqSC::setIntParam().