Cbc 2.10.5
CbcCountRowCut.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#ifndef CbcCountRowCut_H
7#define CbcCountRowCut_H
8
9class OsiCuts;
10class OsiRowCut;
11class CbcNodeInfo;
12
13//#############################################################################
34class CbcCountRowCut : public OsiRowCut {
35
36public:
39
42
44 CbcCountRowCut(const OsiRowCut &);
45
47 CbcCountRowCut(const OsiRowCut &, CbcNodeInfo *, int whichOne,
48 int whichGenerator = -1, int numberPointingToThis = 0);
49
56 virtual ~CbcCountRowCut();
58
60 void increment(int change = 1);
61
63 int decrement(int change = 1);
64
72 void setInfo(CbcNodeInfo *, int whichOne);
73
76 {
78 }
79
81 inline int whichCutGenerator() const
82 {
83 return whichCutGenerator_;
84 }
85
87 bool canDropCut(const OsiSolverInterface *solver, int row) const;
88
89#ifdef CHECK_CUT_COUNTS
90 // Just for printing sanity checks
91 int tempNumber_;
92#endif
93
94private:
97
100
103
107
110
118};
128// for hashing
129typedef struct {
130 int index, next;
133public:
134 CbcRowCuts(int initialMaxSize = 0, int hashMultiplier = 4);
138 inline OsiRowCut2 *cut(int sequence) const
139 {
140 return rowCut_[sequence];
141 }
142 inline int numberCuts() const
143 {
144 return numberCuts_;
145 }
146 inline int sizeRowCuts() const
147 {
148 return numberCuts_;
149 }
150 inline OsiRowCut *rowCutPtr(int sequence)
151 {
152 return rowCut_[sequence];
153 }
154 void eraseRowCut(int sequence);
155 // Return 0 if added, 1 if not, -1 if not added because of space
156 int addCutIfNotDuplicate(const OsiRowCut &cut, int whichType = 0);
157 // Return 0 if added, 1 if not, -1 if not added because of space
158 int addCutIfNotDuplicateWhenGreedy(const OsiRowCut &cut, int whichType = 0);
159 // Add in cuts as normal cuts (and delete)
160 void addCuts(OsiCuts &cs);
161 // Truncate
162 void truncate(int numberAfter);
163
164private:
165 OsiRowCut2 **rowCut_;
168 int size_;
172};
173#endif
174
175/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
176*/
OsiRowCut augmented with bookkeeping.
int decrement(int change=1)
Decrement the number of references and return the number left.
virtual ~CbcCountRowCut()
Destructor.
CbcCountRowCut & operator=(const CbcCountRowCut &rhs)
Standard assignment is illegal (reference counts would be incorrect)
int whichCutGenerator_
Which generator created this cut (add 10000 if globally valid) if -1 then from global cut pool -2 cut...
int whichCutGenerator() const
Which generator for cuts - as user order.
CbcCountRowCut()
Default Constructor.
int numberPointingToThis()
Number of other CbcNodeInfo objects pointing to this row cut.
void increment(int change=1)
Increment the number of references.
int ownerCut_
Index of cut in owner's cut set (cuts_ ).
bool canDropCut(const OsiSolverInterface *solver, int row) const
Returns true if can drop cut if slack basic.
CbcNodeInfo * owner_
Backward pointer to owning CbcNodeInfo.
void setInfo(CbcNodeInfo *, int whichOne)
Set the information associating this cut with a node.
int numberPointingToThis_
Number of other CbcNodeInfo objects pointing to this cut.
CbcCountRowCut(const OsiRowCut &, CbcNodeInfo *, int whichOne, int whichGenerator=-1, int numberPointingToThis=0)
‘Copy’ constructor using an OsiRowCut and an CbcNodeInfo
CbcCountRowCut(const CbcCountRowCut &)
Standard copy is illegal (reference counts would be incorrect)
CbcCountRowCut(const OsiRowCut &)
‘Copy’ constructor using an OsiRowCut
Information required to recreate the subproblem at this node.
Definition: CbcNodeInfo.hpp:68
OsiRowCut2 * cut(int sequence) const
CbcRowCuts(const CbcRowCuts &rhs)
void truncate(int numberAfter)
OsiRowCut * rowCutPtr(int sequence)
int addCutIfNotDuplicateWhenGreedy(const OsiRowCut &cut, int whichType=0)
int addCutIfNotDuplicate(const OsiRowCut &cut, int whichType=0)
void addCuts(OsiCuts &cs)
int numberCuts() const
void eraseRowCut(int sequence)
CbcRowCuts(int initialMaxSize=0, int hashMultiplier=4)
int sizeRowCuts() const
CoinHashLink * hash_
Hash table.
CbcRowCuts & operator=(const CbcRowCuts &rhs)
OsiRowCut2 ** rowCut_