# 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