- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/svn-release/Smi-0.93.1/Clp/src/ClpDualRowSteepest.hpp

Go to the documentation of this file.

    00001 /* $Id: ClpDualRowSteepest.hpp 1665 2011-01-04 17:55:54Z lou $ */
    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