Cbc
2.9.9

heuristic  just picks up any good solution found by solver  see OsiBabSolver More...
#include <CbcHeuristic.hpp>
Public Member Functions  
CbcSerendipity ()  
CbcSerendipity (CbcModel &model)  
CbcSerendipity (const CbcSerendipity &)  
~CbcSerendipity ()  
CbcSerendipity &  operator= (const CbcSerendipity &rhs) 
Assignment operator. More...  
virtual CbcHeuristic *  clone () const 
Clone. More...  
virtual void  generateCpp (FILE *fp) 
Create C++ lines to get to current state. More...  
virtual void  setModel (CbcModel *model) 
update model More...  
virtual int  solution (double &objectiveValue, double *newSolution) 
returns 0 if no solution, 1 if valid solution. More...  
virtual void  resetModel (CbcModel *model) 
Resets stuff if model changes. More...  
Public Member Functions inherited from CbcHeuristic  
CbcHeuristic ()  
CbcHeuristic (CbcModel &model)  
CbcHeuristic (const CbcHeuristic &)  
virtual  ~CbcHeuristic () 
CbcHeuristic &  operator= (const CbcHeuristic &rhs) 
Assignment operator. More...  
virtual int  solution2 (double &, double *, OsiCuts &) 
returns 0 if no solution, 1 if valid solution, 1 if just returning an estimate of best possible solution with better objective value than one passed in Sets solution values if good, sets objective value (only if nonzero code) This is called at same time as cut generators  so can add cuts Default is do nothing More...  
virtual void  validate () 
Validate model i.e. sets when_ to 0 if necessary (may be NULL) More...  
void  setWhen (int value) 
Sets "when" flag  0 off, 1 at root, 2 other than root, 3 always. More...  
int  when () const 
Gets "when" flag  0 off, 1 at root, 2 other than root, 3 always. More...  
void  setNumberNodes (int value) 
Sets number of nodes in subtree (default 200) More...  
int  numberNodes () const 
Gets number of nodes in a subtree (default 200) More...  
void  setSwitches (int value) 
Switches (does not apply equally to all heuristics) 1 bit  stop once allowable gap on objective reached 2 bit  always do given number of passes 4 bit  weaken cutoff by 5% every 50 passes? 8 bit  if has cutoff and suminf bobbling for 20 passes then first try halving distance to best possible then try keep halving distance to known cutoff 16 bit  needs new solution to run 1024 bit  stop all heuristics on max time. More...  
int  switches () const 
Switches (does not apply equally to all heuristics) 1 bit  stop once allowable gap on objective reached 2 bit  always do given number of passes 4 bit  weaken cutoff by 5% every 50 passes? 8 bit  if has cutoff and suminf bobbling for 20 passes then first try halving distance to best possible then try keep halving distance to known cutoff 16 bit  needs new solution to run 1024 bit  stop all heuristics on max time 65536 bit and above used for temporary communication. More...  
bool  exitNow (double bestObjective) const 
Whether to exit at once on gap. More...  
void  setFeasibilityPumpOptions (int value) 
Sets feasibility pump options (1 is off) More...  
int  feasibilityPumpOptions () const 
Gets feasibility pump options (1 is off) More...  
void  setModelOnly (CbcModel *model) 
Just set model  do not do anything else. More...  
void  setFractionSmall (double value) 
Sets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0) More...  
double  fractionSmall () const 
Gets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0) More...  
int  numberSolutionsFound () const 
Get how many solutions the heuristic thought it got. More...  
void  incrementNumberSolutionsFound () 
Increment how many solutions the heuristic thought it got. More...  
int  smallBranchAndBound (OsiSolverInterface *solver, int numberNodes, double *newSolution, double &newSolutionValue, double cutoff, std::string name) const 
Do mini branch and bound  return 0 not finished  no solution 1 not finished  solution 2 finished  no solution 3 finished  solution (could add global cut if finished) 1 returned on size 2 time or user event. More...  
void  generateCpp (FILE *fp, const char *heuristic) 
Create C++ lines to get to current state  does work for base class. More...  
virtual bool  canDealWithOdd () const 
Returns true if can deal with "odd" problems e.g. sos type 2. More...  
const char *  heuristicName () const 
return name of heuristic More...  
void  setHeuristicName (const char *name) 
set name of heuristic More...  
void  setSeed (int value) 
Set random number generator seed. More...  
int  getSeed () const 
Get random number generator seed. More...  
void  setDecayFactor (double value) 
Sets decay factor (for howOften) on failure. More...  
void  setInputSolution (const double *solution, double objValue) 
Set input solution. More...  
void  setWhereFrom (int value) 
int  whereFrom () const 
void  setShallowDepth (int value) 
Upto this depth we call the tree shallow and the heuristic can be called multiple times. More...  
void  setHowOftenShallow (int value) 
How often to invoke the heuristics in the shallow part of the tree. More...  
void  setMinDistanceToRun (int value) 
How "far" should this node be from every other where the heuristic was run in order to allow the heuristic to run in this node, too. More...  
virtual bool  shouldHeurRun (int whereFrom) 
Check whether the heuristic should run at all 0  before cuts at root node (or from doHeuristics) 1  during cuts at root 2  after root node cuts 3  after cuts at other nodes 4  during cuts at other nodes 8 added if previous heuristic in loop found solution. More...  
bool  shouldHeurRun_randomChoice () 
Check whether the heuristic should run this time. More...  
void  debugNodes () 
void  printDistanceToNodes () 
int  numRuns () const 
how many times the heuristic has actually run More...  
int  numCouldRun () const 
How many times the heuristic could run. More...  
OsiSolverInterface *  cloneBut (int type) 
Clone, but ... More...  
Additional Inherited Members  
Protected Attributes inherited from CbcHeuristic  
CbcModel *  model_ 
Model. More...  
int  when_ 
When flag  0 off, 1 at root, 2 other than root, 3 always. More...  
int  numberNodes_ 
Number of nodes in any sub tree. More...  
int  feasibilityPumpOptions_ 
Feasibility pump options , 1 is off >=0 for feasibility pump itself 2 quick proximity search 3 longer proximity search. More...  
double  fractionSmall_ 
Fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound. More...  
CoinThreadRandom  randomNumberGenerator_ 
Thread specific random number generator. More...  
std::string  heuristicName_ 
Name for printing. More...  
int  howOften_ 
How often to do (code can change) More...  
double  decayFactor_ 
How much to increase how often. More...  
int  switches_ 
Switches (does not apply equally to all heuristics) 1 bit  stop once allowable gap on objective reached 2 bit  always do given number of passes 4 bit  weaken cutoff by 5% every 50 passes? 8 bit  if has cutoff and suminf bobbling for 20 passes then first try halving distance to best possible then try keep halving distance to known cutoff 16 bit  needs new solution to run 1024 bit  stop all heuristics on max time. More...  
int  whereFrom_ 
int  shallowDepth_ 
Upto this depth we call the tree shallow and the heuristic can be called multiple times. More...  
int  howOftenShallow_ 
How often to invoke the heuristics in the shallow part of the tree. More...  
int  numInvocationsInShallow_ 
How many invocations happened within the same node when in a shallow part of the tree. More...  
int  numInvocationsInDeep_ 
How many invocations happened when in the deep part of the tree. More...  
int  lastRunDeep_ 
After how many deep invocations was the heuristic run last time. More...  
int  numRuns_ 
how many times the heuristic has actually run More...  
int  minDistanceToRun_ 
How "far" should this node be from every other where the heuristic was run in order to allow the heuristic to run in this node, too. More...  
CbcHeuristicNodeList  runNodes_ 
The description of the nodes where this heuristic has been applied. More...  
int  numCouldRun_ 
How many times the heuristic could run. More...  
int  numberSolutionsFound_ 
How many solutions the heuristic thought it got. More...  
int  numberNodesDone_ 
How many nodes the heuristic did this go. More...  
double *  inputSolution_ 
heuristic  just picks up any good solution found by solver  see OsiBabSolver
Definition at line 562 of file CbcHeuristic.hpp.
CbcSerendipity::CbcSerendipity  (  ) 
CbcSerendipity::CbcSerendipity  (  CbcModel &  model  ) 
CbcSerendipity::CbcSerendipity  (  const CbcSerendipity &  ) 
CbcSerendipity::~CbcSerendipity  (  ) 
CbcSerendipity& CbcSerendipity::operator=  (  const CbcSerendipity &  rhs  ) 
Assignment operator.

virtual 
Clone.
Implements CbcHeuristic.

virtual 
Create C++ lines to get to current state.
Reimplemented from CbcHeuristic.
update model
Reimplemented from CbcHeuristic.

virtual 
returns 0 if no solution, 1 if valid solution.
Sets solution values if good, sets objective value (only if good) We leave all variables which are at one at this node of the tree to that value and will initially set all others to zero. We then sort all variables in order of their cost divided by the number of entries in rows which are not yet covered. We randomize that value a bit so that ties will be broken in different ways on different runs of the heuristic. We then choose the best one and set it to one and repeat the exercise.
Implements CbcHeuristic.
Resets stuff if model changes.
Implements CbcHeuristic.