00001 // Copyright (C) 2002, International Business Machines 00002 // Corporation and others. All Rights Reserved. 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