/home/coin/SVN-release/Bcp-1.2.1/Bcp/src/include/BCP_warmstart_primaldual.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2000, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef _BCP_WARMSTART_PRIMALDUAL_H
00004 #define _BCP_WARMSTART_PRIMALDUAL_H
00005 
00006 #include "BCP_enum.hpp"
00007 #include "BCP_warmstart.hpp"
00008 #include "BCP_vector_change.hpp"
00009 
00010 /* NOTE:
00011    Doxygen gracefully generates description for all inherited methods if they
00012    are not documented here. So the virtual methods are documented ONLY if they
00013    have something additional to say.
00014 */
00015 
00016 //#############################################################################
00017 
00021 class BCP_warmstart_primaldual : public BCP_warmstart {
00022 private:
00024   BCP_warmstart_primaldual& operator=(const BCP_warmstart_primaldual&);
00025 
00029   BCP_warmstart_primaldual() :
00030       _primal(BCP_Storage_WrtParent), _dual(BCP_Storage_WrtParent) {}
00031 
00032 private:
00034   BCP_vec_change<double> _primal;
00036   BCP_vec_change<double> _dual;
00039 public:
00043     BCP_warmstart_primaldual(BCP_buffer& buf) : _primal(buf), _dual(buf) {}
00047     BCP_warmstart_primaldual(const double* pfirst, const double* plast,
00048                              const double* dfirst, const double* dlast) :
00049         _primal(pfirst, plast), _dual(dfirst, dlast) {}
00051     BCP_warmstart_primaldual(const BCP_warmstart_primaldual& ws) :
00052         _primal(ws._primal), _dual(ws._dual) {}
00053 
00054     virtual ~BCP_warmstart_primaldual() {}
00057   // Inherited methods --------------------------------------------------------
00058 
00061   virtual CoinWarmStart* convert_to_CoinWarmStart() const;
00062 
00063   virtual BCP_storage_t storage() const {
00064       BCP_storage_t return_matrix[16] = {
00065           BCP_Storage_NoData, BCP_Storage_NoData,
00066           BCP_Storage_NoData, BCP_Storage_NoData,
00067           
00068           BCP_Storage_NoData, BCP_Storage_Explicit,
00069           BCP_Storage_WrtParent, BCP_Storage_NoData,
00070           
00071           BCP_Storage_NoData, BCP_Storage_WrtParent,
00072           BCP_Storage_WrtParent, BCP_Storage_NoData,
00073           
00074           BCP_Storage_NoData, BCP_Storage_NoData,
00075           BCP_Storage_NoData, BCP_Storage_NoData
00076       };
00077       int pst = _primal.storage();
00078       int dst = _dual.storage();
00079       return return_matrix[4*pst + dst];
00080   }
00081 
00082   virtual BCP_warmstart* clone() const {
00083     return new BCP_warmstart_primaldual(*this);
00084   }
00085 
00086   virtual BCP_warmstart* empty_wrt_this() const {
00087     // The default constructor creates an empty WrtParent warmstart info
00088     // (i.e., no change wrt the parent)
00089     return new BCP_warmstart_primaldual();
00090   }
00091 
00092   virtual int storage_size() const {
00093     return _primal.storage_size() + _dual.storage_size();
00094   }
00095 
00096   virtual void update(const BCP_warmstart* const change);
00097 
00098   virtual BCP_warmstart* as_change(const BCP_warmstart* const old_ws,
00099                                    const BCP_vec<int>& del_vars,
00100                                    const BCP_vec<int>& del_cuts,
00101                                    const double petol,
00102                                    const double detol) const; 
00103 
00104   // Not inherited methods ----------------------------------------------------
00105 
00107   void pack(BCP_buffer& buf) const {
00108       _primal.pack(buf);
00109       _dual.pack(buf);
00110   }
00111 };
00112 
00113 #endif

Generated on Thu Jan 15 03:00:59 2009 for coin-Bcp by  doxygen 1.4.7