00001
00002
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
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