Cbc 2.10.5
Loading...
Searching...
No Matches
CbcStrategy.hpp
Go to the documentation of this file.
1/* $Id$ */
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"
10class CglPreProcess;
11class CbcNodeInfo;
12class CbcNode;
13class CoinWarmStartDiff;
14
15//#############################################################################
19public:
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 {
39 depth_ = depth;
40 }
42 inline int getNested() const
43 {
44 return depth_;
45 }
47 inline void setPreProcessState(int state)
48 {
49 preProcessState_ = state;
50 }
52 inline int preProcessState() const
53 {
54 return preProcessState_;
55 }
57 inline CglPreProcess *process() const
58 {
59 return process_;
60 }
64 virtual CbcNodeInfo *fullNodeInfo(CbcModel *model, int numberRowsAtContinuous) const;
66 virtual CbcNodeInfo *partialNodeInfo(CbcModel *model, CbcNodeInfo *parent, CbcNode *owner,
67 int numberChangedBounds, const int *variables,
68 const double *boundChanges,
69 const CoinWarmStartDiff *basisDiff) const;
71 virtual void generateCpp(FILE *) {}
78 virtual int status(CbcModel *model, CbcNodeInfo *parent, int whereFrom);
79
80private:
83
84protected:
85 // Data
87 int depth_;
95 CglPreProcess *process_;
96};
97
102public:
103 // Default Constructor
105
106 // Copy constructor
108 : CbcStrategy(rhs)
109 {
110 }
111
112 // Destructor
114
116 virtual CbcStrategy *clone() const
117 {
118 return new CbcStrategyNull(*this);
119 }
120
122 virtual void setupCutGenerators(CbcModel &) {}
124 virtual void setupHeuristics(CbcModel &) {}
126 virtual void setupPrinting(CbcModel &, int) {}
128 virtual void setupOther(CbcModel &) {}
129
130protected:
131 // Data
132private:
135};
136
141public:
142 // Default Constructor
143 CbcStrategyDefault(int cutsOnlyAtRoot = 1,
144 int numberStrong = 5,
145 int numberBeforeTrust = 0,
146 int printLevel = 0);
147
148 // Copy constructor
150
151 // Destructor
153
155 virtual CbcStrategy *clone() const;
156
158 virtual void setupCutGenerators(CbcModel &model);
160 virtual void setupHeuristics(CbcModel &model);
162 virtual void setupPrinting(CbcModel &model, int modelLogLevel);
164 virtual void setupOther(CbcModel &model);
166 inline void setupPreProcessing(int desired = 1, int passes = 10)
167 {
168 desiredPreProcess_ = desired;
169 preProcessPasses_ = passes;
170 }
172 inline int desiredPreProcess() const
173 {
174 return desiredPreProcess_;
175 }
177 inline int preProcessPasses() const
178 {
179 return preProcessPasses_;
180 }
182 virtual void generateCpp(FILE *fp);
183
184protected:
185 // Data
186
187 // Whether to do cuts only at root (-1 -> switch off totally)
189
190 // How much strong branching to do
192
193 // Number branches needed to trust with dynamic pseudo costs
195
196 // Print level 0 little, 1 medium
198
210
211private:
214};
215
220public:
221 // Default Constructor
222 CbcStrategyDefaultSubTree(CbcModel *parent = NULL, int cutsOnlyAtRoot = 1,
223 int numberStrong = 5,
224 int numberBeforeTrust = 0,
225 int printLevel = 0);
226
227 // Copy constructor
229
230 // Destructor
232
234 virtual CbcStrategy *clone() const;
235
237 virtual void setupCutGenerators(CbcModel &model);
239 virtual void setupHeuristics(CbcModel &model);
241 virtual void setupPrinting(CbcModel &model, int modelLogLevel);
243 virtual void setupOther(CbcModel &model);
244
245protected:
246 // Data
247 // Parent model
249 // Whether to do cuts only at root (-1 -> switch off totally)
251
252 // How much strong branching to do
254
255 // Number branches needed to trust with dynamic pseudo costs
257
258 // Print level 0 little, 1 medium
260
261private:
264};
265
266#endif
267
268/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
269*/
Simple Branch and bound class.
Definition CbcModel.hpp:100
Information required to recreate the subproblem at this node.
Information required while the node is live.
Definition CbcNode.hpp:49
Default class for sub trees.
CbcStrategyDefaultSubTree(const CbcStrategyDefaultSubTree &)
virtual CbcStrategy * clone() const
Clone.
virtual void setupHeuristics(CbcModel &model)
Setup heuristics.
virtual void setupCutGenerators(CbcModel &model)
Setup cut generators.
CbcStrategyDefaultSubTree & operator=(const CbcStrategyDefaultSubTree &rhs)
Illegal Assignment operator.
virtual void setupOther(CbcModel &model)
Other stuff e.g. strong branching.
CbcStrategyDefaultSubTree(CbcModel *parent=NULL, int cutsOnlyAtRoot=1, int numberStrong=5, int numberBeforeTrust=0, int printLevel=0)
virtual void setupPrinting(CbcModel &model, int modelLogLevel)
Do printing stuff.
Default class.
virtual void setupHeuristics(CbcModel &model)
Setup heuristics.
int preProcessPasses() const
See how many passes wanted.
CbcStrategyDefault & operator=(const CbcStrategyDefault &rhs)
Illegal Assignment operator.
CbcStrategyDefault(int cutsOnlyAtRoot=1, int numberStrong=5, int numberBeforeTrust=0, int printLevel=0)
int desiredPreProcess() const
See what sort of preprocessing wanted.
int desiredPreProcess_
Desired pre-processing 0 - none 1 - ordinary 2 - find sos 3 - find cliques 4 - more aggressive sos 5 ...
virtual void setupPrinting(CbcModel &model, int modelLogLevel)
Do printing stuff.
void setupPreProcessing(int desired=1, int passes=10)
Set up preProcessing - see below.
virtual void setupCutGenerators(CbcModel &model)
Setup cut generators.
virtual void setupOther(CbcModel &model)
Other stuff e.g. strong branching.
virtual void generateCpp(FILE *fp)
Create C++ lines to get to current state.
int preProcessPasses_
Number of pre-processing passes.
virtual CbcStrategy * clone() const
Clone.
CbcStrategyDefault(const CbcStrategyDefault &)
CbcStrategyNull & operator=(const CbcStrategyNull &rhs)
Illegal Assignment operator.
virtual void setupOther(CbcModel &)
Other stuff e.g. strong branching.
virtual void setupCutGenerators(CbcModel &)
Setup cut generators.
CbcStrategyNull(const CbcStrategyNull &rhs)
virtual void setupHeuristics(CbcModel &)
Setup heuristics.
virtual CbcStrategy * clone() const
Clone.
virtual void setupPrinting(CbcModel &, int)
Do printing stuff.
Strategy base class.
int preProcessState() const
See what sort of preprocessing was done.
int getNested() const
Get model depth (i.e. how nested)
CglPreProcess * process_
If preprocessing then this is object.
virtual void generateCpp(FILE *)
Create C++ lines to get to current state.
virtual ~CbcStrategy()
virtual void setupHeuristics(CbcModel &model)=0
Setup heuristics.
int preProcessState_
PreProcessing state - -1 infeasible 0 off 1 was done (so need post-processing)
void deletePreProcess()
Delete pre-processing object to save memory.
virtual void setupCutGenerators(CbcModel &model)=0
Setup cut generators.
virtual void setupOther(CbcModel &model)=0
Other stuff e.g. strong branching and preprocessing.
virtual CbcNodeInfo * fullNodeInfo(CbcModel *model, int numberRowsAtContinuous) const
Return a new Full node information pointer (descendant of CbcFullNodeInfo)
virtual void setupPrinting(CbcModel &model, int modelLogLevel)=0
Do printing stuff.
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)
CglPreProcess * process() const
Pre-processing object.
CbcStrategy & operator=(const CbcStrategy &rhs)
Illegal Assignment operator.
int depth_
Model depth.
virtual CbcStrategy * clone() const =0
Clone.
void setPreProcessState(int state)
Say preProcessing done.
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 ...
void setNested(int depth)
Set model depth (i.e. how nested)