Cbc  2.9.9
 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 1899 2013-04-09 18:12:08Z stefan $
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:
42 
48  virtual void applyToModel (CbcModel *model, CoinWarmStartBasis *&basis,
50  int &currentNumberCuts) const ;
51 
53  virtual int applyBounds(int iColumn, double & lower, double & upper, int force) ;
58  virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis & basis ) const ;
59  // Default Constructor
61 
62  // Constructor from current state
64  int numberChangedBounds, const int * variables,
65  const double * boundChanges,
67 
68  // Copy constructor
70 
71  // Destructor
73 
75  virtual CbcNodeInfo * clone() const;
77  inline const CoinWarmStartDiff *basisDiff() const {
78  return basisDiff_ ;
79  }
81  inline const int * variables() const {
82  return variables_;
83  }
84  // New bound
85  inline const double * newBounds() const {
86  return newBounds_;
87  }
89  inline int numberChangedBounds() const {
90  return numberChangedBounds_;
91  }
92 protected:
93  /* Data values */
94 
98  int * variables_;
99  // New bound
100  double * newBounds_;
103 private:
104 
107 };
108 
109 #endif //CbcPartialNodeInfo_H
110 
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:101
virtual CbcNodeInfo * clone() const
Clone.
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)