00001 /* $Id: AbcPrimalColumnPivot.hpp 1910 2013-01-27 02:00:13Z stefan $ */ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others, Copyright (C) 2012, FasterCoin. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 00005 00006 #ifndef AbcPrimalColumnPivot_H 00007 #define AbcPrimalColumnPivot_H 00008 #include "AbcCommon.hpp" 00009 00010 class AbcSimplex; 00011 class CoinIndexedVector; 00012 00013 //############################################################################# 00014 00026 class AbcPrimalColumnPivot { 00027 00028 public: 00029 00031 00032 00051 virtual int pivotColumn(CoinPartitionedVector * updates, 00052 CoinPartitionedVector * spareRow2, 00053 CoinPartitionedVector * spareColumn1) = 0; 00054 00056 virtual void updateWeights(CoinIndexedVector * input); 00057 00069 virtual void saveWeights(AbcSimplex * model, int mode) = 0; 00075 virtual int pivotRow(double & way) { 00076 way = 0; 00077 return -2; 00078 } 00080 virtual void clearArrays(); 00082 virtual bool looksOptimal() const { 00083 return looksOptimal_; 00084 } 00086 virtual void setLooksOptimal(bool flag) { 00087 looksOptimal_ = flag; 00088 } 00090 00091 00093 00094 00095 AbcPrimalColumnPivot(); 00096 00098 AbcPrimalColumnPivot(const AbcPrimalColumnPivot &); 00099 00101 AbcPrimalColumnPivot & operator=(const AbcPrimalColumnPivot& rhs); 00102 00104 virtual ~AbcPrimalColumnPivot (); 00105 00107 virtual AbcPrimalColumnPivot * clone(bool copyData = true) const = 0; 00108 00110 00112 00113 00114 inline AbcSimplex * model() { 00115 return model_; 00116 } 00118 inline void setModel(AbcSimplex * newmodel) { 00119 model_ = newmodel; 00120 } 00121 00123 inline int type() { 00124 return type_; 00125 } 00126 00130 virtual int numberSprintColumns(int & numberIterations) const; 00132 virtual void switchOffSprint(); 00134 virtual void maximumPivotsChanged() {} 00135 00137 00138 //--------------------------------------------------------------------------- 00139 00140 protected: 00142 00143 00144 AbcSimplex * model_; 00146 int type_; 00148 bool looksOptimal_; 00150 }; 00151 #ifndef CLP_PRIMAL_SLACK_MULTIPLIER 00152 #define CLP_PRIMAL_SLACK_MULTIPLIER 1.01 00153 #endif 00154 #endif