00001 /* $Id: ClpDualRowPivot.hpp 1461 2009-11-06 19:06:43Z stefan $ */ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 #ifndef ClpDualRowPivot_H 00005 #define ClpDualRowPivot_H 00006 00007 class ClpSimplex; 00008 class CoinIndexedVector; 00009 00010 //############################################################################# 00011 00020 class ClpDualRowPivot { 00021 00022 public: 00023 00025 00026 00028 virtual int pivotRow() = 0; 00029 00032 virtual double updateWeights(CoinIndexedVector * input, 00033 CoinIndexedVector * spare, 00034 CoinIndexedVector * spare2, 00035 CoinIndexedVector * updatedColumn) = 0; 00036 00043 /* FIXME: this was pure virtul (=0). Why? */ 00044 virtual void updatePrimalSolution(CoinIndexedVector * input, 00045 double theta, 00046 double & changeInObjective) = 0; 00057 virtual void saveWeights(ClpSimplex * model,int mode); 00059 virtual void checkAccuracy(); 00061 virtual void unrollWeights(); 00063 virtual void clearArrays(); 00065 virtual bool looksOptimal() const 00066 { return false;} 00068 virtual void maximumPivotsChanged() {} 00070 00071 00073 00074 00075 ClpDualRowPivot(); 00076 00078 ClpDualRowPivot(const ClpDualRowPivot &); 00079 00081 ClpDualRowPivot & operator=(const ClpDualRowPivot& rhs); 00082 00084 virtual ~ClpDualRowPivot (); 00085 00087 virtual ClpDualRowPivot * clone(bool copyData = true) const = 0; 00088 00090 00092 00093 00094 inline ClpSimplex * model() 00095 { return model_;} 00096 00098 inline void setModel(ClpSimplex * newmodel) 00099 { model_=newmodel;} 00100 00102 inline int type() 00103 { return type_;} 00104 00106 00107 //--------------------------------------------------------------------------- 00108 00109 protected: 00111 00112 00113 ClpSimplex * model_; 00115 int type_; 00117 }; 00118 00119 #endif