00001 // Edwin 11/24/09 carved from CbcNode 00002 #ifndef CbcFullNodeInfo_H 00003 #define CbcFullNodeInfo_H 00004 00005 #include <string> 00006 #include <vector> 00007 00008 #include "CoinWarmStartBasis.hpp" 00009 #include "CoinSearchTree.hpp" 00010 #include "CbcBranchBase.hpp" 00011 #include "CbcNodeInfo.hpp" 00012 00013 class OsiSolverInterface; 00014 class OsiSolverBranch; 00015 00016 class OsiCuts; 00017 class OsiRowCut; 00018 class OsiRowCutDebugger; 00019 class CoinWarmStartBasis; 00020 class CbcCountRowCut; 00021 class CbcModel; 00022 class CbcNode; 00023 class CbcSubProblem; 00024 class CbcGeneralBranchingObject; 00025 00026 //############################################################################# 00075 class CbcFullNodeInfo : public CbcNodeInfo { 00076 00077 public: 00078 00088 virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis, 00089 CbcCountRowCut **addCuts, 00090 int ¤tNumberCuts) const ; 00091 00093 virtual int applyBounds(int iColumn, double & lower, double & upper, int force) ; 00094 00099 virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis & basis) const ; 00100 // Default Constructor 00101 CbcFullNodeInfo (); 00102 00105 CbcFullNodeInfo (CbcModel * model, 00106 int numberRowsAtContinuous); 00107 00108 // Copy constructor 00109 CbcFullNodeInfo ( const CbcFullNodeInfo &); 00110 00111 // Destructor 00112 ~CbcFullNodeInfo (); 00113 00115 virtual CbcNodeInfo * clone() const; 00117 inline const double * lower() const { 00118 return lower_; 00119 } 00121 inline const double * upper() const { 00122 return upper_; 00123 } 00124 protected: 00125 // Data 00131 CoinWarmStartBasis *basis_; 00132 int numberIntegers_; 00133 // Bounds stored in full 00134 double * lower_; 00135 double * upper_; 00136 private: 00138 CbcFullNodeInfo & operator=(const CbcFullNodeInfo& rhs); 00139 }; 00140 #endif //CbcFullNodeInfo_H 00141