Cbc  2.10.10
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CbcPartialNodeInfo.hpp
Go to the documentation of this file.
1 // $Id$
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,
65  const CoinWarmStartDiff *basisDiff);
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 
100  CoinWarmStartDiff *basisDiff_;
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 */
CbcPartialNodeInfo::basisDiff
const CoinWarmStartDiff * basisDiff() const
Basis diff information.
Definition: CbcPartialNodeInfo.hpp:76
CbcCountRowCut
OsiRowCut augmented with bookkeeping.
Definition: CbcCountRowCut.hpp:34
CbcPartialNodeInfo::newBounds
const double * newBounds() const
Definition: CbcPartialNodeInfo.hpp:86
CbcPartialNodeInfo
Holds information for recreating a subproblem by incremental change from the parent.
Definition: CbcPartialNodeInfo.hpp:39
CbcNodeInfo::parent
CbcNodeInfo * parent() const
Parent of this.
Definition: CbcNodeInfo.hpp:201
CbcPartialNodeInfo::basisDiff_
CoinWarmStartDiff * basisDiff_
Basis diff information.
Definition: CbcPartialNodeInfo.hpp:100
CbcPartialNodeInfo::applyToModel
virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis, CbcCountRowCut **addCuts, int &currentNumberCuts) const
Modify model according to information at node.
CbcNodeInfo::owner
const CbcNode * owner() const
Definition: CbcNodeInfo.hpp:256
CbcPartialNodeInfo::operator=
CbcPartialNodeInfo & operator=(const CbcPartialNodeInfo &rhs)
Illegal Assignment operator.
CbcModel
Simple Branch and bound class.
Definition: CbcModel.hpp:100
CbcPartialNodeInfo::variables
const int * variables() const
Which variable (top bit if upper bound changing)
Definition: CbcPartialNodeInfo.hpp:81
CbcPartialNodeInfo::CbcPartialNodeInfo
CbcPartialNodeInfo()
CbcBranchBase.hpp
CbcNodeInfo
Information required to recreate the subproblem at this node.
Definition: CbcNodeInfo.hpp:68
CbcPartialNodeInfo::buildRowBasis
virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis &basis) const
Builds up row basis backwards (until original model).
CbcPartialNodeInfo::numberChangedBounds_
int numberChangedBounds_
Number of bound changes.
Definition: CbcPartialNodeInfo.hpp:106
CbcPartialNodeInfo::variables_
int * variables_
Which variable (top bit if upper bound changing)
Definition: CbcPartialNodeInfo.hpp:102
CbcNodeInfo.hpp
CbcPartialNodeInfo::applyBounds
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)
CbcNode
Information required while the node is live.
Definition: CbcNode.hpp:49
CbcPartialNodeInfo::numberChangedBounds
int numberChangedBounds() const
Number of bound changes.
Definition: CbcPartialNodeInfo.hpp:91
CbcPartialNodeInfo::newBounds_
double * newBounds_
Definition: CbcPartialNodeInfo.hpp:104
CbcPartialNodeInfo::~CbcPartialNodeInfo
~CbcPartialNodeInfo()
CbcNodeInfo::addCuts
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)
CbcPartialNodeInfo::clone
virtual CbcNodeInfo * clone() const
Clone.