00001 // (C) Copyright International Business Machines Corporation 2007 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // Authors : 00006 // Pierre Bonami, International Business Machines Corporation 00007 // 00008 // Date : 04/19/2007 00009 00010 #ifndef BonCbc_H 00011 #define BonCbc_H 00012 00013 #include "BonBabSetupBase.hpp" 00014 #include "CbcModel.hpp" 00015 00016 namespace Bonmin 00017 { 00018 00019 class Bab 00020 { 00021 public: 00023 enum MipStatuses {FeasibleOptimal , 00024 ProvenInfeasible , 00025 Feasible , 00026 NoSolutionKnown}; 00028 Bab(); 00030 virtual ~Bab(); 00032 virtual void branchAndBound(BabSetupBase & s); 00033 00035 virtual void operator()(BabSetupBase & s); 00036 00039 const double * bestSolution() const 00040 { 00041 return bestSolution_; 00042 } 00044 double bestObj() const 00045 { 00046 return bestObj_; 00047 } 00048 00050 MipStatuses mipStatus() const 00051 { 00052 return mipStatus_; 00053 } 00055 double bestBound(); 00057 int numNodes() const 00058 { 00059 return numNodes_; 00060 } 00062 int iterationCount() 00063 { 00064 return mipIterationCount_; 00065 } 00067 double continuousRelaxation() 00068 { 00069 return continuousRelaxation_; 00070 } 00071 00074 virtual void replaceIntegers(OsiObject ** objects, int numberObjects) 00075 {} 00077 const CbcModel& model() const 00078 { 00079 return model_; 00080 } 00081 00084 CbcModel& model() 00085 { 00086 return model_; 00087 } 00089 void setUsingCouenne(bool v) 00090 { 00091 usingCouenne_ = v; 00092 } 00093 00095 bool getUsingCouenne() 00096 { 00097 return usingCouenne_; 00098 } 00099 protected: 00101 double * bestSolution_; 00102 00104 MipStatuses mipStatus_; 00106 double bestObj_; 00108 double bestBound_; 00110 double continuousRelaxation_; 00112 int numNodes_; 00114 int mipIterationCount_; 00116 CbcModel model_; 00118 CoinMessageHandler * modelHandler_; 00122 OsiObject** objects_; 00124 int nObjects_; 00125 00127 bool usingCouenne_; 00128 }; 00129 } 00130 #endif