Bonmin  1.7
BonQpBranchingSolver.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2007, International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef BonQpBranchingSolver_H
00004 #define BonQpBranchingSolver_H
00005 
00006 #include "BonminConfig.h"
00007 #include "BonStrongBranchingSolver.hpp"
00008 #include "BonBranchingTQP.hpp"
00009 
00010 #ifdef COIN_HAS_FILTERSQP
00011 #include "BonFilterSolver.hpp"
00012 #include "BonBqpdSolver.hpp"
00013 #endif
00014 
00015 namespace Bonmin
00016 {
00017 
00024   class QpBranchingSolver : public StrongBranchingSolver
00025   {
00026 
00027   public:
00028 
00030     QpBranchingSolver (OsiTMINLPInterface * solver);
00031 
00033     QpBranchingSolver (const QpBranchingSolver &);
00034 
00036     QpBranchingSolver & operator= (const QpBranchingSolver& rhs);
00037 
00039     virtual ~QpBranchingSolver ();
00040 
00043     virtual void markHotStart(OsiTMINLPInterface* tminlp_interface);
00044 
00046     virtual TNLPSolver::ReturnStatus solveFromHotStart(OsiTMINLPInterface* tminlp_interface);
00047 
00049     virtual void unmarkHotStart(OsiTMINLPInterface* tminlp_interface);
00050 
00051   private:
00053     QpBranchingSolver ();
00054 
00055     Ipopt::SmartPtr<BranchingTQP> branching_tqp_;
00056 
00057     Ipopt::SmartPtr<TNLPSolver> tqp_solver_;
00058 
00059 #ifdef TIME_BQPD
00060     BqpdSolver::Times times_;
00061 #endif
00062 
00063     bool first_solve_;
00064   };
00065 
00066 }
00067 
00068 #endif