Cbc  2.9.9
CbcStrategy.hpp
Go to the documentation of this file.
1 /* $Id: CbcStrategy.hpp 1573 2011-01-05 01:12:36Z lou $ */
2 // Copyright (C) 2005, 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 CbcStrategy_H
7 #define CbcStrategy_H
8 
9 #include "CbcModel.hpp"
10 class CglPreProcess;
11 class CbcNodeInfo;
12 class CbcNode;
13 class CoinWarmStartDiff;
14 
15 //#############################################################################
18 class CbcStrategy {
19 public:
20  // Default Constructor
22 
23  virtual ~CbcStrategy();
24 
26  virtual CbcStrategy * clone() const = 0;
27 
29  virtual void setupCutGenerators(CbcModel & model) = 0;
31  virtual void setupHeuristics(CbcModel & model) = 0;
33  virtual void setupPrinting(CbcModel & model, int modelLogLevel) = 0;
35  virtual void setupOther(CbcModel & model) = 0;
37  inline void setNested(int depth) {
38  depth_ = depth;
39  }
41  inline int getNested() const {
42  return depth_;
43  }
45  inline void setPreProcessState(int state) {
46  preProcessState_ = state;
47  }
49  inline int preProcessState() const {
50  return preProcessState_;
51  }
53  inline CglPreProcess * process() const {
54  return process_;
55  }
59  virtual CbcNodeInfo * fullNodeInfo(CbcModel * model, int numberRowsAtContinuous) const;
61  virtual CbcNodeInfo * partialNodeInfo(CbcModel * model, CbcNodeInfo * parent, CbcNode * owner,
62  int numberChangedBounds, const int * variables,
63  const double * boundChanges,
64  const CoinWarmStartDiff *basisDiff) const;
66  virtual void generateCpp( FILE * ) {}
73  virtual int status(CbcModel * model, CbcNodeInfo * parent, int whereFrom);
74 private:
75 
77  CbcStrategy & operator=(const CbcStrategy& rhs);
78 protected:
79  // Data
81  int depth_;
89  CglPreProcess * process_;
90 };
91 
95 class CbcStrategyNull : public CbcStrategy {
96 public:
97 
98  // Default Constructor
100 
101  // Copy constructor
102  CbcStrategyNull ( const CbcStrategyNull & rhs) : CbcStrategy(rhs) {}
103 
104  // Destructor
106 
108  virtual CbcStrategy * clone() const {
109  return new CbcStrategyNull(*this);
110  }
111 
113  virtual void setupCutGenerators(CbcModel & ) {}
115  virtual void setupHeuristics(CbcModel & ) {}
117  virtual void setupPrinting(CbcModel & , int ) {}
119  virtual void setupOther(CbcModel & ) {}
120 
121 protected:
122  // Data
123 private:
125  CbcStrategyNull & operator=(const CbcStrategyNull& rhs);
126 };
127 
132 public:
133 
134  // Default Constructor
135  CbcStrategyDefault (int cutsOnlyAtRoot = 1,
136  int numberStrong = 5,
137  int numberBeforeTrust = 0,
138  int printLevel = 0);
139 
140  // Copy constructor
142 
143  // Destructor
145 
147  virtual CbcStrategy * clone() const;
148 
150  virtual void setupCutGenerators(CbcModel & model);
152  virtual void setupHeuristics(CbcModel & model);
154  virtual void setupPrinting(CbcModel & model, int modelLogLevel) ;
156  virtual void setupOther(CbcModel & model);
158  inline void setupPreProcessing(int desired = 1, int passes = 10) {
159  desiredPreProcess_ = desired;
160  preProcessPasses_ = passes;
161  }
163  inline int desiredPreProcess() const {
164  return desiredPreProcess_;
165  }
167  inline int preProcessPasses() const {
168  return preProcessPasses_;
169  }
171  virtual void generateCpp( FILE * fp) ;
172 
173 protected:
174  // Data
175 
176  // Whether to do cuts only at root (-1 -> switch off totally)
178 
179  // How much strong branching to do
181 
182  // Number branches needed to trust with dynamic pseudo costs
184 
185  // Print level 0 little, 1 medium
187 
199 
200 private:
202  CbcStrategyDefault & operator=(const CbcStrategyDefault& rhs);
203 };
204 
205 
210 public:
211 
212  // Default Constructor
213  CbcStrategyDefaultSubTree (CbcModel * parent = NULL, int cutsOnlyAtRoot = 1,
214  int numberStrong = 5,
215  int numberBeforeTrust = 0,
216  int printLevel = 0);
217 
218  // Copy constructor
220 
221  // Destructor
223 
225  virtual CbcStrategy * clone() const;
226 
228  virtual void setupCutGenerators(CbcModel & model);
230  virtual void setupHeuristics(CbcModel & model);
232  virtual void setupPrinting(CbcModel & model, int modelLogLevel) ;
234  virtual void setupOther(CbcModel & model);
235 protected:
236  // Data
237  // Parent model
239  // Whether to do cuts only at root (-1 -> switch off totally)
241 
242  // How much strong branching to do
244 
245  // Number branches needed to trust with dynamic pseudo costs
247 
248  // Print level 0 little, 1 medium
250 
251 private:
254 };
255 
256 
257 #endif
258 
CbcStrategyDefault::desiredPreProcess_
int desiredPreProcess_
Desired pre-processing 0 - none 1 - ordinary 2 - find sos 3 - find cliques 4 - more aggressive sos 5 ...
Definition: CbcStrategy.hpp:196
CbcStrategyNull::CbcStrategyNull
CbcStrategyNull()
Definition: CbcStrategy.hpp:99
CbcStrategy::CbcStrategy
CbcStrategy()
CbcStrategy::getNested
int getNested() const
Get model depth (i.e. how nested)
Definition: CbcStrategy.hpp:41
CbcStrategyDefaultSubTree::~CbcStrategyDefaultSubTree
~CbcStrategyDefaultSubTree()
CbcStrategyDefaultSubTree::CbcStrategyDefaultSubTree
CbcStrategyDefaultSubTree(const CbcStrategyDefaultSubTree &)
CbcStrategy::process_
CglPreProcess * process_
If preprocessing then this is object.
Definition: CbcStrategy.hpp:89
CbcStrategyDefaultSubTree::setupPrinting
virtual void setupPrinting(CbcModel &model, int modelLogLevel)
Do printing stuff.
CbcStrategy::process
CglPreProcess * process() const
Pre-processing object.
Definition: CbcStrategy.hpp:53
CbcStrategyNull::~CbcStrategyNull
~CbcStrategyNull()
Definition: CbcStrategy.hpp:105
CbcStrategyNull::CbcStrategyNull
CbcStrategyNull(const CbcStrategyNull &rhs)
Definition: CbcStrategy.hpp:102
CbcModel.hpp
CbcStrategyNull::setupOther
virtual void setupOther(CbcModel &)
Other stuff e.g. strong branching.
Definition: CbcStrategy.hpp:119
CbcStrategyDefault::cutsOnlyAtRoot_
int cutsOnlyAtRoot_
Definition: CbcStrategy.hpp:177
CbcStrategy::setPreProcessState
void setPreProcessState(int state)
Say preProcessing done.
Definition: CbcStrategy.hpp:45
CbcStrategyNull::setupCutGenerators
virtual void setupCutGenerators(CbcModel &)
Setup cut generators.
Definition: CbcStrategy.hpp:113
CbcStrategyDefaultSubTree::setupHeuristics
virtual void setupHeuristics(CbcModel &model)
Setup heuristics.
CbcStrategyNull::setupHeuristics
virtual void setupHeuristics(CbcModel &)
Setup heuristics.
Definition: CbcStrategy.hpp:115
CbcStrategy::setupCutGenerators
virtual void setupCutGenerators(CbcModel &model)=0
Setup cut generators.
CbcStrategy::preProcessState
int preProcessState() const
See what sort of preprocessing was done.
Definition: CbcStrategy.hpp:49
CbcStrategyNull::clone
virtual CbcStrategy * clone() const
Clone.
Definition: CbcStrategy.hpp:108
CbcStrategy::fullNodeInfo
virtual CbcNodeInfo * fullNodeInfo(CbcModel *model, int numberRowsAtContinuous) const
Return a new Full node information pointer (descendant of CbcFullNodeInfo)
CbcStrategyDefaultSubTree::numberStrong_
int numberStrong_
Definition: CbcStrategy.hpp:243
CbcStrategyDefaultSubTree::clone
virtual CbcStrategy * clone() const
Clone.
CbcStrategyDefaultSubTree::setupCutGenerators
virtual void setupCutGenerators(CbcModel &model)
Setup cut generators.
CbcModel
Simple Branch and bound class.
Definition: CbcModel.hpp:101
CbcStrategyDefault::numberBeforeTrust_
int numberBeforeTrust_
Definition: CbcStrategy.hpp:183
CbcStrategy
Strategy base class.
Definition: CbcStrategy.hpp:18
CbcStrategyDefault::~CbcStrategyDefault
~CbcStrategyDefault()
CbcStrategy::setNested
void setNested(int depth)
Set model depth (i.e. how nested)
Definition: CbcStrategy.hpp:37
CbcStrategyDefaultSubTree::numberBeforeTrust_
int numberBeforeTrust_
Definition: CbcStrategy.hpp:246
CbcStrategyDefault::setupCutGenerators
virtual void setupCutGenerators(CbcModel &model)
Setup cut generators.
CbcNodeInfo
Information required to recreate the subproblem at this node.
Definition: CbcNodeInfo.hpp:68
CbcStrategy::deletePreProcess
void deletePreProcess()
Delete pre-processing object to save memory.
CbcStrategy::~CbcStrategy
virtual ~CbcStrategy()
CbcStrategy::setupPrinting
virtual void setupPrinting(CbcModel &model, int modelLogLevel)=0
Do printing stuff.
CbcStrategy::depth_
int depth_
Model depth.
Definition: CbcStrategy.hpp:81
CbcStrategy::generateCpp
virtual void generateCpp(FILE *)
Create C++ lines to get to current state.
Definition: CbcStrategy.hpp:66
CbcStrategyDefault::preProcessPasses_
int preProcessPasses_
Number of pre-processing passes.
Definition: CbcStrategy.hpp:198
CbcStrategyDefaultSubTree
Default class for sub trees.
Definition: CbcStrategy.hpp:209
CbcNode
Information required while the node is live.
Definition: CbcNode.hpp:49
CbcStrategyDefault::setupOther
virtual void setupOther(CbcModel &model)
Other stuff e.g. strong branching.
CbcStrategy::setupOther
virtual void setupOther(CbcModel &model)=0
Other stuff e.g. strong branching and preprocessing.
CbcStrategyDefault::desiredPreProcess
int desiredPreProcess() const
See what sort of preprocessing wanted.
Definition: CbcStrategy.hpp:163
CbcStrategyDefaultSubTree::CbcStrategyDefaultSubTree
CbcStrategyDefaultSubTree(CbcModel *parent=NULL, int cutsOnlyAtRoot=1, int numberStrong=5, int numberBeforeTrust=0, int printLevel=0)
CbcStrategyDefaultSubTree::printLevel_
int printLevel_
Definition: CbcStrategy.hpp:249
CbcStrategy::clone
virtual CbcStrategy * clone() const =0
Clone.
CbcStrategyDefault::preProcessPasses
int preProcessPasses() const
See how many passes wanted.
Definition: CbcStrategy.hpp:167
CbcStrategyDefault::clone
virtual CbcStrategy * clone() const
Clone.
CbcStrategyNull
Null class.
Definition: CbcStrategy.hpp:95
CbcStrategyDefault::CbcStrategyDefault
CbcStrategyDefault(int cutsOnlyAtRoot=1, int numberStrong=5, int numberBeforeTrust=0, int printLevel=0)
CbcStrategy::setupHeuristics
virtual void setupHeuristics(CbcModel &model)=0
Setup heuristics.
CbcStrategyDefault::setupPreProcessing
void setupPreProcessing(int desired=1, int passes=10)
Set up preProcessing - see below.
Definition: CbcStrategy.hpp:158
CbcStrategyDefaultSubTree::cutsOnlyAtRoot_
int cutsOnlyAtRoot_
Definition: CbcStrategy.hpp:240
CbcStrategyDefault::setupHeuristics
virtual void setupHeuristics(CbcModel &model)
Setup heuristics.
CbcStrategyDefaultSubTree::parentModel_
CbcModel * parentModel_
Definition: CbcStrategy.hpp:238
CbcStrategyDefault::printLevel_
int printLevel_
Definition: CbcStrategy.hpp:186
CbcStrategyDefault
Default class.
Definition: CbcStrategy.hpp:131
CbcStrategyDefault::generateCpp
virtual void generateCpp(FILE *fp)
Create C++ lines to get to current state.
CbcStrategyDefaultSubTree::setupOther
virtual void setupOther(CbcModel &model)
Other stuff e.g. strong branching.
CbcStrategy::status
virtual int status(CbcModel *model, CbcNodeInfo *parent, int whereFrom)
After a CbcModel::resolve this can return a status -1 no effect 0 treat as optimal 1 as 0 but do not ...
CbcStrategyNull::setupPrinting
virtual void setupPrinting(CbcModel &, int)
Do printing stuff.
Definition: CbcStrategy.hpp:117
CbcStrategyDefault::CbcStrategyDefault
CbcStrategyDefault(const CbcStrategyDefault &)
CbcStrategyDefault::setupPrinting
virtual void setupPrinting(CbcModel &model, int modelLogLevel)
Do printing stuff.
CbcStrategyDefault::numberStrong_
int numberStrong_
Definition: CbcStrategy.hpp:180
CbcStrategy::partialNodeInfo
virtual CbcNodeInfo * partialNodeInfo(CbcModel *model, CbcNodeInfo *parent, CbcNode *owner, int numberChangedBounds, const int *variables, const double *boundChanges, const CoinWarmStartDiff *basisDiff) const
Return a new Partial node information pointer (descendant of CbcPartialNodeInfo)
CbcStrategy::preProcessState_
int preProcessState_
PreProcessing state - -1 infeasible 0 off 1 was done (so need post-processing)
Definition: CbcStrategy.hpp:87