Clp trunk
ClpDualRowSteepest.hpp
Go to the documentation of this file.
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
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Defines