00001 /* $Id: ClpPrimalColumnPivot.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 ClpPrimalcolumnPivot_H 00005 #define ClpPrimalcolumnPivot_H 00006 00007 class ClpSimplex; 00008 class CoinIndexedVector; 00009 00010 //############################################################################# 00011 00023 class ClpPrimalColumnPivot { 00024 00025 public: 00026 00028 00029 00048 virtual int pivotColumn(CoinIndexedVector * updates, 00049 CoinIndexedVector * spareRow1, 00050 CoinIndexedVector * spareRow2, 00051 CoinIndexedVector * spareColumn1, 00052 CoinIndexedVector * spareColumn2) = 0; 00053 00055 virtual void updateWeights(CoinIndexedVector * input); 00056 00068 virtual void saveWeights(ClpSimplex * model,int mode)=0; 00074 virtual int pivotRow(double & way) 00075 {way=0;return -2;} 00077 virtual void clearArrays(); 00079 virtual bool looksOptimal() const 00080 { return looksOptimal_;} 00082 virtual void setLooksOptimal(bool flag) 00083 { looksOptimal_ = flag;} 00085 00086 00088 00089 00090 ClpPrimalColumnPivot(); 00091 00093 ClpPrimalColumnPivot(const ClpPrimalColumnPivot &); 00094 00096 ClpPrimalColumnPivot & operator=(const ClpPrimalColumnPivot& rhs); 00097 00099 virtual ~ClpPrimalColumnPivot (); 00100 00102 virtual ClpPrimalColumnPivot * clone(bool copyData = true) const = 0; 00103 00105 00107 00108 00109 inline ClpSimplex * model() 00110 { return model_;} 00112 inline void setModel(ClpSimplex * newmodel) 00113 { model_=newmodel;} 00114 00116 inline int type() 00117 { return type_;} 00118 00122 virtual int numberSprintColumns(int & numberIterations) const; 00124 virtual void switchOffSprint(); 00126 virtual void maximumPivotsChanged() {} 00127 00129 00130 //--------------------------------------------------------------------------- 00131 00132 protected: 00134 00135 00136 ClpSimplex * model_; 00138 int type_; 00140 bool looksOptimal_; 00142 }; 00143 00144 #endif