00001 // Copyright (C) 2006, 2007 International Business Machines 00002 // Corporation and others. All Rights Reserved. 00003 #ifndef BonCurvBranchingSolver_H 00004 #define BonCurvBranchingSolver_H 00005 00006 #include "BonStrongBranchingSolver.hpp" 00007 #include "BonCurvatureEstimator.hpp" 00008 00009 namespace Bonmin 00010 { 00011 00015 class CurvBranchingSolver : public StrongBranchingSolver 00016 { 00017 00018 public: 00019 00021 CurvBranchingSolver (OsiTMINLPInterface * solver); 00022 00024 CurvBranchingSolver (const CurvBranchingSolver &); 00025 00027 CurvBranchingSolver & operator= (const CurvBranchingSolver& rhs); 00028 00030 virtual ~CurvBranchingSolver (); 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 private: 00044 CurvBranchingSolver (); 00045 00046 SmartPtr<CurvatureEstimator> cur_estimator_; 00047 00050 bool new_bounds_; 00051 bool new_x_; 00052 bool new_mults_; 00053 double* orig_d_; 00054 double* projected_d_; 00055 Number* x_l_orig_; 00056 Number* x_u_orig_; 00057 Number* g_l_orig_; 00058 Number* g_u_orig_; 00060 00063 int numCols_; 00064 int numRows_; 00065 const double* solution_; 00066 const double* duals_; 00067 double obj_value_; 00069 00070 }; 00071 00072 } 00073 00074 #endif