00001
00002
00003 #ifndef ClpPrimalcolumnPivot_H
00004 #define ClpPrimalcolumnPivot_H
00005
00006 class ClpSimplex;
00007 class CoinIndexedVector;
00008
00009
00010
00022 class ClpPrimalColumnPivot {
00023
00024 public:
00025
00027
00028
00047 virtual int pivotColumn(CoinIndexedVector * updates,
00048 CoinIndexedVector * spareRow1,
00049 CoinIndexedVector * spareRow2,
00050 CoinIndexedVector * spareColumn1,
00051 CoinIndexedVector * spareColumn2) = 0;
00052
00054 virtual void updateWeights(CoinIndexedVector * input);
00055
00067 virtual void saveWeights(ClpSimplex * model,int mode)=0;
00073 virtual int pivotRow(double & way)
00074 {way=0;return -2;};
00076 virtual void clearArrays();
00078 virtual bool looksOptimal() const
00079 { return looksOptimal_;};
00081 virtual void setLooksOptimal(bool flag)
00082 { looksOptimal_ = flag;};
00084
00085
00087
00088
00089 ClpPrimalColumnPivot();
00090
00092 ClpPrimalColumnPivot(const ClpPrimalColumnPivot &);
00093
00095 ClpPrimalColumnPivot & operator=(const ClpPrimalColumnPivot& rhs);
00096
00098 virtual ~ClpPrimalColumnPivot ();
00099
00101 virtual ClpPrimalColumnPivot * clone(bool copyData = true) const = 0;
00102
00104
00106
00107
00108 inline ClpSimplex * model()
00109 { return model_;};
00110
00112 inline int type()
00113 { return type_;};
00114
00118 virtual int numberSprintColumns(int & numberIterations) const;
00120 virtual void switchOffSprint();
00122 virtual void maximumPivotsChanged() {};
00123
00125
00126
00127
00128 protected:
00130
00131
00132 ClpSimplex * model_;
00134 int type_;
00136 bool looksOptimal_;
00138 };
00139
00140 #endif