ClpDualRowPivot.hpp

Go to the documentation of this file.
00001 /* $Id: ClpDualRowPivot.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 ClpDualRowPivot_H
00007 #define ClpDualRowPivot_H
00008 
00009 class ClpSimplex;
00010 class CoinIndexedVector;
00011 
00012 //#############################################################################
00013 
00022 class ClpDualRowPivot  {
00023 
00024 public:
00025 
00027 
00028 
00030      virtual int pivotRow() = 0;
00031 
00034      virtual double updateWeights(CoinIndexedVector * input,
00035                                   CoinIndexedVector * spare,
00036                                   CoinIndexedVector * spare2,
00037                                   CoinIndexedVector * updatedColumn) = 0;
00038 
00045      /* FIXME: this was pure virtul (=0). Why? */
00046      virtual void updatePrimalSolution(CoinIndexedVector * input,
00047                                        double theta,
00048                                        double & changeInObjective) = 0;
00061      virtual void saveWeights(ClpSimplex * model, int mode);
00063      virtual void checkAccuracy();
00065      virtual void unrollWeights();
00067      virtual void clearArrays();
00069      virtual bool looksOptimal() const {
00070           return false;
00071      }
00073      virtual void maximumPivotsChanged() {}
00075 
00076 
00078 
00079 
00080      ClpDualRowPivot();
00081 
00083      ClpDualRowPivot(const ClpDualRowPivot &);
00084 
00086      ClpDualRowPivot & operator=(const ClpDualRowPivot& rhs);
00087 
00089      virtual ~ClpDualRowPivot ();
00090 
00092      virtual ClpDualRowPivot * clone(bool copyData = true) const = 0;
00093 
00095 
00097 
00098 
00099      inline ClpSimplex * model() {
00100           return model_;
00101      }
00102 
00104      inline void setModel(ClpSimplex * newmodel) {
00105           model_ = newmodel;
00106      }
00107 
00109      inline int type() {
00110           return type_;
00111      }
00112 
00114 
00115      //---------------------------------------------------------------------------
00116 
00117 protected:
00119 
00120 
00121      ClpSimplex * model_;
00123      int type_;
00125 };
00126 #ifndef CLP_DUAL_COLUMN_MULTIPLIER
00127 //#define CLP_DUAL_COLUMN_MULTIPLIER 0.99999
00128 #endif
00129 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 8 Mar 2015 for Clp by  doxygen 1.6.1