Bonmin  1.7
BonLpBranchingSolver.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2006, 2007 International Business Machines
00002 // Corporation and others.  All Rights Reserved.
00003 #ifndef BonLpBranchingSolver_H
00004 #define BonLpBranchingSolver_H
00005 
00006 #include "BonStrongBranchingSolver.hpp"
00007 #include "BonEcpCuts.hpp"
00008 
00009 namespace Bonmin
00010 {
00011 
00015   class LpBranchingSolver : public StrongBranchingSolver
00016   {
00017 
00018   public:
00019 
00021     LpBranchingSolver (BabSetupBase *b);
00023     LpBranchingSolver (const LpBranchingSolver &);
00024 
00026     LpBranchingSolver & operator= (const LpBranchingSolver& rhs);
00027 
00029     virtual ~LpBranchingSolver ();
00030 
00033     virtual void markHotStart(OsiTMINLPInterface* tminlp_interface);
00034 
00036     virtual TNLPSolver::ReturnStatus solveFromHotStart(OsiTMINLPInterface* tminlp_interface);
00037 
00039     virtual void unmarkHotStart(OsiTMINLPInterface* tminlp_interface);
00040 
00041     void setMaxCuttingPlaneIter(int num)
00042     {
00043       maxCuttingPlaneIterations_ = num;
00044     }
00045 
00046     static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions);
00047 
00048   private:
00050     LpBranchingSolver ();
00051 
00053     OsiSolverInterface* lin_;
00054 
00056     CoinWarmStart* warm_;
00057 
00059     EcpCuts* ecp_;
00060 
00062     int maxCuttingPlaneIterations_;
00063 
00065     double abs_ecp_tol_;
00066 
00068     double rel_ecp_tol_;
00069 
00070 
00071    enum WarmStartMethod {
00072      Basis=0 ,
00073      Clone 
00074    };
00076    WarmStartMethod warm_start_mode_;
00077   };
00078 
00079 }
00080 #endif