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 00066 00068 00069 00070 ClpDualRowPivot(); 00071 00073 ClpDualRowPivot(const ClpDualRowPivot &); 00074 00076 ClpDualRowPivot & operator=(const ClpDualRowPivot& rhs); 00077 00079 virtual ~ClpDualRowPivot (); 00080 00082 virtual ClpDualRowPivot * clone(bool copyData = true) const = 0; 00083 00085 00087 00088 00089 inline ClpSimplex * model() 00090 { return model_;}; 00091 00093 inline int type() 00094 { return type_;}; 00095 00097 00098 //--------------------------------------------------------------------------- 00099 00100 protected: 00102 00103 00104 ClpSimplex * model_; 00106 int type_; 00108 }; 00109 00110 #endif