CbcPartialNodeInfo.hpp
Go to the documentation of this file.
1 // Edwin 11/24/09 carved from CbcNode
2 #ifndef CbcPartialNodeInfo_H
3 #define CbcPartialNodeInfo_H
4 
5 #include <string>
6 #include <vector>
7 
8 #include "CoinWarmStartBasis.hpp"
9 #include "CoinSearchTree.hpp"
10 #include "CbcBranchBase.hpp"
11 #include "CbcNodeInfo.hpp"
12 
13 class OsiSolverInterface;
14 class OsiSolverBranch;
15 
16 class OsiCuts;
17 class OsiRowCut;
18 class OsiRowCutDebugger;
19 class CoinWarmStartBasis;
20 class CbcCountRowCut;
21 class CbcModel;
22 class CbcNode;
23 class CbcSubProblem;
24 class CbcGeneralBranchingObject;
33 class CbcPartialNodeInfo : public CbcNodeInfo {
34 
35 public:
36 
42  virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis,
44  int &currentNumberCuts) const ;
45 
47  virtual int applyBounds(int iColumn, double & lower, double & upper, int force) ;
52  virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis & basis ) const ;
53  // Default Constructor
55 
56  // Constructor from current state
58  int numberChangedBounds, const int * variables,
59  const double * boundChanges,
60  const CoinWarmStartDiff *basisDiff) ;
61 
62  // Copy constructor
64 
65  // Destructor
67 
69  virtual CbcNodeInfo * clone() const;
71  inline const CoinWarmStartDiff *basisDiff() const {
72  return basisDiff_ ;
73  }
75  inline const int * variables() const {
76  return variables_;
77  }
78  // New bound
79  inline const double * newBounds() const {
80  return newBounds_;
81  }
83  inline int numberChangedBounds() const {
84  return numberChangedBounds_;
85  }
86 protected:
87  /* Data values */
88 
90  CoinWarmStartDiff *basisDiff_ ;
92  int * variables_;
93  // New bound
94  double * newBounds_;
97 private:
98 
101 };
102 
103 #endif //CbcPartialNodeInfo_H
104 
CoinWarmStartDiff * basisDiff_
Basis diff information.
virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis &basis) const
Builds up row basis backwards (until original model).
int numberChangedBounds_
Number of bound changes.
virtual int applyBounds(int iColumn, double &lower, double &upper, int force)
Just apply bounds to one variable - force means overwrite by lower,upper (1=>infeasible) ...
Information required to recreate the subproblem at this node.
Definition: CbcNodeInfo.hpp:62
const CoinWarmStartDiff * basisDiff() const
Basis diff information.
CbcNodeInfo * parent() const
Parent of this.
const int * variables() const
Which variable (top bit if upper bound changing)
int numberChangedBounds() const
Number of bound changes.
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)
const CbcNode * owner() const
Holds information for recreating a subproblem by incremental change from the parent.
const double * newBounds() const
CbcPartialNodeInfo & operator=(const CbcPartialNodeInfo &rhs)
Illegal Assignment operator.
Information required while the node is live.
Definition: CbcNode.hpp:47
OsiRowCut augmented with bookkeeping.
virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis, CbcCountRowCut **addCuts, int &currentNumberCuts) const
Modify model according to information at node.
virtual CbcNodeInfo * clone() const
Clone.
int * variables_
Which variable (top bit if upper bound changing)
Simple Branch and bound class.
Definition: CbcModel.hpp:98