00001 #ifndef BonminBB_hpp 00002 #define BonminBB_hpp 00003 00004 #include "BonminCbcParam.hpp" 00005 00006 class IpoptInterface; 00007 class CbcObject; 00009 class BonminBB 00010 { 00011 public: 00013 enum MipStatuses {FeasibleOptimal , 00014 ProvenInfeasible , 00015 Feasible , 00016 NoSolutionKnown}; 00018 BonminBB(); 00020 virtual ~BonminBB(); 00022 void branchAndBound(IpoptInterface &ip, 00023 const BonminCbcParam&par); 00024 00026 void operator()(IpoptInterface &ip, const BonminCbcParam& par) 00027 { 00028 branchAndBound(ip,par); 00029 } 00030 00033 const Number * bestSolution() const 00034 { 00035 return bestSolution_; 00036 } 00038 double bestObj() const 00039 { 00040 return bestObj_; 00041 } 00043 MipStatuses mipStatus() const 00044 { 00045 return mipStatus_; 00046 } 00048 double bestBound(); 00050 int numNodes() const 00051 { 00052 return numNodes_; 00053 } 00055 int iterationCount() 00056 { 00057 return mipIterationCount_; 00058 } 00060 double continuousRelaxation() 00061 { 00062 return continuousRelaxation_; 00063 } 00064 00067 virtual void replaceIntegers(CbcObject ** objects, int numberObjects) 00068 {}; 00069 private: 00071 double * bestSolution_; 00073 MipStatuses mipStatus_; 00075 double bestObj_; 00077 double bestBound_; 00079 double continuousRelaxation_; 00081 int numNodes_; 00083 int mipIterationCount_; 00084 }; 00085 #endif