00001 /* $Id: CbcFathom.hpp 1432 2010-02-07 19:33:53Z bjarni $ */ 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 /* 00009 This file contains two classes, CbcFathom and CbcOsiSolver. It's unclear why 00010 they're in the same file. CbcOsiSolver is a base class for CbcLinked. 00011 00012 --lh, 071031 -- 00013 */ 00014 00015 00016 class CbcModel; 00017 00018 //############################################################################# 00030 class CbcFathom { 00031 public: 00032 // Default Constructor 00033 CbcFathom (); 00034 00035 // Constructor with model - assumed before cuts 00036 CbcFathom (CbcModel & model); 00037 00038 virtual ~CbcFathom(); 00039 00041 virtual void setModel(CbcModel * model); 00042 00044 virtual CbcFathom * clone() const = 0; 00045 00047 virtual void resetModel(CbcModel * model) = 0; 00048 00057 virtual int fathom(double *& newSolution) = 0; 00058 00059 // Is this method possible 00060 inline bool possible() const { 00061 return possible_; 00062 } 00063 00064 protected: 00065 00067 CbcModel * model_; 00069 bool possible_; 00070 private: 00071 00073 CbcFathom & operator=(const CbcFathom& rhs); 00074 00075 }; 00076 #ifdef COIN_HAS_CLP 00077 #include "OsiClpSolverInterface.hpp" 00078 00079 //############################################################################# 00080 00088 class CbcOsiSolver : public OsiClpSolverInterface { 00089 00090 public: 00091 00094 00095 CbcOsiSolver (); 00096 00098 virtual OsiSolverInterface * clone(bool copyData = true) const; 00099 00101 CbcOsiSolver (const CbcOsiSolver &); 00102 00104 CbcOsiSolver & operator=(const CbcOsiSolver& rhs); 00105 00107 virtual ~CbcOsiSolver (); 00108 00110 00111 00114 00115 inline void setCbcModel(CbcModel * model) { 00116 cbcModel_ = model; 00117 } 00119 inline CbcModel * cbcModel() const { 00120 return cbcModel_; 00121 } 00123 00124 //--------------------------------------------------------------------------- 00125 00126 protected: 00127 00128 00131 00132 CbcModel * cbcModel_; 00134 }; 00135 #endif 00136 #endif 00137