- Main Page
- Namespaces
- Classes
- Files
- Directories

- Search for |

- File List
- File Members

# CoinWarmStartDual.hpp

Go to the documentation of this file.

    00001 /* $Id: CoinWarmStartDual.hpp 1372 2011-01-03 23:31:00Z lou $ */
    00002 // Copyright (C) 2000, 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 CoinWarmStartDual_H
    00007 #define CoinWarmStartDual_H
    00008
    00009 #include "CoinHelperFunctions.hpp"
    00010 #include "CoinWarmStart.hpp"
    00011 #include "CoinWarmStartVector.hpp"
    00012
    00013
    00014 //#############################################################################
    00015
    00018 class CoinWarmStartDual : public virtual CoinWarmStart {
    00019 public:
    00021    inline int size() const { return dual_.size(); }
    00023    inline const double * dual() const { return dual_.values(); }
    00024
    00028    inline void assignDual(int size, double *& dual)
    00029     { dual_.assignVector(size, dual); }
    00030
    00031    CoinWarmStartDual() {}
    00032
    00033    CoinWarmStartDual(int size, const double * dual) : dual_(size, dual) {}
    00034
    00035    CoinWarmStartDual(const CoinWarmStartDual& rhs) : dual_(rhs.dual_) {}
    00036
    00037    CoinWarmStartDual& operator=(const CoinWarmStartDual& rhs) {
    00038      if (this != &rhs) {
    00039        dual_ = rhs.dual_;
    00040      }
    00041      return *this;
    00042    }
    00043
    00045    virtual CoinWarmStart *clone() const {
    00046       return new CoinWarmStartDual(*this);
    00047    }
    00048
    00049    virtual ~CoinWarmStartDual() {}
    00050
    00053
    00061   virtual CoinWarmStartDiff*
    00062   generateDiff (const CoinWarmStart *const oldCWS) const ;
    00063
    00070   virtual void applyDiff (const CoinWarmStartDiff *const cwsdDiff) ;
    00071
    00072 #if 0
    00073 protected:
    00074   inline const CoinWarmStartVector<double>& warmStartVector() const { return dual_; }
    00075 #endif
    00076
    00078
    00079 private:
    00081   CoinWarmStartVector<double> dual_;
    00082 };
    00083
    00084 //#############################################################################
    00085
    00101 class CoinWarmStartDualDiff : public virtual CoinWarmStartDiff
    00102 { public:
    00103
    00105   virtual CoinWarmStartDiff *clone() const
    00106   {
    00107       return new CoinWarmStartDualDiff(*this) ;
    00108   }
    00109
    00111   virtual CoinWarmStartDualDiff &operator= (const CoinWarmStartDualDiff &rhs)
    00112   {
    00113       if (this != &rhs) {
    00114           diff_ = rhs.diff_;
    00115       }
    00116       return *this;
    00117   }
    00118
    00120   virtual ~CoinWarmStartDualDiff() {}
    00121
    00122   protected:
    00123
    00130   CoinWarmStartDualDiff () : diff_() {}
    00131
    00142   CoinWarmStartDualDiff (const CoinWarmStartDualDiff &rhs) :
    00143       diff_(rhs.diff_) {}
    00144
    00145   private:
    00146
    00147   friend CoinWarmStartDiff*
    00148     CoinWarmStartDual::generateDiff(const CoinWarmStart *const oldCWS) const ;
    00149   friend void
    00150     CoinWarmStartDual::applyDiff(const CoinWarmStartDiff *const diff) ;
    00151
    00153   CoinWarmStartDualDiff (int sze, const unsigned int *const diffNdxs,
    00154                          const double *const diffVals) :
    00155       diff_(sze, diffNdxs, diffVals) {}
    00156
    00161   CoinWarmStartVectorDiff<double> diff_;
    00162 };
    00163
    00164
    00165 #endif
    00166