ClpDualRowSteepest.hpp

Go to the documentation of this file.
00001 /* $Id: ClpDualRowSteepest.hpp 2070 2014-11-18 11:12:54Z forrest $ */
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      void passInSavedWeights(const CoinIndexedVector * saved);
00060      inline CoinIndexedVector * savedWeights()
00061      { return savedWeights_;} 
00063      virtual void unrollWeights();
00065      virtual void clearArrays();
00067      virtual bool looksOptimal() const;
00069      virtual void maximumPivotsChanged();
00071 
00074      enum Persistence {
00075           normal = 0x00, // create (if necessary) and destroy
00076           keep = 0x01 // create (if necessary) and leave
00077      };
00078 
00080 
00081 
00088      ClpDualRowSteepest(int mode = 3);
00089 
00091      ClpDualRowSteepest(const ClpDualRowSteepest &);
00092 
00094      ClpDualRowSteepest & operator=(const ClpDualRowSteepest& rhs);
00095 
00097      void fill(const ClpDualRowSteepest& rhs);
00098 
00100      virtual ~ClpDualRowSteepest ();
00101 
00103      virtual ClpDualRowPivot * clone(bool copyData = true) const;
00104 
00106 
00108 
00109      inline int mode() const {
00110           return mode_;
00111      }
00113      inline void setMode(int mode) {
00114           mode_ = mode;
00115      }
00117      inline void setPersistence(Persistence life) {
00118           persistence_ = life;
00119      }
00120      inline Persistence persistence() const {
00121           return persistence_ ;
00122      }
00124 
00125      //---------------------------------------------------------------------------
00126 
00127 private:
00129 
00134      int state_;
00137      int mode_;
00139      Persistence persistence_;
00141      double * weights_;
00143      CoinIndexedVector * infeasible_;
00145      CoinIndexedVector * alternateWeights_;
00147      CoinIndexedVector * savedWeights_;
00149      int * dubiousWeights_;
00151 };
00152 
00153 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 9 Feb 2015 for Clp by  doxygen 1.6.1