/home/coin/SVN-release/OS-2.0.1/Couenne/src/problem/CouenneSolverInterface.hpp

Go to the documentation of this file.
00001 /* $Id: CouenneSolverInterface.hpp 154 2009-06-16 18:52:53Z pbelotti $ */
00002 /*
00003  * Name:    CouenneSolverInterface.hpp
00004  * Authors: Pietro Belotti, Carnegie Mellon University
00005  * Purpose: OsiSolverInterface with a pointer to a CouenneCutGenerator object
00006  *
00007  * (C) Carnegie-Mellon University, 2007-08. 
00008  * This file is licensed under the Common Public License (CPL)
00009  */
00010 
00011 #ifndef COUENNESOLVERINTERFACE_HPP
00012 #define COUENNESOLVERINTERFACE_HPP
00013 
00014 #include "CoinFinite.hpp"
00015 #include "OsiClpSolverInterface.hpp"
00016 #include "CouenneCutGenerator.hpp"
00017 
00018 class ClpSimplex;
00019 
00026  
00027 class CouenneSolverInterface: public OsiClpSolverInterface {
00028 
00029 public:
00030 
00032   CouenneSolverInterface (CouenneCutGenerator *cg = NULL);
00033 
00035   CouenneSolverInterface (const CouenneSolverInterface &src);
00036 
00038   ~CouenneSolverInterface ();
00039 
00041   virtual OsiSolverInterface * clone (bool copyData = true) const
00042   {return new CouenneSolverInterface (*this);}
00043 
00045   virtual bool isProvenPrimalInfeasible () const;
00046 
00048   virtual bool isProvenOptimal () const;
00049 
00051   CouenneCutGenerator *CutGen ()
00052   {return cutgen_;}
00053 
00057   void setCutGenPtr (CouenneCutGenerator *cg) {
00058     cutgen_ = cg;
00059     if (cutgen_ && !(cutgen_ -> enableLpImpliedBounds ()))
00060       specialOptions_ = specialOptions_ | 262144; 
00061   }
00062 
00064   virtual void initialSolve (); 
00065 
00067   virtual void resolve ();
00068 
00070   virtual void resolve_nobt ()
00071   {OsiClpSolverInterface::resolve ();}
00072 
00076 
00077   virtual void markHotStart();
00078 
00080   virtual void solveFromHotStart();
00081 
00083   virtual void unmarkHotStart();
00085 
00087   virtual int tightenBounds (int lightweight);
00088 
00090   virtual int tightenBoundsCLP (int lightweight);
00091 
00093   virtual int tightenBoundsCLP_Light (int lightweight);
00094 
00096   ClpSimplex *continuousModel ()
00097   {return continuousModel_;}
00098 
00100   bool &doingResolve () 
00101   {return doingResolve_;}
00102 
00104   bool isProvenDualInfeasible () const;
00105   //{return knowDualInfeasible_;}
00106 
00107 protected:
00108 
00112   CouenneCutGenerator *cutgen_;
00113 
00115   bool knowInfeasible_;
00116 
00118   bool knowOptimal_;
00119 
00121   bool knowDualInfeasible_;
00122 
00125   bool doingResolve_;
00126 };
00127 
00128 #endif

Generated on Thu Oct 8 03:02:57 2009 by  doxygen 1.4.7