00001 // $Id: CbcSubProblem.hpp 1899 2013-04-09 18:12:08Z stefan $ 00002 // Copyright (C) 2002, International Business Machines 00003 // Corporation and others. All Rights Reserved. 00004 // This code is licensed under the terms of the Eclipse Public License (EPL). 00005 00006 // Edwin 11/10/2009-- carved out of CbcBranchActual 00007 00008 #ifndef CbcSubProblem_H 00009 #define CbcSubProblem_H 00010 00011 #ifdef COIN_HAS_CLP 00012 #include "ClpSimplex.hpp" 00013 #include "ClpNode.hpp" 00014 00018 class CoinWarmStartDiff; 00019 class CbcSubProblem { 00020 00021 public: 00022 00024 CbcSubProblem (); 00025 00027 CbcSubProblem (const OsiSolverInterface * solver, 00028 const double * lowerBefore, 00029 const double * upperBefore, 00030 const unsigned char * status, 00031 int depth); 00032 00034 CbcSubProblem ( const CbcSubProblem &); 00035 00037 CbcSubProblem & operator= (const CbcSubProblem& rhs); 00038 00040 virtual ~CbcSubProblem (); 00041 00043 void takeOver ( CbcSubProblem &, bool cleanup); 00045 void apply(OsiSolverInterface * model, int what = 3) const; 00046 00047 public: 00049 double objectiveValue_; 00051 double sumInfeasibilities_; 00053 double branchValue_; 00055 double djValue_; 00058 int * variables_; 00060 double * newBounds_; 00062 mutable CoinWarmStartBasis * status_; 00064 int depth_; 00066 int numberChangedBounds_; 00068 int numberInfeasibilities_; 00076 int problemStatus_; 00078 int branchVariable_; 00079 }; 00080 00081 #endif //COIN_HAS_CLP 00082 #endif 00083