Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CbcPartialNodeInfo.hpp
Go to the documentation of this file.
1 // $Id: CbcPartialNodeInfo.hpp 2465 2019-01-03 19:26:52Z unxusr $
2 // Copyright (C) 2002, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
5 
6 // Edwin 11/24/09 carved from CbcNode
7 
8 #ifndef CbcPartialNodeInfo_H
9 #define CbcPartialNodeInfo_H
10 
11 #include <string>
12 #include <vector>
13 
14 #include "CoinWarmStartBasis.hpp"
15 #include "CoinSearchTree.hpp"
16 #include "CbcBranchBase.hpp"
17 #include "CbcNodeInfo.hpp"
18 
19 class OsiSolverInterface;
20 class OsiSolverBranch;
21 
22 class OsiCuts;
23 class OsiRowCut;
24 class OsiRowCutDebugger;
25 class CoinWarmStartBasis;
26 class CbcCountRowCut;
27 class CbcModel;
28 class CbcNode;
29 class CbcSubProblem;
30 class CbcGeneralBranchingObject;
40 
41 public:
47  virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis,
49  int &currentNumberCuts) const;
50 
52  virtual int applyBounds(int iColumn, double &lower, double &upper, int force);
57  virtual CbcNodeInfo *buildRowBasis(CoinWarmStartBasis &basis) const;
58  // Default Constructor
60 
61  // Constructor from current state
63  int numberChangedBounds, const int *variables,
64  const double *boundChanges,
66 
67  // Copy constructor
69 
70  // Destructor
72 
74  virtual CbcNodeInfo *clone() const;
76  inline const CoinWarmStartDiff *basisDiff() const
77  {
78  return basisDiff_;
79  }
81  inline const int *variables() const
82  {
83  return variables_;
84  }
85  // New bound
86  inline const double *newBounds() const
87  {
88  return newBounds_;
89  }
91  inline int numberChangedBounds() const
92  {
93  return numberChangedBounds_;
94  }
95 
96 protected:
97  /* Data values */
98 
103  // New bound
104  double *newBounds_;
107 
108 private:
111 };
112 
113 #endif //CbcPartialNodeInfo_H
114 
115 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
116 */
int numberChangedBounds() const
Number of bound changes.
virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis &basis) const
Builds up row basis backwards (until original model).
virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis, CbcCountRowCut **addCuts, int &currentNumberCuts) const
Modify model according to information at node.
const CbcNode * owner() const
int numberChangedBounds_
Number of bound changes.
const int * variables() const
Which variable (top bit if upper bound changing)
Collections of row cuts and column cuts.
Definition: OsiCuts.hpp:19
The default COIN simplex (basis-oriented) warm start class.
CbcPartialNodeInfo & operator=(const CbcPartialNodeInfo &rhs)
Illegal Assignment operator.
Abstract Base Class for describing an interface to a solver.
Holds information for recreating a subproblem by incremental change from the parent.
const CoinWarmStartDiff * basisDiff() const
Basis diff information.
CbcNodeInfo * parent() const
Parent of this.
int * variables_
Which variable (top bit if upper bound changing)
CoinWarmStartDiff * basisDiff_
Basis diff information.
OsiRowCut augmented with bookkeeping.
Information required while the node is live.
Definition: CbcNode.hpp:49
Row Cut Class.
Definition: OsiRowCut.hpp:29
Information required to recreate the subproblem at this node.
Definition: CbcNodeInfo.hpp:68
Abstract base class for warm start `diff&#39; objects.
const double * newBounds() const
Validate cuts against a known solution.
Solver Branch Class.
virtual int applyBounds(int iColumn, double &lower, double &upper, int force)
Just apply bounds to one variable - force means overwrite by lower,upper (1=&gt;infeasible) ...
Simple Branch and bound class.
Definition: CbcModel.hpp:100
virtual CbcNodeInfo * clone() const
Clone.
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)