Scippy

SoPlex

Sequential object-oriented simPlex

spxgeometsc.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the class library */
4 /* SoPlex --- the Sequential object-oriented simPlex. */
5 /* */
6 /* Copyright (C) 1996-2016 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SoPlex is distributed under the terms of the ZIB Academic Licence. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SoPlex; see the file COPYING. If not email to soplex@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file spxgeometsc.h
17  * @brief LP geometric mean scaling.
18  */
19 #ifndef _SPXGEOMETSC_H_
20 #define _SPXGEOMETSC_H_
21 
22 #include <assert.h>
23 
24 #include "spxdefines.h"
25 #include "spxscaler.h"
26 
27 namespace soplex
28 {
29 /**@brief Geometric mean row/column scaling.
30  @ingroup Algo
31 
32  This SPxScaler implementation performs geometric mean scaling of the
33  LPs rows and columns.
34 */
35 class SPxGeometSC : public SPxScaler
36 {
37 protected:
38 
39  //-------------------------------------
40  /**@name Data */
41  //@{
42  const int m_maxIterations; ///< maximum number of scaling iterations.
43  const Real m_minImprovement; ///< improvement nesseccary to carry on.
44  const Real m_goodEnoughRatio; ///< no scaling needed if ratio is less than this.
45  //@}
46 
47  //-------------------------------------
48  /**@name Private helpers */
49  //@{
50  /// Returns \f$\sqrt{\mbox{mini}\cdot\mbox{maxi}}\f$.
51  virtual Real computeScale(Real mini, Real maxi) const;
52  //@}
53 
54 public:
55 
56  //-------------------------------------
57  /**@name Construction / destruction */
58  //@{
59  /// default constructor (this scaler makes no use of inherited members m_colFirst and m_doBoth)
60  explicit SPxGeometSC(int maxIters = 8, Real minImpr = 0.85, Real goodEnough = 1e3);
61  /// copy constructor
62  SPxGeometSC(const SPxGeometSC& old);
63  /// assignment operator
65  /// destructor
66  virtual ~SPxGeometSC()
67  {}
68  /// clone function for polymorphism
69  inline virtual SPxScaler* clone() const
70  {
71  return new SPxGeometSC(*this);
72  }
73  //@}
74 
75  //-------------------------------------
76  /**@name Scaling */
77  //@{
78  /// Scale the loaded SPxLP.
79  virtual void scale(SPxLP& lp);
80  //@}
81 
82 };
83 } // namespace soplex
84 #endif // _SPXGEOMETSC_H_
const Real m_goodEnoughRatio
no scaling needed if ratio is less than this.
Definition: spxgeometsc.h:44
const int m_maxIterations
maximum number of scaling iterations.
Definition: spxgeometsc.h:42
Geometric mean row/column scaling.This SPxScaler implementation performs geometric mean scaling of th...
Definition: spxgeometsc.h:35
virtual void scale(SPxLP &lp)
Scale the loaded SPxLP.
Definition: spxgeometsc.cpp:60
SPxGeometSC(int maxIters=8, Real minImpr=0.85, Real goodEnough=1e3)
default constructor (this scaler makes no use of inherited members m_colFirst and m_doBoth) ...
Definition: spxgeometsc.cpp:30
virtual SPxScaler * clone() const
clone function for polymorphism
Definition: spxgeometsc.h:69
double Real
SOPLEX_DEBUG.
Definition: spxdefines.h:200
SPxGeometSC & operator=(const SPxGeometSC &)
assignment operator
Definition: spxgeometsc.cpp:44
Debugging, floating point type and parameter definitions.
Everything should be within this namespace.
virtual Real computeScale(Real mini, Real maxi) const
Returns .
Definition: spxgeometsc.cpp:54
LP scaling base class.
LP scaler abstract base class.Instances of classes derived from SPxScaler may be loaded to SoPlex in ...
Definition: spxscaler.h:39
const Real m_minImprovement
improvement nesseccary to carry on.
Definition: spxgeometsc.h:43
virtual ~SPxGeometSC()
destructor
Definition: spxgeometsc.h:66