AbcDualRowSteepest.hpp

Go to the documentation of this file.
00001 /* $Id: AbcDualRowSteepest.hpp 1910 2013-01-27 02:00:13Z stefan $ */
00002 // Copyright (C) 2002, International Business Machines
00003 // Corporation and others, Copyright (C) 2012, FasterCoin.  All Rights Reserved.
00004 // This code is licensed under the terms of the Eclipse Public License (EPL).
00005 
00006 #ifndef AbcDualRowSteepest_H
00007 #define AbcDualRowSteepest_H
00008 
00009 #include "AbcDualRowPivot.hpp"
00010 class CoinIndexedVector;
00011 
00012 
00013 //#############################################################################
00014 
00021 class AbcDualRowSteepest : public AbcDualRowPivot {
00022   
00023 public:
00024   
00026 
00027   
00029   virtual int pivotRow();
00030   
00033   virtual double updateWeights(CoinIndexedVector & input,CoinIndexedVector & updatedColumn);
00034   virtual double updateWeights1(CoinIndexedVector & input,CoinIndexedVector & updateColumn);
00035   virtual void updateWeightsOnly(CoinIndexedVector & input);
00037   virtual void updateWeights2(CoinIndexedVector & input,CoinIndexedVector & updateColumn);
00038   
00042   virtual void updatePrimalSolution(CoinIndexedVector & input,
00043                                     double theta);
00044   
00045   virtual void updatePrimalSolutionAndWeights(CoinIndexedVector & weightsVector,
00046                                               CoinIndexedVector & updateColumn,
00047                                               double theta);
00058   virtual void saveWeights(AbcSimplex * model, int mode);
00060   virtual void recomputeInfeasibilities();
00062   virtual void clearArrays();
00064   virtual bool looksOptimal() const;
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   AbcDualRowSteepest(int mode = 3);
00084   
00086   AbcDualRowSteepest(const AbcDualRowSteepest &);
00087   
00089   AbcDualRowSteepest & operator=(const AbcDualRowSteepest& rhs);
00090   
00092   void fill(const AbcDualRowSteepest& rhs);
00093   
00095   virtual ~AbcDualRowSteepest ();
00096   
00098   virtual AbcDualRowPivot * 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   inline CoinIndexedVector * infeasible() const
00116   { return infeasible_;}
00118   inline CoinIndexedVector * weights() const
00119   { return weights_;}
00121   inline AbcSimplex * model() const
00122   { return model_;}
00124   
00125   //---------------------------------------------------------------------------
00126   
00127 private:
00130   double norm_;
00132   double factorizationRatio_;
00138   int state_;
00141   int mode_;
00143   Persistence persistence_;
00145   CoinIndexedVector * weights_;
00147   CoinIndexedVector * infeasible_;
00149   CoinIndexedVector * savedWeights_;
00151 };
00152 
00153 // For Devex stuff
00154 #undef DEVEX_TRY_NORM
00155 #define DEVEX_TRY_NORM 1.0e-8
00156 #define DEVEX_ADD_ONE 1.0
00157 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 12 Nov 2013 for Clp by  doxygen 1.6.1