00001 /* $Id: ClpDualRowPivot.hpp 2070 2014-11-18 11:12:54Z forrest $ */ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 00005 00006 #ifndef ClpDualRowPivot_H 00007 #define ClpDualRowPivot_H 00008 00009 class ClpSimplex; 00010 class CoinIndexedVector; 00011 00012 //############################################################################# 00013 00022 class ClpDualRowPivot { 00023 00024 public: 00025 00027 00028 00030 virtual int pivotRow() = 0; 00031 00034 virtual double updateWeights(CoinIndexedVector * input, 00035 CoinIndexedVector * spare, 00036 CoinIndexedVector * spare2, 00037 CoinIndexedVector * updatedColumn) = 0; 00038 00045 /* FIXME: this was pure virtul (=0). Why? */ 00046 virtual void updatePrimalSolution(CoinIndexedVector * input, 00047 double theta, 00048 double & changeInObjective) = 0; 00061 virtual void saveWeights(ClpSimplex * model, int mode); 00063 virtual void checkAccuracy(); 00065 virtual void unrollWeights(); 00067 virtual void clearArrays(); 00069 virtual bool looksOptimal() const { 00070 return false; 00071 } 00073 virtual void maximumPivotsChanged() {} 00075 00076 00078 00079 00080 ClpDualRowPivot(); 00081 00083 ClpDualRowPivot(const ClpDualRowPivot &); 00084 00086 ClpDualRowPivot & operator=(const ClpDualRowPivot& rhs); 00087 00089 virtual ~ClpDualRowPivot (); 00090 00092 virtual ClpDualRowPivot * clone(bool copyData = true) const = 0; 00093 00095 00097 00098 00099 inline ClpSimplex * model() { 00100 return model_; 00101 } 00102 00104 inline void setModel(ClpSimplex * newmodel) { 00105 model_ = newmodel; 00106 } 00107 00109 inline int type() { 00110 return type_; 00111 } 00112 00114 00115 //--------------------------------------------------------------------------- 00116 00117 protected: 00119 00120 00121 ClpSimplex * model_; 00123 int type_; 00125 }; 00126 #ifndef CLP_DUAL_COLUMN_MULTIPLIER 00127 //#define CLP_DUAL_COLUMN_MULTIPLIER 0.99999 00128 #endif 00129 #endif