diff options
Diffstat (limited to 'thirdparty/linux/include/coin/CbcSubProblem.hpp')
-rw-r--r-- | thirdparty/linux/include/coin/CbcSubProblem.hpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin/CbcSubProblem.hpp b/thirdparty/linux/include/coin/CbcSubProblem.hpp new file mode 100644 index 0000000..4a7a580 --- /dev/null +++ b/thirdparty/linux/include/coin/CbcSubProblem.hpp @@ -0,0 +1,83 @@ +// $Id: CbcSubProblem.hpp 1899 2013-04-09 18:12:08Z stefan $ +// Copyright (C) 2002, International Business Machines +// Corporation and others. All Rights Reserved. +// This code is licensed under the terms of the Eclipse Public License (EPL). + +// Edwin 11/10/2009-- carved out of CbcBranchActual + +#ifndef CbcSubProblem_H +#define CbcSubProblem_H + +#ifdef COIN_HAS_CLP +#include "ClpSimplex.hpp" +#include "ClpNode.hpp" + +/** Defines a general subproblem + Basis will be made more compact later +*/ +class CoinWarmStartDiff; +class CbcSubProblem { + +public: + + /// Default constructor + CbcSubProblem (); + + /// Constructor from model + CbcSubProblem (const OsiSolverInterface * solver, + const double * lowerBefore, + const double * upperBefore, + const unsigned char * status, + int depth); + + /// Copy constructor + CbcSubProblem ( const CbcSubProblem &); + + /// Assignment operator + CbcSubProblem & operator= (const CbcSubProblem& rhs); + + /// Destructor + virtual ~CbcSubProblem (); + + /// Take over + void takeOver ( CbcSubProblem &, bool cleanup); + /// Apply subproblem (1=bounds, 2=basis, 3=both) + void apply(OsiSolverInterface * model, int what = 3) const; + +public: + /// Value of objective + double objectiveValue_; + /// Sum of infeasibilities + double sumInfeasibilities_; + /// Branch value + double branchValue_; + /// Dj on branching variable at end + double djValue_; + /** Which variable (top bit if upper bound changing) + next bit if changing on down branch only */ + int * variables_; + /// New bound + double * newBounds_; + /// Status + mutable CoinWarmStartBasis * status_; + /// Depth + int depth_; + /// Number of Extra bound changes + int numberChangedBounds_; + /// Number of infeasibilities + int numberInfeasibilities_; + /** Status 1 bit going up on first, 2 bit set first branch infeasible on second, 4 bit redundant branch, + bits after 256 give reason for stopping (just last node) + 0 - solution + 1 - infeasible + 2 - maximum depth + >2 - error or max time or something + */ + int problemStatus_; + /// Variable branched on + int branchVariable_; +}; + +#endif //COIN_HAS_CLP +#endif + |