# 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