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 00030 virtual double updateWeights(CoinIndexedVector * input, 00031 CoinIndexedVector * spare, 00032 CoinIndexedVector * updatedColumn) = 0; 00033 00040 /* FIXME: this was pure virtul (=0). Why? */ 00041 virtual void updatePrimalSolution(CoinIndexedVector * input, 00042 double theta, 00043 double & changeInObjective) = 0; 00054 virtual void saveWeights(ClpSimplex * model,int mode); 00056 virtual void checkAccuracy(); 00058 virtual void unrollWeights(); 00060 virtual void clearArrays(); 00062 virtual bool looksOptimal() const 00063 { return false;} 00065 virtual void maximumPivotsChanged() {} 00067 00068 00070 00071 00072 ClpDualRowPivot(); 00073 00075 ClpDualRowPivot(const ClpDualRowPivot &); 00076 00078 ClpDualRowPivot & operator=(const ClpDualRowPivot& rhs); 00079 00081 virtual ~ClpDualRowPivot (); 00082 00084 virtual ClpDualRowPivot * clone(bool copyData = true) const = 0; 00085 00087 00089 00090 00091 inline ClpSimplex * model() 00092 { return model_;} 00093 00095 inline int type() 00096 { return type_;} 00097 00099 00100 //--------------------------------------------------------------------------- 00101 00102 protected: 00104 00105 00106 ClpSimplex * model_; 00108 int type_; 00110 }; 00111 00112 #endif