Cbc  trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
CbcPartialNodeInfo.hpp
Go to the documentation of this file.
00001 // $Id$
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 // Edwin 11/24/09 carved from CbcNode
00007 
00008 #ifndef CbcPartialNodeInfo_H
00009 #define CbcPartialNodeInfo_H
00010 
00011 #include <string>
00012 #include <vector>
00013 
00014 #include "CoinWarmStartBasis.hpp"
00015 #include "CoinSearchTree.hpp"
00016 #include "CbcBranchBase.hpp"
00017 #include "CbcNodeInfo.hpp"
00018 
00019 class OsiSolverInterface;
00020 class OsiSolverBranch;
00021 
00022 class OsiCuts;
00023 class OsiRowCut;
00024 class OsiRowCutDebugger;
00025 class CoinWarmStartBasis;
00026 class CbcCountRowCut;
00027 class CbcModel;
00028 class CbcNode;
00029 class CbcSubProblem;
00030 class CbcGeneralBranchingObject;
00039 class CbcPartialNodeInfo : public CbcNodeInfo {
00040 
00041 public:
00042 
00048     virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis,
00049                                CbcCountRowCut **addCuts,
00050                                int &currentNumberCuts) const ;
00051 
00053     virtual int applyBounds(int iColumn, double & lower, double & upper, int force) ;
00058     virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis & basis ) const ;
00059     // Default Constructor
00060     CbcPartialNodeInfo ();
00061 
00062     // Constructor from current state
00063     CbcPartialNodeInfo (CbcNodeInfo * parent, CbcNode * owner,
00064                         int numberChangedBounds, const int * variables,
00065                         const double * boundChanges,
00066                         const CoinWarmStartDiff *basisDiff) ;
00067 
00068     // Copy constructor
00069     CbcPartialNodeInfo ( const CbcPartialNodeInfo &);
00070 
00071     // Destructor
00072     ~CbcPartialNodeInfo ();
00073 
00075     virtual CbcNodeInfo * clone() const;
00077     inline const CoinWarmStartDiff *basisDiff() const {
00078         return basisDiff_ ;
00079     }
00081     inline const int * variables() const {
00082         return variables_;
00083     }
00084     // New bound
00085     inline const double * newBounds() const {
00086         return newBounds_;
00087     }
00089     inline int numberChangedBounds() const {
00090         return numberChangedBounds_;
00091     }
00092 protected:
00093     /* Data values */
00094 
00096     CoinWarmStartDiff *basisDiff_ ;
00098     int * variables_;
00099     // New bound
00100     double * newBounds_;
00102     int numberChangedBounds_;
00103 private:
00104 
00106     CbcPartialNodeInfo & operator=(const CbcPartialNodeInfo& rhs);
00107 };
00108 
00109 #endif //CbcPartialNodeInfo_H
00110 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines