00001 // Copyright (C) 2002, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef ClpDualRowPivot_H 00004 #define ClpDualRowPivot_H 00005 00006 class ClpSimplex; 00007 class CoinIndexedVector; 00008 00009 //############################################################################# 00010 00019 class ClpDualRowPivot { 00020 00021 public: 00022 00024 00025 00027 virtual int pivotRow() = 0; 00028 00031 virtual double updateWeights(CoinIndexedVector * input, 00032 CoinIndexedVector * spare, 00033 CoinIndexedVector * spare2, 00034 CoinIndexedVector * updatedColumn) = 0; 00035 00042 /* FIXME: this was pure virtul (=0). Why? */ 00043 virtual void updatePrimalSolution(CoinIndexedVector * input, 00044 double theta, 00045 double & changeInObjective) = 0; 00056 virtual void saveWeights(ClpSimplex * model,int mode); 00058 virtual void checkAccuracy(); 00060 virtual void unrollWeights(); 00062 virtual void clearArrays(); 00064 virtual bool looksOptimal() const 00065 { return false;} 00067 virtual void maximumPivotsChanged() {} 00069 00070 00072 00073 00074 ClpDualRowPivot(); 00075 00077 ClpDualRowPivot(const ClpDualRowPivot &); 00078 00080 ClpDualRowPivot & operator=(const ClpDualRowPivot& rhs); 00081 00083 virtual ~ClpDualRowPivot (); 00084 00086 virtual ClpDualRowPivot * clone(bool copyData = true) const = 0; 00087 00089 00091 00092 00093 inline ClpSimplex * model() 00094 { return model_;} 00095 00097 inline void setModel(ClpSimplex * model) 00098 { model_=model;} 00099 00101 inline int type() 00102 { return type_;} 00103 00105 00106 //--------------------------------------------------------------------------- 00107 00108 protected: 00110 00111 00112 ClpSimplex * model_; 00114 int type_; 00116 }; 00117 00118 #endif