#include <CbcCutGenerator.hpp>
Public Member Functions | |
Generate Cuts | |
bool | generateCuts (OsiCuts &cs, bool fullScan, CbcNode *node) |
Generate cuts for the client model. | |
Constructors and destructors | |
CbcCutGenerator () | |
Default constructor. | |
CbcCutGenerator (CbcModel *model, CglCutGenerator *generator, int howOften=1, const char *name=NULL, bool normal=true, bool atSolution=false, bool infeasible=false, int howOftenInsub=-100, int whatDepth=-1, int whatDepthInSub=-1, int switchOffIfLessThan=0) | |
Normal constructor. | |
CbcCutGenerator (const CbcCutGenerator &) | |
Copy constructor. | |
CbcCutGenerator & | operator= (const CbcCutGenerator &rhs) |
Assignment operator. | |
~CbcCutGenerator () | |
Destructor. | |
Gets and sets | |
void | refreshModel (CbcModel *model) |
Set the client model. | |
const char * | cutGeneratorName () const |
return name of generator | |
void | setHowOften (int value) |
Set the cut generation interval. | |
int | howOften () const |
Get the cut generation interval. | |
int | howOftenInSub () const |
Get the cut generation interval.in sub tree. | |
void | setWhatDepth (int value) |
Set the cut generation depth. | |
void | setWhatDepthInSub (int value) |
Set the cut generation depth in sub tree. | |
int | whatDepth () const |
Get the cut generation depth criterion. | |
int | whatDepthInSub () const |
Get the cut generation depth criterion.in sub tree. | |
bool | normal () const |
Get whether the cut generator should be called in the normal place. | |
void | setNormal (bool value) |
Set whether the cut generator should be called in the normal place. | |
bool | atSolution () const |
Get whether the cut generator should be called when a solution is found. | |
void | setAtSolution (bool value) |
Set whether the cut generator should be called when a solution is found. | |
bool | whenInfeasible () const |
Get whether the cut generator should be called when the subproblem is found to be infeasible. | |
void | setWhenInfeasible (bool value) |
Set whether the cut generator should be called when the subproblem is found to be infeasible. | |
bool | timing () const |
Get whether the cut generator is being timed. | |
void | setTiming (bool value) |
Set whether the cut generator is being timed. | |
double | timeInCutGenerator () const |
Return time taken in cut generator. | |
CglCutGenerator * | generator () const |
Get the CglCutGenerator corresponding to this CbcCutGenerator . | |
int | numberTimesEntered () const |
Number times cut generator entered. | |
void | setNumberTimesEntered (int value) |
Set the client model. | |
void | incrementNumberTimesEntered (int value=1) |
Set the client model. | |
int | numberCutsInTotal () const |
Total number of cuts added. | |
void | setNumberCutsInTotal (int value) |
Set the client model. | |
void | incrementNumberCutsInTotal (int value=1) |
Set the client model. | |
int | numberColumnCuts () const |
Total number of column cuts. | |
void | setNumberColumnCuts (int value) |
Set the client model. | |
void | incrementNumberColumnCuts (int value=1) |
Set the client model. | |
int | numberCutsActive () const |
Total number of cuts active after (at end of n cut passes at each node). | |
void | setNumberCutsActive (int value) |
Set the client model. | |
void | incrementNumberCutsActive (int value=1) |
Set the client model. | |
void | setSwitchOffIfLessThan (int value) |
Set the client model. | |
int | switchOffIfLessThan () const |
Set the client model. | |
bool | needsOptimalBasis () const |
Say if optimal basis needed. | |
Private Attributes | |
CbcModel * | model_ |
The client model. | |
CglCutGenerator * | generator_ |
int | whenCutGenerator_ |
Number of nodes between calls to the CglCutGenerator::generateCuts routine. | |
int | whenCutGeneratorInSub_ |
Number of nodes between calls to the CglCutGenerator::generateCuts routine in sub tree. | |
int | switchOffIfLessThan_ |
If first pass at root produces fewer than this cuts then switch off. | |
int | depthCutGenerator_ |
Depth at which to call the CglCutGenerator::generateCuts routine (If >0 then overrides when and is called if depth%depthCutGenerator==0). | |
int | depthCutGeneratorInSub_ |
Depth at which to call the CglCutGenerator::generateCuts routine (If >0 then overrides when and is called if depth%depthCutGenerator==0). | |
char * | generatorName_ |
Name of generator. | |
bool | normal_ |
Whether to call the generator in the normal place. | |
bool | atSolution_ |
Whether to call the generator when a new solution is found. | |
bool | whenInfeasible_ |
Whether to call generator when a subproblem is found to be infeasible. | |
bool | timing_ |
Whether call generator being timed. | |
double | timeInCutGenerator_ |
Time in cut generator. | |
int | numberTimes_ |
Number times cut generator entered. | |
int | numberCuts_ |
Total number of cuts added. | |
int | numberColumnCuts_ |
Total number of column cuts added. | |
int | numberCutsActive_ |
Total number of cuts active after (at end of n cut passes at each node). |
CbcCutGenerator
is intended to provide an intelligent interface between Cbc and the cutting plane algorithms in the CGL. A CbcCutGenerator
is bound to a CglCutGenerator
and to an CbcModel
. It contains parameters which control when and how the generateCuts
method of the CglCutGenerator
will be called.
The builtin decision criteria available to use when deciding whether to generate cuts are limited: every X nodes, when a solution is found, and when a subproblem is found to be infeasible. The idea is that the class will grow more intelligent with time.
generateCuts
method. Create a default decision method that looks at the builtin criteria. It strikes me as not good that generateCuts contains code specific to individual CGL algorithms. Another set of pointer to function members, so that the client can specify the cut generation method as well as pre- and post-generation methods? Taken a bit further, should this class contain a bunch of pointer to function members, one for each of the places where the cut generator might be referenced? Initialization, root node, search tree node, discovery of solution, and termination all come to mind. Initialization and termination would also be useful for instrumenting cbc.
Definition at line 45 of file CbcCutGenerator.hpp.
|
Default constructor.
|
|
Normal constructor.
|
|
Copy constructor.
|
|
Destructor.
|
|
Generate cuts for the client model.
Evaluate the state of the client model and decide whether to generate cuts. The generated cuts are inserted into and returned in the collection of cuts
If The routine returns true if reoptimisation is needed (because the state of the solver interface has been modified). If node then can find out depth |
|
Assignment operator.
|
|
Set the client model.
In addition to setting the client model, refreshModel also calls the |
|
return name of generator
Definition at line 102 of file CbcCutGenerator.hpp. |
|
Set the cut generation interval.
Set the number of nodes evaluated between calls to the Cgl object's
If A value of -100 disables the generator, while a value of -99 means just at root. |
|
Get the cut generation interval.
Definition at line 122 of file CbcCutGenerator.hpp. |
|
Get the cut generation interval.in sub tree.
Definition at line 125 of file CbcCutGenerator.hpp. |
|
Set the cut generation depth.
Set the depth criterion for calls to the Cgl object's If whenCutGenerator is positive and this is positive then this overrides. If whenCutGenerator is -1 then this is used as criterion if any cuts were generated at root node. If whenCutGenerator is anything else this is ignored. |
|
Set the cut generation depth in sub tree.
|
|
Get the cut generation depth criterion.
Definition at line 142 of file CbcCutGenerator.hpp. |
|
Get the cut generation depth criterion.in sub tree.
Definition at line 145 of file CbcCutGenerator.hpp. |
|
Get whether the cut generator should be called in the normal place.
Definition at line 149 of file CbcCutGenerator.hpp. |
|
Set whether the cut generator should be called in the normal place.
Definition at line 152 of file CbcCutGenerator.hpp. |
|
Get whether the cut generator should be called when a solution is found.
Definition at line 155 of file CbcCutGenerator.hpp. |
|
Set whether the cut generator should be called when a solution is found.
Definition at line 158 of file CbcCutGenerator.hpp. |
|
Get whether the cut generator should be called when the subproblem is found to be infeasible.
Definition at line 163 of file CbcCutGenerator.hpp. |
|
Set whether the cut generator should be called when the subproblem is found to be infeasible.
Definition at line 168 of file CbcCutGenerator.hpp. |
|
Get whether the cut generator is being timed.
Definition at line 171 of file CbcCutGenerator.hpp. |
|
Set whether the cut generator is being timed.
Definition at line 174 of file CbcCutGenerator.hpp. |
|
Return time taken in cut generator.
Definition at line 177 of file CbcCutGenerator.hpp. |
|
Get the
Definition at line 180 of file CbcCutGenerator.hpp. |
|
Number times cut generator entered.
Definition at line 183 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 185 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 187 of file CbcCutGenerator.hpp. |
|
Total number of cuts added.
Definition at line 190 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 192 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 194 of file CbcCutGenerator.hpp. |
|
Total number of column cuts.
Definition at line 197 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 199 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 201 of file CbcCutGenerator.hpp. |
|
Total number of cuts active after (at end of n cut passes at each node).
Definition at line 204 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 206 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 208 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 210 of file CbcCutGenerator.hpp. |
|
Set the client model.
In addition to setting the client model, refreshModel also calls the Definition at line 212 of file CbcCutGenerator.hpp. |
|
Say if optimal basis needed.
Definition at line 215 of file CbcCutGenerator.hpp. |
|
The client model.
Definition at line 221 of file CbcCutGenerator.hpp. |
|
Definition at line 224 of file CbcCutGenerator.hpp. |
|
Number of nodes between calls to the CglCutGenerator::generateCuts routine.
Definition at line 229 of file CbcCutGenerator.hpp. |
|
Number of nodes between calls to the CglCutGenerator::generateCuts routine in sub tree.
Definition at line 233 of file CbcCutGenerator.hpp. |
|
If first pass at root produces fewer than this cuts then switch off.
Definition at line 236 of file CbcCutGenerator.hpp. |
|
Depth at which to call the CglCutGenerator::generateCuts routine (If >0 then overrides when and is called if depth%depthCutGenerator==0).
Definition at line 241 of file CbcCutGenerator.hpp. |
|
Depth at which to call the CglCutGenerator::generateCuts routine (If >0 then overrides when and is called if depth%depthCutGenerator==0). In sub tree. Definition at line 247 of file CbcCutGenerator.hpp. |
|
Name of generator.
Definition at line 250 of file CbcCutGenerator.hpp. |
|
Whether to call the generator in the normal place.
Definition at line 253 of file CbcCutGenerator.hpp. |
|
Whether to call the generator when a new solution is found.
Definition at line 256 of file CbcCutGenerator.hpp. |
|
Whether to call generator when a subproblem is found to be infeasible.
Definition at line 259 of file CbcCutGenerator.hpp. |
|
Whether call generator being timed.
Definition at line 261 of file CbcCutGenerator.hpp. |
|
Time in cut generator.
Definition at line 263 of file CbcCutGenerator.hpp. |
|
Number times cut generator entered.
Definition at line 266 of file CbcCutGenerator.hpp. |
|
Total number of cuts added.
Definition at line 268 of file CbcCutGenerator.hpp. |
|
Total number of column cuts added.
Definition at line 270 of file CbcCutGenerator.hpp. |
|
Total number of cuts active after (at end of n cut passes at each node).
Definition at line 272 of file CbcCutGenerator.hpp. |