Cbc
trunk
|
00001 /* $Id$ */ 00002 // Copyright (C) 2004, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 00005 00006 #ifndef CbcFathom_H 00007 #define CbcFathom_H 00008 #include "CbcConfig.h" 00009 00010 /* 00011 This file contains two classes, CbcFathom and CbcOsiSolver. It's unclear why 00012 they're in the same file. CbcOsiSolver is a base class for CbcLinked. 00013 00014 --lh, 071031 -- 00015 */ 00016 00017 00018 class CbcModel; 00019 00020 //############################################################################# 00032 class CbcFathom { 00033 public: 00034 // Default Constructor 00035 CbcFathom (); 00036 00037 // Constructor with model - assumed before cuts 00038 CbcFathom (CbcModel & model); 00039 00040 virtual ~CbcFathom(); 00041 00043 virtual void setModel(CbcModel * model); 00044 00046 virtual CbcFathom * clone() const = 0; 00047 00049 virtual void resetModel(CbcModel * model) = 0; 00050 00059 virtual int fathom(double *& newSolution) = 0; 00060 00061 // Is this method possible 00062 inline bool possible() const { 00063 return possible_; 00064 } 00065 00066 protected: 00067 00069 CbcModel * model_; 00071 bool possible_; 00072 private: 00073 00075 CbcFathom & operator=(const CbcFathom& rhs); 00076 00077 }; 00078 #ifdef COIN_HAS_CLP 00079 #include "OsiClpSolverInterface.hpp" 00080 00081 //############################################################################# 00082 00090 class CbcOsiSolver : public OsiClpSolverInterface { 00091 00092 public: 00093 00096 00097 CbcOsiSolver (); 00098 00100 virtual OsiSolverInterface * clone(bool copyData = true) const; 00101 00103 CbcOsiSolver (const CbcOsiSolver &); 00104 00106 CbcOsiSolver & operator=(const CbcOsiSolver& rhs); 00107 00109 virtual ~CbcOsiSolver (); 00110 00112 00113 00116 00117 inline void setCbcModel(CbcModel * model) { 00118 cbcModel_ = model; 00119 } 00121 inline CbcModel * cbcModel() const { 00122 return cbcModel_; 00123 } 00125 00126 //--------------------------------------------------------------------------- 00127 00128 protected: 00129 00130 00133 00134 CbcModel * cbcModel_; 00136 }; 00137 #endif 00138 #endif 00139