Changeset 2385 for trunk/Clp/src/ClpPEPrimalColumnSteepest.hpp
 Timestamp:
 Jan 6, 2019 2:43:06 PM (4 months ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/Clp/src/ClpPEPrimalColumnSteepest.hpp
r2150 r2385 9 9 10 10 */ 11 12 11 13 12 #ifndef ClpPEPrimalColumnSteepest_H … … 22 21 class CoinIndexedVector; 23 22 24 25 23 /** Primal Column Pivot Steepest Edge Algorithm Class 26 24 … … 29 27 */ 30 28 31 32 29 class ClpPEPrimalColumnSteepest : public ClpPrimalColumnSteepest { 33 30 public: 34 35 ///@name Constructors and destructors 36 //@{ 37 /** Default Constructor 31 ///@name Constructors and destructors 32 //@{ 33 /** Default Constructor 38 34 0 is exact devex, 1 full steepest, 2 is partial exact devex 39 35 3 switches between 0 and 2 depending on factorization … … 43 39 This can be faster on very easy problems. 44 40 */ 45 41 ClpPEPrimalColumnSteepest(double psi = 0.5, int mode = 3); 46 42 47 48 ClpPEPrimalColumnSteepest(const ClpPEPrimalColumnSteepest &rhs);43 /// Copy constructor 44 ClpPEPrimalColumnSteepest(const ClpPEPrimalColumnSteepest &rhs); 49 45 50 51 ClpPEPrimalColumnSteepest & operator=(const ClpPEPrimalColumnSteepest&rhs);46 /// Assignment operator 47 ClpPEPrimalColumnSteepest &operator=(const ClpPEPrimalColumnSteepest &rhs); 52 48 53 54 virtual ~ClpPEPrimalColumnSteepest();49 /// Destructor 50 virtual ~ClpPEPrimalColumnSteepest(); 55 51 56 57 virtual ClpPrimalColumnPivot *clone(bool copyData = true) const;52 /// Clone 53 virtual ClpPrimalColumnPivot *clone(bool copyData = true) const; 58 54 59 55 public: 56 ///@name Algorithmic methods 57 //@{ 60 58 61 ///@name Algorithmic methods 62 //@{ 63 64 /** Returns pivot column, 1 if none. 59 /** Returns pivot column, 1 if none. 65 60 The Packed CoinIndexedVector updates has cost updates  for normal LP 66 61 that is just +weight where a feasibility changed. It also has … … 69 64 profiling and speed 70 65 */ 71 virtual int pivotColumn(CoinIndexedVector *updates,72 CoinIndexedVector *spareRow1,73 CoinIndexedVector *spareRow2,74 CoinIndexedVector *spareColumn1,75 CoinIndexedVector *spareColumn2);66 virtual int pivotColumn(CoinIndexedVector *updates, 67 CoinIndexedVector *spareRow1, 68 CoinIndexedVector *spareRow2, 69 CoinIndexedVector *spareColumn1, 70 CoinIndexedVector *spareColumn2); 76 71 77 78 72 //@} 73 /** Save weights  this may initialize weights as well 79 74 This is as parent but may initialize ClpPESimplex 80 75 */ 81 virtual void saveWeights(ClpSimplex * model, int mode); 82 /// Updates weights  as ordinary but checks for zero moves 83 virtual void updateWeights(CoinIndexedVector * input); 84 // 85 // Psi 86 inline double psi() const 87 { return psi_;} 76 virtual void saveWeights(ClpSimplex *model, int mode); 77 /// Updates weights  as ordinary but checks for zero moves 78 virtual void updateWeights(CoinIndexedVector *input); 79 // 80 // Psi 81 inline double psi() const 82 { 83 return psi_; 84 } 88 85 89 86 private: 90 91 87 /* this PESimplex object is used to identify the compatible variables */ 88 ClpPESimplex *modelPE_; 92 89 93 90 /* psi is the factor used in the bidimensional pricing, it is < 1 and 94 91 1/psi grows with the priority given to compatible variables */ 95 92 double psi_; 96 93 97 98 99 94 /* useful counters for the update of the set of compatible variables */ 95 int iCurrent_; 96 int iInterval_; 100 97 101 102 103 104 98 /* record if previous iterations concluded that compatibles should not be checked */ 99 int coDegenCompatibles_; 100 int coConsecutiveCompatibles_; 101 bool updateCompatibles_; 105 102 }; 106 103 107 104 #endif 105 106 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2 107 */
Note: See TracChangeset
for help on using the changeset viewer.