Cbc 2.10.5
Loading...
Searching...
No Matches
CbcFullNodeInfo.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 CbcFullNodeInfo_H
9#define CbcFullNodeInfo_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;
31
32//#############################################################################
81
82public:
92 virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis,
94 int &currentNumberCuts) const;
95
97 virtual int applyBounds(int iColumn, double &lower, double &upper, int force);
98
103 virtual CbcNodeInfo *buildRowBasis(CoinWarmStartBasis &basis) const;
104 // Default Constructor
106
110 int numberRowsAtContinuous);
111
112 // Copy constructor
114
115 // Destructor
117
119 virtual CbcNodeInfo *clone() const;
121 inline const double *lower() const
122 {
123 return lower_;
124 }
126 inline void setColLower(int sequence, double value)
127 {
128 lower_[sequence] = value;
129 }
131 inline double *mutableLower() const
132 {
133 return lower_;
134 }
136 inline const double *upper() const
137 {
138 return upper_;
139 }
141 inline void setColUpper(int sequence, double value)
142 {
143 upper_[sequence] = value;
144 }
146 inline double *mutableUpper() const
147 {
148 return upper_;
149 }
150
151protected:
152 // Data
158 CoinWarmStartBasis *basis_;
160 // Bounds stored in full
161 double *lower_;
162 double *upper_;
163
164private:
167};
168#endif //CbcFullNodeInfo_H
169
170/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
171*/
OsiRowCut augmented with bookkeeping.
Information required to recreate the subproblem at this node.
const double * upper() const
Upper bounds.
virtual CbcNodeInfo * clone() const
Clone.
virtual void applyToModel(CbcModel *model, CoinWarmStartBasis *&basis, CbcCountRowCut **addCuts, int &currentNumberCuts) const
Modify model according to information at node.
void setColUpper(int sequence, double value)
Set a bound.
CoinWarmStartBasis * basis_
Full basis.
CbcFullNodeInfo & operator=(const CbcFullNodeInfo &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)
const double * lower() const
Lower bounds.
double * mutableLower() const
Mutable lower bounds.
void setColLower(int sequence, double value)
Set a bound.
virtual CbcNodeInfo * buildRowBasis(CoinWarmStartBasis &basis) const
Builds up row basis backwards (until original model).
CbcFullNodeInfo(const CbcFullNodeInfo &)
double * mutableUpper() const
Mutable upper bounds.
CbcFullNodeInfo(CbcModel *model, int numberRowsAtContinuous)
Constructor from continuous or satisfied.
Simple Branch and bound class.
Definition CbcModel.hpp:100
Information required to recreate the subproblem at this node.
void addCuts(OsiCuts &cuts, int numberToBranch, int numberPointingToThis)
Information required while the node is live.
Definition CbcNode.hpp:49