Cbc trunk
|
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 CbcFullNodeInfo_H 00009 #define CbcFullNodeInfo_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; 00031 00032 //############################################################################# 00081 class CbcFullNodeInfo : public CbcNodeInfo { 00082 00083 public: 00084 00094 virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis, 00095 CbcCountRowCut **addCuts, 00096 int ¤tNumberCuts) const ; 00097 00099 virtual int applyBounds(int iColumn, double & lower, double & upper, int force) ; 00100 00105 virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis & basis) const ; 00106 // Default Constructor 00107 CbcFullNodeInfo (); 00108 00111 CbcFullNodeInfo (CbcModel * model, 00112 int numberRowsAtContinuous); 00113 00114 // Copy constructor 00115 CbcFullNodeInfo ( const CbcFullNodeInfo &); 00116 00117 // Destructor 00118 ~CbcFullNodeInfo (); 00119 00121 virtual CbcNodeInfo * clone() const; 00123 inline const double * lower() const { 00124 return lower_; 00125 } 00127 inline const double * upper() const { 00128 return upper_; 00129 } 00130 protected: 00131 // Data 00137 CoinWarmStartBasis *basis_; 00138 int numberIntegers_; 00139 // Bounds stored in full 00140 double * lower_; 00141 double * upper_; 00142 private: 00144 CbcFullNodeInfo & operator=(const CbcFullNodeInfo& rhs); 00145 }; 00146 #endif //CbcFullNodeInfo_H 00147