Bonmin  1.7
BonStrongBranchingSolver.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2007, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 //
00004 // Author:  Andreas Waechter      2007-08-20    IBM
00005 //
00006 #ifndef BonStrongBranchingSolver_H
00007 #define BonStrongBranchingSolver_H
00008 
00009 #include "BonOsiTMINLPInterface.hpp"
00010 #include "BonRegisteredOptions.hpp"
00011 namespace Bonmin {
00012 
00017 class StrongBranchingSolver : public Ipopt::ReferencedObject  {
00018  
00019 public:
00020 
00022   StrongBranchingSolver (OsiTMINLPInterface * solver);
00023 
00025   StrongBranchingSolver & operator= (const StrongBranchingSolver& rhs);
00027   StrongBranchingSolver(const StrongBranchingSolver& rhs);
00028 
00030   virtual ~StrongBranchingSolver ();
00031 
00034   virtual void markHotStart(OsiTMINLPInterface* tminlp_interface) = 0;
00035 
00037   virtual TNLPSolver::ReturnStatus solveFromHotStart(OsiTMINLPInterface* tminlp_interface) = 0;
00038 
00040   virtual void unmarkHotStart(OsiTMINLPInterface* tminlp_interface) = 0;
00041 
00042 protected:
00043 
00044   inline Ipopt::SmartPtr<Ipopt::Journalist>& Jnlst()
00045   {
00046     return jnlst_;
00047   }
00048   inline Ipopt::SmartPtr<Ipopt::OptionsList>& Options()
00049   {
00050     return options_;
00051   }
00052   inline Ipopt::SmartPtr<RegisteredOptions>& RegOptions()
00053   {
00054     return reg_options_;
00055   }
00056 private:
00058   StrongBranchingSolver ();
00059 
00060   Ipopt::SmartPtr<Ipopt::Journalist> jnlst_;
00061   Ipopt::SmartPtr<Ipopt::OptionsList> options_;
00062   Ipopt::SmartPtr<Bonmin::RegisteredOptions> reg_options_;
00063 
00064   int bb_log_level_;
00065 
00066 };
00067 
00068 }
00069 #endif