Cbc 2.10.10
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
19class OsiSolverInterface;
20class OsiSolverBranch;
21
22class OsiCuts;
23class OsiRowCut;
24class OsiRowCutDebugger;
25class CoinWarmStartBasis;
26class CbcCountRowCut;
27class CbcModel;
28class CbcNode;
29class CbcSubProblem;
30class CbcGeneralBranchingObject;
40
41public:
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 {
94 }
95
96protected:
97 /* Data values */
98
100 CoinWarmStartDiff *basisDiff_;
103 // New bound
104 double *newBounds_;
107
108private:
111};
112
113#endif //CbcPartialNodeInfo_H
114
115/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
116*/
OsiRowCut augmented with bookkeeping.
Simple Branch and bound class.
Definition: CbcModel.hpp:100
Information required to recreate the subproblem at this node.
Definition: CbcNodeInfo.hpp:68
CbcNodeInfo * parent() const
Parent of this.
const CbcNode * owner() const
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)
Information required while the node is live.
Definition: CbcNode.hpp:49
Holds information for recreating a subproblem by incremental change from the parent.
const double * newBounds() const
CoinWarmStartDiff * basisDiff_
Basis diff information.
CbcPartialNodeInfo(const CbcPartialNodeInfo &)
CbcPartialNodeInfo(CbcNodeInfo *parent, CbcNode *owner, int numberChangedBounds, const int *variables, const double *boundChanges, const CoinWarmStartDiff *basisDiff)
virtual CbcNodeInfo * clone() const
Clone.
virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis, CbcCountRowCut **addCuts, int &currentNumberCuts) const
Modify model according to information at node.
const CoinWarmStartDiff * basisDiff() const
Basis diff information.
CbcPartialNodeInfo & operator=(const CbcPartialNodeInfo &rhs)
Illegal Assignment operator.
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)
int numberChangedBounds() const
Number of bound changes.
int * variables_
Which variable (top bit if upper bound changing)
int numberChangedBounds_
Number of bound changes.
virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis &basis) const
Builds up row basis backwards (until original model).
const int * variables() const
Which variable (top bit if upper bound changing)