Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

separator.h
Go to the documentation of this file.
1 
30 #pragma once
31 
32 #include <ogdf/lib/abacus/hash.h>
33 
36 
37 #pragma GCC visibility push(default)
38 namespace abacus {
39 
40 
42 
43 
45 
66 template <class BaseType, class CoType>
67 class Separator : public AbacusRoot {
68 public:
69 
71 
83  bool nonDuplications,
84  int maxGen=300)
85  :
88  minAbsViolation_(master_->eps()),
90  hash_(0),
91  nDuplications_(0),
92  pool_(0)
93  {
94  if(nonDuplications)
96  }
97 
98 
100  virtual ~Separator() {
101  delete hash_;
102  }
103 
104 
106  virtual void separate() = 0;
107 
109 
118  Separator_CUTFOUND cutFound(BaseType *cv);
119 
121 
125  virtual bool terminateSeparation() {
126  return ( nGen() >= maxGen() );
127  }
128 
131 
132 
134  int nGen() const { return newCons_.number(); }
135 
136 
138  int nDuplications() const { return nDuplications_; }
139 
140 
142  int nCollisions() const;
143 
145  int maxGen() const { return newCons_.size(); }
146 
147 
149  double minAbsViolation() const { return minAbsViolation_; }
150 
151 
153  void minAbsViolation(double minAbsVio) {
154  minAbsViolation_=minAbsVio;
155  }
156 
159  return lpSol_;
160  }
161 
170  pool_ = pool;
171  }
172 
173 protected:
174 
183  bool find(BaseType *cv);
184 
187 
188 private:
195 
199 };
200 
201 }
202 
204 #pragma GCC visibility pop
ogdf::ArrayBuffer
An array that keeps track of the number of inserted elements; also usable as an efficient stack.
Definition: Array.h:53
abacus::LpSolution< CoType, BaseType >
abacus::Added
@ Added
Definition: separator.h:41
abacus::NonDuplPool
Standard pools without constraint duplication.
Definition: nonduplpool.h:59
abacus::Separator::nCollisions
int nCollisions() const
Returns the number of collisions in the hash table.
lpsolution.h
lpsolution.
abacus::Separator::minAbsViolation
void minAbsViolation(double minAbsVio)
Sets a new value for minAbsViolation.
Definition: separator.h:153
abacus::Separator::nDuplications_
int nDuplications_
Definition: separator.h:192
abacus::Separator::terminateSeparation
virtual bool terminateSeparation()
Returns true if the separation should be terminated.
Definition: separator.h:125
abacus::Separator::watchNonDuplPool
void watchNonDuplPool(NonDuplPool< BaseType, CoType > *pool)
If the separator checks for duplication of cuts, the test is also done for constraints/variables that...
Definition: separator.h:169
abacus::Separator::master_
Master * master_
A pointer to the corresponding master of the optimization.
Definition: separator.h:185
abacus::Separator::minAbsViolation_
double minAbsViolation_
Definition: separator.h:189
abacus
Definition: ILPClusterPlanarity.h:50
abacus::Separator::maxGen
int maxGen() const
Returns the maximal number of generated cutting planes.
Definition: separator.h:145
abacus::Separator::hash_
AbaHash< unsigned, BaseType * > * hash_
Definition: separator.h:191
abacus::Separator::separate
virtual void separate()=0
This function has to be redefined and should implement the separation routine.
abacus::Separator::pool_
NonDuplPool< BaseType, CoType > * pool_
Definition: separator.h:194
abacus::Separator::lpSol_
LpSolution< CoType, BaseType > * lpSol_
The LP solution to be separated.
Definition: separator.h:186
abacus::Separator::nGen
int nGen() const
Returns the number of generated cutting planes.
Definition: separator.h:134
abacus::AbaHash< unsigned, BaseType * >
abacus::Separator::operator=
const Separator< BaseType, CoType > & operator=(const Separator< BaseType, CoType > &rhs)
ogdf::ArrayBuffer::size
INDEX size() const
Returns number of elements in the buffer.
Definition: ArrayBuffer.h:244
separator.inc
abacus::Separator::minAbsViolation
double minAbsViolation() const
Returns the absolute value for considering a constraint/variable as violated.
Definition: separator.h:149
nonduplpool.h
standard pool without constraint duplication.
abacus::Full
@ Full
Definition: separator.h:41
abacus::Separator::cutBuffer
ArrayBuffer< BaseType * > & cutBuffer()
Returns the buffer with the generated constraints/variable.
Definition: separator.h:130
abacus::Separator
Separators.
Definition: lpsolution.h:41
abacus::Separator::cutFound
Separator_CUTFOUND cutFound(BaseType *cv)
Passes a cut (constraint or variable) to the buffer.
abacus::Separator::newCons_
ArrayBuffer< BaseType * > newCons_
Definition: separator.h:190
abacus::Separator::nDuplications
int nDuplications() const
Returns the number of duplicated constraints/variables which are discarded.
Definition: separator.h:138
abacus::Separator::sendConstraints_
bool sendConstraints_
Definition: separator.h:193
hash.h
hash table.
abacus::Separator::~Separator
virtual ~Separator()
The destructor.
Definition: separator.h:100
abacus::Separator::Separator
Separator(LpSolution< CoType, BaseType > *lpSolution, bool nonDuplications, int maxGen=300)
Creates a separator.
Definition: separator.h:81
abacus::AbacusGlobal
Global data and functions.
Definition: global.h:58
abacus::Separator_CUTFOUND
Separator_CUTFOUND
Definition: separator.h:41
abacus::Separator::lpSolution
LpSolution< CoType, BaseType > * lpSolution()
The lpSolution to be separated.
Definition: separator.h:158
abacus::Separator::find
bool find(BaseType *cv)
abacus::Master
The master of the optimization.
Definition: master.h:70
abacus::Duplication
@ Duplication
Definition: separator.h:41