Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef BlisConGenerator_h_
00031 #define BlisConGenerator_h_
00032
00033 #include "OsiSolverInterface.hpp"
00034 #include "OsiCuts.hpp"
00035
00036 class BlisModel;
00037 class OsiRowCut;
00038 class OsiRowCutDebugger;
00039 class CglCutGenerator;
00040
00041
00042
00043
00056 class BlisConGenerator {
00057
00058 private:
00060 BlisModel *model_;
00061
00063 CglCutGenerator * generator_;
00064
00065
00066
00067
00068
00075 int strategy_;
00076
00078 char * name_;
00079
00081 bool normal_;
00082
00084 bool atSolution_;
00085
00088 bool whenInfeasible_;
00089
00090
00091
00092
00093
00095 int numConsGenerated_;
00096
00098 int numConsUsed_;
00099
00101 double time_;
00102
00104 int calls_;
00105
00107 int noConsCalls_;
00108
00109 public:
00110
00114 BlisConGenerator()
00115 :
00116 model_(NULL),
00117 generator_(NULL),
00118 strategy_(-1),
00119 name_(NULL),
00120 normal_(true),
00121 atSolution_(false),
00122 whenInfeasible_(false),
00123 numConsGenerated_(0),
00124 numConsUsed_(0),
00125 time_(0),
00126 calls_(0),
00127 noConsCalls_(0)
00128 {}
00129
00131 BlisConGenerator(BlisModel * model,
00132 CglCutGenerator * generator,
00133 const char * name = NULL,
00134 int strategy = 0,
00135 bool normal = true,
00136 bool atSolution = false,
00137 bool infeasible = false);
00138
00140 BlisConGenerator (const BlisConGenerator &);
00141
00143 BlisConGenerator & operator=(const BlisConGenerator& rhs);
00144
00146 ~BlisConGenerator()
00147 {
00148 free(name_);
00149 name_= NULL;
00150 if (generator_) {
00151 delete generator_;
00152 generator_ = NULL;
00153 }
00154 }
00156
00172 bool generateCons(OsiCuts &cs, bool fullScan);
00174
00181 void refreshModel(BlisModel * model);
00182
00184 inline const char * name() const { return name_; }
00185
00187 void setStrategy(int value) { strategy_ = value; }
00188
00190 inline int strategy() const { return strategy_; }
00191
00193 inline bool normal() const { return normal_; }
00194
00196 inline void setNormal(bool value) { normal_ = value; }
00197
00200 inline bool atSolution() const { return atSolution_; }
00201
00204 inline void setAtSolution(bool value) { atSolution_ = value; }
00205
00208 inline bool whenInfeasible() const { return whenInfeasible_; }
00209
00212 inline void setWhenInfeasible(bool value) { whenInfeasible_ = value; }
00213
00215 inline CglCutGenerator * generator() const { return generator_; }
00216
00218 inline int numConsGenerated() { return numConsGenerated_; }
00219
00221 inline void addNumConsGenerated(int n) { numConsGenerated_ += n; }
00222
00224 inline int numConsUsed() { return numConsUsed_; }
00225
00227 inline void addNumConsUsed(int n) { numConsUsed_ += n; }
00228
00230 inline double time() { return time_; }
00231
00233 inline void addTime(double t) { time_ += t; }
00234
00236 inline int calls() { return calls_; }
00237
00239 inline void addCalls(int n=1) { calls_ += n; }
00240
00242 inline int noConsCalls() { return noConsCalls_; }
00243
00245 inline void addNoConsCalls(int n=1) { noConsCalls_ += n; }
00247 };
00248
00249 #endif