Clp trunk
|
00001 /* $Id$ */ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 00005 00006 #ifndef ClpPrimalcolumnPivot_H 00007 #define ClpPrimalcolumnPivot_H 00008 00009 class ClpSimplex; 00010 class CoinIndexedVector; 00011 00012 //############################################################################# 00013 00025 class ClpPrimalColumnPivot { 00026 00027 public: 00028 00030 00031 00050 virtual int pivotColumn(CoinIndexedVector * updates, 00051 CoinIndexedVector * spareRow1, 00052 CoinIndexedVector * spareRow2, 00053 CoinIndexedVector * spareColumn1, 00054 CoinIndexedVector * spareColumn2) = 0; 00055 00057 virtual void updateWeights(CoinIndexedVector * input); 00058 00070 virtual void saveWeights(ClpSimplex * model, int mode) = 0; 00076 virtual int pivotRow(double & way) { 00077 way = 0; 00078 return -2; 00079 } 00081 virtual void clearArrays(); 00083 virtual bool looksOptimal() const { 00084 return looksOptimal_; 00085 } 00087 virtual void setLooksOptimal(bool flag) { 00088 looksOptimal_ = flag; 00089 } 00091 00092 00094 00095 00096 ClpPrimalColumnPivot(); 00097 00099 ClpPrimalColumnPivot(const ClpPrimalColumnPivot &); 00100 00102 ClpPrimalColumnPivot & operator=(const ClpPrimalColumnPivot& rhs); 00103 00105 virtual ~ClpPrimalColumnPivot (); 00106 00108 virtual ClpPrimalColumnPivot * clone(bool copyData = true) const = 0; 00109 00111 00113 00114 00115 inline ClpSimplex * model() { 00116 return model_; 00117 } 00119 inline void setModel(ClpSimplex * newmodel) { 00120 model_ = newmodel; 00121 } 00122 00124 inline int type() { 00125 return type_; 00126 } 00127 00131 virtual int numberSprintColumns(int & numberIterations) const; 00133 virtual void switchOffSprint(); 00135 virtual void maximumPivotsChanged() {} 00136 00138 00139 //--------------------------------------------------------------------------- 00140 00141 protected: 00143 00144 00145 ClpSimplex * model_; 00147 int type_; 00149 bool looksOptimal_; 00151 }; 00152 00153 #endif