Bonmin
1.7
|
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