Blis 0.94
Loading...
Searching...
No Matches
BlisConGenerator.h
Go to the documentation of this file.
1/*===========================================================================*
2 * This file is part of the BiCePS Linear Integer Solver (BLIS). *
3 * *
4 * BLIS is distributed under the Eclipse Public License as part of the *
5 * COIN-OR repository (http://www.coin-or.org). *
6 * *
7 * Authors: *
8 * *
9 * Yan Xu, Lehigh University *
10 * Ted Ralphs, Lehigh University *
11 * *
12 * Conceptual Design: *
13 * *
14 * Yan Xu, Lehigh University *
15 * Ted Ralphs, Lehigh University *
16 * Laszlo Ladanyi, IBM T.J. Watson Research Center *
17 * Matthew Saltzman, Clemson University *
18 * *
19 * *
20 * Copyright (C) 2001-2019, Lehigh University, Yan Xu, and Ted Ralphs. *
21 * All Rights Reserved. *
22 *===========================================================================*/
23
24
25//#############################################################################
26// This file is modified from COIN/Cbc/CbcCutGenerator.hpp
27//#############################################################################
28
29
30#ifndef BlisConGenerator_h_
31#define BlisConGenerator_h_
32
33#include "OsiSolverInterface.hpp"
34#include "OsiCuts.hpp"
35
36
37class BlisModel;
38
39class OsiRowCut;
40class OsiRowCutDebugger;
41class CglCutGenerator;
42
43
44//#############################################################################
45
59
60protected:
63
66
67 //------------------------------------------------------
68 // CON CONTROL
69 //------------------------------------------------------
70
78
81
83 std::string name_;
84
86 bool normal_;
87
90
94
95 //------------------------------------------------------
96 // CON STATISTICS
97 //------------------------------------------------------
98
101
104
106 double time_;
107
110
113
114 public:
115
120 :
121 model_(NULL),
122 generator_(NULL),
125 normal_(true),
126 atSolution_(false),
127 whenInfeasible_(false),
129 numConsUsed_(0),
130 time_(0),
131 calls_(0),
132 noConsCalls_(0)
133 { name_ = "UNKNOWN"; }
134
138 const char * name = NULL,
141 bool normal = true,
142 bool atSolution = false,
143 bool infeasible = false);
144
147
150
153 {
154 if (generator_) {
155 delete generator_;
156 generator_ = NULL;
157 }
158 }
160
174
182 inline BlisModel *getModel() { return model_; }
183
185 inline void setModel(BlisModel *m) { model_ = m; }
186
188 void refreshModel(BlisModel * model);
189
191 void setName(const char *str) { name_ = str; }
192
194 inline std::string name() const { return name_; }
195
197 void setStrategy(BlisCutStrategy value) { strategy_ = value; }
198
200 inline BlisCutStrategy strategy() const { return strategy_; }
201
204
206 inline int cutGenerationFreq() const { return cutGenerationFrequency_; }
207
209 inline bool normal() const { return normal_; }
210
212 inline void setNormal(bool value) { normal_ = value; }
213
216 inline bool atSolution() const { return atSolution_; }
217
220 inline void setAtSolution(bool value) { atSolution_ = value; }
221
224 inline bool whenInfeasible() const { return whenInfeasible_; }
225
228 inline void setWhenInfeasible(bool value) { whenInfeasible_ = value; }
229
231 inline CglCutGenerator * generator() const { return generator_; }
232
234 inline int numConsGenerated() { return numConsGenerated_; }
235
237 inline void addNumConsGenerated(int n) { numConsGenerated_ += n; }
238
240 inline int numConsUsed() { return numConsUsed_; }
241
243 inline void addNumConsUsed(int n) { numConsUsed_ += n; }
244
246 inline double time() const { return time_; }
247
249 inline void addTime(double t) { time_ += t; }
250
252 inline int calls() const { return calls_; }
253
255 inline void addCalls(int n=1) { calls_ += n; }
256
258 inline int noConsCalls() const { return noConsCalls_; }
259
261 inline void addNoConsCalls(int n=1) { noConsCalls_ += n; }
263};
264
265#endif
BlisCutStrategy
Definition: Blis.h:69
@ BlisCutStrategyAuto
Definition: Blis.h:73
Interface between Blis and Cut Generation Library.
int calls() const
Number called.
bool whenInfeasible_
Whether to call generator when a subproblem is found to be infeasible.
void setWhenInfeasible(bool value)
Set whether the con generator should be called when the subproblem is found to be infeasible.
void setName(const char *str)
return name of generator.
void addTime(double t)
Increase Cpu time used.
void setAtSolution(bool value)
Set whether the con generator should be called when a solution is found.
BlisConGenerator(const BlisConGenerator &)
Copy constructor.
void addNoConsCalls(int n=1)
Increase the number of no cons called.
int cutGenerationFreq() const
Get the con generation interval.
BlisModel * model_
The client model.
bool normal_
Whether to call the generator in the normal place.
std::string name() const
return name of generator.
int calls_
The times of calling this generator.
bool normal() const
Get whether the con generator should be called in the normal place.
int noConsCalls() const
Number called and no cons found.
void setModel(BlisModel *m)
Set the model.
void addNumConsUsed(int n)
Increase the number of generated cons.
BlisCutStrategy strategy() const
Get the con generation interval.
BlisConGenerator(BlisModel *model, CglCutGenerator *generator, const char *name=NULL, BlisCutStrategy strategy=BlisCutStrategyAuto, int cutGenerationFrequency_=1, bool normal=true, bool atSolution=false, bool infeasible=false)
Useful constructor.
bool atSolution_
Whether to call the generator when a new solution is found.
int noConsCalls_
The times of calling this generator and no cons found.
void setCutGenerationFreq(int freq)
Set the con generation strategy.
int numConsGenerated()
Get number of generated cons.
double time_
Used CPU/User time.
int numConsGenerated_
Number of cons generated.
void setNormal(bool value)
Set whether the con generator should be called in the normal place.
void addNumConsGenerated(int n)
Increase the number of generated cons.
BlisConGenerator & operator=(const BlisConGenerator &rhs)
Assignment operator.
virtual ~BlisConGenerator()
Destructor.
CglCutGenerator * generator_
The CglCutGenerator object.
BlisConGenerator()
Default constructor.
void refreshModel(BlisModel *model)
Refresh the model.
BlisModel * getModel()
Set the client model.
bool atSolution() const
Get whether the con generator should be called when a solution is found.
std::string name_
Name of generator.
int cutGenerationFrequency_
The frequency of calls to the cut generator.
virtual bool generateConstraints(BcpsConstraintPool &conPool)
Generate cons for the client model.
int numConsUsed_
Number of cons used.
BlisCutStrategy strategy_
When to call CglCutGenerator::generateCuts routine.
void addCalls(int n=1)
Increase the number of called.
void setStrategy(BlisCutStrategy value)
Set the con generation strategy.
CglCutGenerator * generator() const
Get the CglCutGenerator bound to this BlisConGenerator.
bool whenInfeasible() const
Get whether the con generator should be called when the subproblem is found to be infeasible.
double time() const
Cpu time used.
int numConsUsed()
Get number of used cons.