Cbc trunk
CbcFathom.hpp
Go to the documentation of this file.
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines