00001 /* $Id: CbcFathom.hpp 1271 2009-11-05 15:57:25Z forrest $ */ 00002 // Copyright (C) 2004, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 #ifndef CbcFathom_H 00005 #define CbcFathom_H 00006 #include "CbcConfig.h" 00007 00008 class CbcModel; 00009 00010 //############################################################################# 00022 class CbcFathom { 00023 public: 00024 // Default Constructor 00025 CbcFathom (); 00026 00027 // Constructor with model - assumed before cuts 00028 CbcFathom (CbcModel & model); 00029 00030 virtual ~CbcFathom(); 00031 00033 virtual void setModel(CbcModel * model); 00034 00036 virtual CbcFathom * clone() const=0; 00037 00039 virtual void resetModel(CbcModel * model)=0; 00040 00049 virtual int fathom(double *& newSolution)=0; 00050 00051 // Is this method possible 00052 inline bool possible() const 00053 { return possible_;} 00054 00055 protected: 00056 00058 CbcModel * model_; 00060 bool possible_; 00061 private: 00062 00064 CbcFathom & operator=(const CbcFathom& rhs); 00065 00066 }; 00067 #ifdef COIN_HAS_CLP 00068 #include "OsiClpSolverInterface.hpp" 00069 00070 //############################################################################# 00071 00077 class CbcOsiSolver : public OsiClpSolverInterface { 00078 00079 public: 00080 00083 00084 CbcOsiSolver (); 00085 00087 virtual OsiSolverInterface * clone(bool copyData=true) const; 00088 00090 CbcOsiSolver (const CbcOsiSolver &); 00091 00093 CbcOsiSolver & operator=(const CbcOsiSolver& rhs); 00094 00096 virtual ~CbcOsiSolver (); 00097 00099 00100 00103 00104 inline void setCbcModel(CbcModel * model) 00105 { cbcModel_=model;} 00107 inline CbcModel * cbcModel() const 00108 { return cbcModel_;} 00110 00111 //--------------------------------------------------------------------------- 00112 00113 protected: 00114 00115 00118 00119 CbcModel * cbcModel_; 00121 }; 00122 #endif 00123 #endif