AbcDualRowPivot.hpp

Go to the documentation of this file.
00001 /* $Id: AbcDualRowPivot.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 AbcDualRowPivot_H
00007 #define AbcDualRowPivot_H
00008 #include "AbcCommon.hpp"
00009 
00010 class AbcSimplex;
00011 class CoinIndexedVector;
00012 
00013 //#############################################################################
00014 
00023 class AbcDualRowPivot  {
00024   
00025 public:
00026   
00028 
00029   
00031   virtual int pivotRow() = 0;
00032   
00035   virtual double updateWeights1(CoinIndexedVector & input,CoinIndexedVector & updateColumn) = 0;
00036   virtual void updateWeightsOnly(CoinIndexedVector & input) = 0;
00037   virtual double updateWeights(CoinIndexedVector & input,CoinIndexedVector & updateColumn) = 0;
00039   virtual void updateWeights2(CoinIndexedVector & input,CoinIndexedVector & updateColumn) = 0;
00040   
00046   virtual void updatePrimalSolution(CoinIndexedVector & updateColumn,
00047                                     double theta) = 0;
00048   virtual void updatePrimalSolutionAndWeights(CoinIndexedVector & weightsVector,
00049                                     CoinIndexedVector & updateColumn,
00050                                               double theta);
00061   virtual void saveWeights(AbcSimplex * model, int mode);
00063   virtual void recomputeInfeasibilities();
00065   virtual void checkAccuracy();
00067   virtual void clearArrays();
00069   virtual bool looksOptimal() const {
00070     return false;
00071   }
00073   
00074   
00076 
00077 
00078   AbcDualRowPivot();
00079   
00081   AbcDualRowPivot(const AbcDualRowPivot &);
00082   
00084   AbcDualRowPivot & operator=(const AbcDualRowPivot& rhs);
00085   
00087   virtual ~AbcDualRowPivot ();
00088   
00090   virtual AbcDualRowPivot * clone(bool copyData = true) const = 0;
00091   
00093   
00095 
00096 
00097   inline AbcSimplex * model() {
00098     return model_;
00099   }
00100   
00102   inline void setModel(AbcSimplex * newmodel) {
00103     model_ = newmodel;
00104   }
00105   
00107   inline int type() {
00108     return type_;
00109   }
00110   
00112   
00113   //---------------------------------------------------------------------------
00114   
00115 protected:
00117 
00118 
00119   AbcSimplex * model_;
00121   int type_;
00123 };
00124 #ifndef CLP_DUAL_COLUMN_MULTIPLIER
00125 //#define CLP_DUAL_COLUMN_MULTIPLIER 0.99999
00126 #endif
00127 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 9 Feb 2015 for Clp by  doxygen 1.6.1