Cgl  0.60.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ClpPEPrimalColumnSteepest.hpp
Go to the documentation of this file.
1 // Copyright (C) 2002, International Business Machines
2 // Corporation and others. All Rights Reserved.
3 /*
4  Authors
5 
6  Jeremy Omer, Mehdi Towhidi
7 
8  Last update: april 10, 2015
9 
10  */
11 
12 #ifndef ClpPEPrimalColumnSteepest_H
13 #define ClpPEPrimalColumnSteepest_H
14 
16 #include "ClpFactorization.hpp"
17 #include "ClpPESimplex.hpp"
18 #include <bitset>
19 
20 //#############################################################################
21 class CoinIndexedVector;
22 
30 public:
32 
33 
41  ClpPEPrimalColumnSteepest(double psi = 0.5, int mode = 3);
42 
45 
48 
51 
53  virtual ClpPrimalColumnPivot *clone(bool copyData = true) const;
54 
55 public:
57 
58 
66  virtual int pivotColumn(CoinIndexedVector *updates,
67  CoinIndexedVector *spareRow1,
68  CoinIndexedVector *spareRow2,
69  CoinIndexedVector *spareColumn1,
70  CoinIndexedVector *spareColumn2);
71 
73 
76  virtual void saveWeights(ClpSimplex *model, int mode);
78  virtual void updateWeights(CoinIndexedVector *input);
79  //---------------------------------------------------------------------------
80  // Psi
81  inline double psi() const
82  {
83  return psi_;
84  }
85 
86 private:
87  /* this PESimplex object is used to identify the compatible variables */
89 
90  /* psi is the factor used in the bi-dimensional pricing, it is < 1 and
91  1/psi grows with the priority given to compatible variables */
92  double psi_;
93 
94  /* useful counters for the update of the set of compatible variables */
95  int iCurrent_;
97 
98  /* record if previous iterations concluded that compatibles should not be checked */
102 };
103 
104 #endif
105 
106 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
107 */
Primal Column Pivot Steepest Edge Algorithm Class.
Primal Column Pivot Abstract Base Class.
Primal Column Pivot Steepest Edge Algorithm Class.
virtual ~ClpPEPrimalColumnSteepest()
Destructor.
virtual int pivotColumn(CoinIndexedVector *updates, CoinIndexedVector *spareRow1, CoinIndexedVector *spareRow2, CoinIndexedVector *spareColumn1, CoinIndexedVector *spareColumn2)
Returns pivot column, -1 if none.
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:106
Indexed Vector.
virtual void saveWeights(ClpSimplex *model, int mode)
Save weights - this may initialize weights as well This is as parent but may initialize ClpPESimplex...
ClpPEPrimalColumnSteepest(double psi=0.5, int mode=3)
Default Constructor 0 is exact devex, 1 full steepest, 2 is partial exact devex 3 switches between 0 ...
virtual ClpPrimalColumnPivot * clone(bool copyData=true) const
Clone.
ClpPEPrimalColumnSteepest & operator=(const ClpPEPrimalColumnSteepest &rhs)
Assignment operator.
ClpSimplex * model()
Returns model.
BASE CLASS FOR THE IMPROVED SIMPLEX.
virtual void updateWeights(CoinIndexedVector *input)
Updates weights - as ordinary but checks for zero moves.