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 (OsiTMINLPInterface * solver); 00022 00024 LpBranchingSolver (const LpBranchingSolver &); 00025 00027 LpBranchingSolver & operator= (const LpBranchingSolver& rhs); 00028 00030 virtual ~LpBranchingSolver (); 00031 00034 virtual void markHotStart(OsiTMINLPInterface* tminlp_interface); 00035 00037 virtual TNLPSolver::ReturnStatus solveFromHotStart(OsiTMINLPInterface* tminlp_interface); 00038 00040 virtual void unmarkHotStart(OsiTMINLPInterface* tminlp_interface); 00041 00042 void setMaxCuttingPlaneIter(int num) 00043 { 00044 maxCuttingPlaneIterations_ = num; 00045 } 00046 00047 static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions); 00048 00049 private: 00051 LpBranchingSolver (); 00052 00054 OsiSolverInterface* lin_; 00055 00057 CoinWarmStart* warm_; 00058 00060 EcpCuts* ecp_; 00061 00063 int maxCuttingPlaneIterations_; 00064 00066 double abs_ecp_tol_; 00067 00069 double rel_ecp_tol_; 00070 00071 00072 enum WarmStartMethod { 00073 Basis=0 , 00074 Clone 00075 }; 00077 WarmStartMethod warm_start_mode_; 00078 }; 00079 00080 } 00081 #endif