00001 // Copyright (C) 2004, International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef CbcFathom_H 00004 #define CbcFathom_H 00005 #include "CbcConfig.h" 00006 00007 class CbcModel; 00008 00009 //############################################################################# 00021 class CbcFathom { 00022 public: 00023 // Default Constructor 00024 CbcFathom (); 00025 00026 // Constructor with model - assumed before cuts 00027 CbcFathom (CbcModel & model); 00028 00029 virtual ~CbcFathom(); 00030 00032 virtual void setModel(CbcModel * model); 00033 00035 virtual CbcFathom * clone() const=0; 00036 00038 virtual void resetModel(CbcModel * model)=0; 00039 00048 virtual int fathom(double *& newSolution)=0; 00049 00050 // Is this method possible 00051 inline bool possible() const 00052 { return possible_;} 00053 00054 protected: 00055 00057 CbcModel * model_; 00059 bool possible_; 00060 private: 00061 00063 CbcFathom & operator=(const CbcFathom& rhs); 00064 00065 }; 00066 #ifdef COIN_HAS_CLP 00067 #include "OsiClpSolverInterface.hpp" 00068 00069 //############################################################################# 00070 00076 class CbcOsiSolver : public OsiClpSolverInterface { 00077 00078 public: 00079 00082 00083 CbcOsiSolver (); 00084 00086 virtual OsiSolverInterface * clone(bool copyData=true) const; 00087 00089 CbcOsiSolver (const CbcOsiSolver &); 00090 00092 CbcOsiSolver & operator=(const CbcOsiSolver& rhs); 00093 00095 virtual ~CbcOsiSolver (); 00096 00098 00099 00102 00103 inline void setCbcModel(CbcModel * model) 00104 { cbcModel_=model;} 00106 inline CbcModel * cbcModel() const 00107 { return cbcModel_;} 00109 00110 //--------------------------------------------------------------------------- 00111 00112 protected: 00113 00114 00117 00118 CbcModel * cbcModel_; 00120 }; 00121 #endif 00122 #endif