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 ClpDualRowSteepest_H 00007 #define ClpDualRowSteepest_H 00008 00009 #include "ClpDualRowPivot.hpp" 00010 class CoinIndexedVector; 00011 00012 00013 //############################################################################# 00014 00021 class ClpDualRowSteepest : public ClpDualRowPivot { 00022 00023 public: 00024 00026 00027 00029 virtual int pivotRow(); 00030 00033 virtual double updateWeights(CoinIndexedVector * input, 00034 CoinIndexedVector * spare, 00035 CoinIndexedVector * spare2, 00036 CoinIndexedVector * updatedColumn); 00037 00042 virtual void updatePrimalSolution(CoinIndexedVector * input, 00043 double theta, 00044 double & changeInObjective); 00045 00056 virtual void saveWeights(ClpSimplex * model, int mode); 00058 virtual void unrollWeights(); 00060 virtual void clearArrays(); 00062 virtual bool looksOptimal() const; 00064 virtual void maximumPivotsChanged(); 00066 00069 enum Persistence { 00070 normal = 0x00, // create (if necessary) and destroy 00071 keep = 0x01 // create (if necessary) and leave 00072 }; 00073 00075 00076 00083 ClpDualRowSteepest(int mode = 3); 00084 00086 ClpDualRowSteepest(const ClpDualRowSteepest &); 00087 00089 ClpDualRowSteepest & operator=(const ClpDualRowSteepest& rhs); 00090 00092 void fill(const ClpDualRowSteepest& rhs); 00093 00095 virtual ~ClpDualRowSteepest (); 00096 00098 virtual ClpDualRowPivot * clone(bool copyData = true) const; 00099 00101 00103 00104 inline int mode() const { 00105 return mode_; 00106 } 00108 inline void setPersistence(Persistence life) { 00109 persistence_ = life; 00110 } 00111 inline Persistence persistence() const { 00112 return persistence_ ; 00113 } 00115 00116 //--------------------------------------------------------------------------- 00117 00118 private: 00120 00125 int state_; 00128 int mode_; 00130 Persistence persistence_; 00132 double * weights_; 00134 CoinIndexedVector * infeasible_; 00136 CoinIndexedVector * alternateWeights_; 00138 CoinIndexedVector * savedWeights_; 00140 int * dubiousWeights_; 00142 }; 00143 00144 #endif