summaryrefslogtreecommitdiff
path: root/newstructure/thirdparty/linux/include/coin/CbcSubProblem.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'newstructure/thirdparty/linux/include/coin/CbcSubProblem.hpp')
-rw-r--r--newstructure/thirdparty/linux/include/coin/CbcSubProblem.hpp83
1 files changed, 83 insertions, 0 deletions
diff --git a/newstructure/thirdparty/linux/include/coin/CbcSubProblem.hpp b/newstructure/thirdparty/linux/include/coin/CbcSubProblem.hpp
new file mode 100644
index 0000000..4a7a580
--- /dev/null
+++ b/newstructure/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
+