Public Member Functions | Protected Attributes | Private Member Functions | List of all members
CbcHeuristic Class Reference

Heuristic base class. More...

#include <CbcHeuristic.hpp>

Inheritance diagram for CbcHeuristic:
CbcHeuristicCrossover CbcHeuristicCrossover CbcHeuristicDINS CbcHeuristicDINS CbcHeuristicDive CbcHeuristicDive CbcHeuristicDynamic3 CbcHeuristicDynamic3 CbcHeuristicFPump CbcHeuristicFPump CbcHeuristicGreedyCover CbcHeuristicGreedyCover CbcHeuristicGreedyEquality CbcHeuristicGreedyEquality CbcHeuristicJustOne CbcHeuristicJustOne CbcHeuristicLocal CbcHeuristicLocal CbcHeuristicNaive CbcHeuristicNaive CbcHeuristicPartial CbcHeuristicPartial CbcHeuristicPivotAndFix CbcHeuristicPivotAndFix CbcHeuristicRandRound CbcHeuristicRandRound CbcHeuristicRENS CbcHeuristicRENS CbcHeuristicRINS CbcHeuristicRINS CbcHeuristicVND CbcHeuristicVND CbcRounding CbcRounding CbcSerendipity CbcSerendipity

Public Member Functions

 CbcHeuristic ()
 CbcHeuristic (CbcModel &model)
 CbcHeuristic (const CbcHeuristic &)
virtual ~CbcHeuristic ()
virtual CbcHeuristicclone () const =0
 Clone.
CbcHeuristicoperator= (const CbcHeuristic &rhs)
 Assignment operator.
virtual void setModel (CbcModel *model)
 update model (This is needed if cliques update matrix etc)
virtual void resetModel (CbcModel *model)=0
 Resets stuff if model changes.
virtual int solution (double &objectiveValue, double *newSolution)=0
 returns 0 if no solution, 1 if valid solution with better objective value than one passed in Sets solution values if good, sets objective value This is called after cuts have been added - so can not add cuts
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
virtual void validate ()
 Validate model i.e. sets when_ to 0 if necessary (may be NULL)
void setWhen (int value)
 Sets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.
int when () const
 Gets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.
void setNumberNodes (int value)
 Sets number of nodes in subtree (default 200)
int numberNodes () const
 Gets number of nodes in a subtree (default 200)
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 1024 bit - stop all heuristics on max time.
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 1024 bit - stop all heuristics on max time.
bool exitNow (double bestObjective) const
 Whether to exit at once on gap.
void setFeasibilityPumpOptions (int value)
 Sets feasibility pump options (-1 is off)
int feasibilityPumpOptions () const
 Gets feasibility pump options (-1 is off)
void setModelOnly (CbcModel *model)
 Just set model - do not do anything else.
void setFractionSmall (double value)
 Sets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)
double fractionSmall () const
 Gets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)
int numberSolutionsFound () const
 Get how many solutions the heuristic thought it got.
void incrementNumberSolutionsFound ()
 Increment how many solutions the heuristic thought it got.
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.
virtual void generateCpp (FILE *)
 Create C++ lines to get to current state.
void generateCpp (FILE *fp, const char *heuristic)
 Create C++ lines to get to current state - does work for base class.
virtual bool canDealWithOdd () const
 Returns true if can deal with "odd" problems e.g. sos type 2.
const char * heuristicName () const
 return name of heuristic
void setHeuristicName (const char *name)
 set name of heuristic
void setSeed (int value)
 Set random number generator seed.
void setDecayFactor (double value)
 Sets decay factor (for howOften) on failure.
void setInputSolution (const double *solution, double objValue)
 Set input solution.
void setWhereFrom (int value)
void setShallowDepth (int value)
 Upto this depth we call the tree shallow and the heuristic can be called multiple times.
void setHowOftenShallow (int value)
 How often to invoke the heuristics in the shallow part of the tree.
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.
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.
bool shouldHeurRun_randomChoice ()
 Check whether the heuristic should run this time.
void debugNodes ()
void printDistanceToNodes ()
int numRuns () const
 how many times the heuristic has actually run
int numCouldRun () const
 How many times the heuristic could run.
OsiSolverInterface * cloneBut (int type)
 Clone but .
 CbcHeuristic ()
 CbcHeuristic (CbcModel &model)
 CbcHeuristic (const CbcHeuristic &)
virtual ~CbcHeuristic ()
virtual CbcHeuristicclone () const =0
 Clone.
CbcHeuristicoperator= (const CbcHeuristic &rhs)
 Assignment operator.
virtual void setModel (CbcModel *model)
 update model (This is needed if cliques update matrix etc)
virtual void resetModel (CbcModel *model)=0
 Resets stuff if model changes.
virtual int solution (double &objectiveValue, double *newSolution)=0
 returns 0 if no solution, 1 if valid solution with better objective value than one passed in Sets solution values if good, sets objective value This is called after cuts have been added - so can not add cuts
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
virtual void validate ()
 Validate model i.e. sets when_ to 0 if necessary (may be NULL)
void setWhen (int value)
 Sets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.
int when () const
 Gets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.
void setNumberNodes (int value)
 Sets number of nodes in subtree (default 200)
int numberNodes () const
 Gets number of nodes in a subtree (default 200)
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 1024 bit - stop all heuristics on max time.
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 1024 bit - stop all heuristics on max time.
bool exitNow (double bestObjective) const
 Whether to exit at once on gap.
void setFeasibilityPumpOptions (int value)
 Sets feasibility pump options (-1 is off)
int feasibilityPumpOptions () const
 Gets feasibility pump options (-1 is off)
void setModelOnly (CbcModel *model)
 Just set model - do not do anything else.
void setFractionSmall (double value)
 Sets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)
double fractionSmall () const
 Gets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)
int numberSolutionsFound () const
 Get how many solutions the heuristic thought it got.
void incrementNumberSolutionsFound ()
 Increment how many solutions the heuristic thought it got.
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.
virtual void generateCpp (FILE *)
 Create C++ lines to get to current state.
void generateCpp (FILE *fp, const char *heuristic)
 Create C++ lines to get to current state - does work for base class.
virtual bool canDealWithOdd () const
 Returns true if can deal with "odd" problems e.g. sos type 2.
const char * heuristicName () const
 return name of heuristic
void setHeuristicName (const char *name)
 set name of heuristic
void setSeed (int value)
 Set random number generator seed.
void setDecayFactor (double value)
 Sets decay factor (for howOften) on failure.
void setInputSolution (const double *solution, double objValue)
 Set input solution.
void setWhereFrom (int value)
void setShallowDepth (int value)
 Upto this depth we call the tree shallow and the heuristic can be called multiple times.
void setHowOftenShallow (int value)
 How often to invoke the heuristics in the shallow part of the tree.
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.
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.
bool shouldHeurRun_randomChoice ()
 Check whether the heuristic should run this time.
void debugNodes ()
void printDistanceToNodes ()
int numRuns () const
 how many times the heuristic has actually run
int numCouldRun () const
 How many times the heuristic could run.
OsiSolverInterface * cloneBut (int type)
 Clone but .

Protected Attributes

CbcModelmodel_
 Model.
int when_
 When flag - 0 off, 1 at root, 2 other than root, 3 always.
int numberNodes_
 Number of nodes in any sub tree.
int feasibilityPumpOptions_
 Feasibility pump options (-1 is off)
double fractionSmall_
 Fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound.
CoinThreadRandom randomNumberGenerator_
 Thread specific random number generator.
std::string heuristicName_
 Name for printing.
int howOften_
 How often to do (code can change)
double decayFactor_
 How much to increase how often.
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 1024 bit - stop all heuristics on max time.
int whereFrom_
int shallowDepth_
 Upto this depth we call the tree shallow and the heuristic can be called multiple times.
int howOftenShallow_
 How often to invoke the heuristics in the shallow part of the tree.
int numInvocationsInShallow_
 How many invocations happened within the same node when in a shallow part of the tree.
int numInvocationsInDeep_
 How many invocations happened when in the deep part of the tree.
int lastRunDeep_
 After how many deep invocations was the heuristic run last time.
int numRuns_
 how many times the heuristic has actually run
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.
CbcHeuristicNodeList runNodes_
 The description of the nodes where this heuristic has been applied.
int numCouldRun_
 How many times the heuristic could run.
int numberSolutionsFound_
 How many solutions the heuristic thought it got.
double * inputSolution_

Private Member Functions

void gutsOfDelete ()
void gutsOfCopy (const CbcHeuristic &rhs)
void gutsOfDelete ()
void gutsOfCopy (const CbcHeuristic &rhs)

Detailed Description

Heuristic base class.

Definition at line 75 of file CbcHeuristic.hpp.

Constructor & Destructor Documentation

CbcHeuristic::CbcHeuristic ( )
CbcHeuristic::CbcHeuristic ( CbcModel model)
CbcHeuristic::CbcHeuristic ( const CbcHeuristic )
virtual CbcHeuristic::~CbcHeuristic ( )
virtual
CbcHeuristic::CbcHeuristic ( )
CbcHeuristic::CbcHeuristic ( CbcModel model)
CbcHeuristic::CbcHeuristic ( const CbcHeuristic )
virtual CbcHeuristic::~CbcHeuristic ( )
virtual

Member Function Documentation

void CbcHeuristic::gutsOfDelete ( )
inlineprivate

Definition at line 77 of file CbcHeuristic.hpp.

void CbcHeuristic::gutsOfCopy ( const CbcHeuristic rhs)
private
virtual CbcHeuristic* CbcHeuristic::clone ( ) const
pure virtual
CbcHeuristic& CbcHeuristic::operator= ( const CbcHeuristic rhs)

Assignment operator.

virtual void CbcHeuristic::setModel ( CbcModel model)
virtual
virtual void CbcHeuristic::resetModel ( CbcModel model)
pure virtual
virtual int CbcHeuristic::solution ( double &  objectiveValue,
double *  newSolution 
)
pure virtual
virtual int CbcHeuristic::solution2 ( double &  ,
double *  ,
OsiCuts &   
)
inlinevirtual

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

Definition at line 119 of file CbcHeuristic.hpp.

virtual void CbcHeuristic::validate ( )
inlinevirtual
void CbcHeuristic::setWhen ( int  value)
inline

Sets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.

If 10 added then don't worry if validate says there are funny objects as user knows it will be fine

Definition at line 132 of file CbcHeuristic.hpp.

int CbcHeuristic::when ( ) const
inline

Gets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.

Definition at line 136 of file CbcHeuristic.hpp.

void CbcHeuristic::setNumberNodes ( int  value)
inline

Sets number of nodes in subtree (default 200)

Definition at line 141 of file CbcHeuristic.hpp.

int CbcHeuristic::numberNodes ( ) const
inline

Gets number of nodes in a subtree (default 200)

Definition at line 145 of file CbcHeuristic.hpp.

void CbcHeuristic::setSwitches ( int  value)
inline

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 1024 bit - stop all heuristics on max time.

Definition at line 157 of file CbcHeuristic.hpp.

int CbcHeuristic::switches ( ) const
inline

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 1024 bit - stop all heuristics on max time.

Definition at line 169 of file CbcHeuristic.hpp.

bool CbcHeuristic::exitNow ( double  bestObjective) const

Whether to exit at once on gap.

void CbcHeuristic::setFeasibilityPumpOptions ( int  value)
inline

Sets feasibility pump options (-1 is off)

Definition at line 175 of file CbcHeuristic.hpp.

int CbcHeuristic::feasibilityPumpOptions ( ) const
inline

Gets feasibility pump options (-1 is off)

Definition at line 179 of file CbcHeuristic.hpp.

void CbcHeuristic::setModelOnly ( CbcModel model)
inline

Just set model - do not do anything else.

Definition at line 183 of file CbcHeuristic.hpp.

void CbcHeuristic::setFractionSmall ( double  value)
inline

Sets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)

Definition at line 189 of file CbcHeuristic.hpp.

double CbcHeuristic::fractionSmall ( ) const
inline

Gets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)

Definition at line 193 of file CbcHeuristic.hpp.

int CbcHeuristic::numberSolutionsFound ( ) const
inline

Get how many solutions the heuristic thought it got.

Definition at line 197 of file CbcHeuristic.hpp.

void CbcHeuristic::incrementNumberSolutionsFound ( )
inline

Increment how many solutions the heuristic thought it got.

Definition at line 201 of file CbcHeuristic.hpp.

int CbcHeuristic::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.

virtual void CbcHeuristic::generateCpp ( FILE *  )
inlinevirtual
void CbcHeuristic::generateCpp ( FILE *  fp,
const char *  heuristic 
)

Create C++ lines to get to current state - does work for base class.

Reimplemented in CbcHeuristicDive, and CbcHeuristicDive.

virtual bool CbcHeuristic::canDealWithOdd ( ) const
inlinevirtual

Returns true if can deal with "odd" problems e.g. sos type 2.

Reimplemented in CbcHeuristicDynamic3, and CbcHeuristicDynamic3.

Definition at line 222 of file CbcHeuristic.hpp.

const char* CbcHeuristic::heuristicName ( ) const
inline

return name of heuristic

Definition at line 226 of file CbcHeuristic.hpp.

void CbcHeuristic::setHeuristicName ( const char *  name)
inline

set name of heuristic

Definition at line 230 of file CbcHeuristic.hpp.

void CbcHeuristic::setSeed ( int  value)

Set random number generator seed.

Reimplemented in CbcRounding, and CbcRounding.

void CbcHeuristic::setDecayFactor ( double  value)
inline

Sets decay factor (for howOften) on failure.

Definition at line 236 of file CbcHeuristic.hpp.

void CbcHeuristic::setInputSolution ( const double *  solution,
double  objValue 
)

Set input solution.

void CbcHeuristic::setWhereFrom ( int  value)
inline

Definition at line 249 of file CbcHeuristic.hpp.

void CbcHeuristic::setShallowDepth ( int  value)
inline

Upto this depth we call the tree shallow and the heuristic can be called multiple times.

That is, the test whether the current node is far from the others where the jeuristic was invoked will not be done, only the frequency will be tested. After that depth the heuristic will can be invoked only once per node, right before branching. That's when it'll be tested whether the heur should run at all.

Definition at line 258 of file CbcHeuristic.hpp.

void CbcHeuristic::setHowOftenShallow ( int  value)
inline

How often to invoke the heuristics in the shallow part of the tree.

Definition at line 262 of file CbcHeuristic.hpp.

void CbcHeuristic::setMinDistanceToRun ( int  value)
inline

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.

Currently this is tested, but we may switch to avgDistanceToRun_ in the future.

Definition at line 268 of file CbcHeuristic.hpp.

virtual bool CbcHeuristic::shouldHeurRun ( int  whereFrom)
virtual

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.

Reimplemented in CbcHeuristicPartial, and CbcHeuristicPartial.

bool CbcHeuristic::shouldHeurRun_randomChoice ( )

Check whether the heuristic should run this time.

void CbcHeuristic::debugNodes ( )
void CbcHeuristic::printDistanceToNodes ( )
int CbcHeuristic::numRuns ( ) const
inline

how many times the heuristic has actually run

Definition at line 286 of file CbcHeuristic.hpp.

int CbcHeuristic::numCouldRun ( ) const
inline

How many times the heuristic could run.

Definition at line 291 of file CbcHeuristic.hpp.

OsiSolverInterface* CbcHeuristic::cloneBut ( int  type)

Clone but .

type 0 clone solver, 1 clone continuous solver Add 2 to say without integer variables which are at low priority Add 4 to say quite likely infeasible so give up easily.

void CbcHeuristic::gutsOfDelete ( )
inlineprivate

Definition at line 77 of file CbcHeuristic.hpp.

void CbcHeuristic::gutsOfCopy ( const CbcHeuristic rhs)
private
virtual CbcHeuristic* CbcHeuristic::clone ( ) const
pure virtual
CbcHeuristic& CbcHeuristic::operator= ( const CbcHeuristic rhs)

Assignment operator.

virtual void CbcHeuristic::setModel ( CbcModel model)
virtual
virtual void CbcHeuristic::resetModel ( CbcModel model)
pure virtual
virtual int CbcHeuristic::solution ( double &  objectiveValue,
double *  newSolution 
)
pure virtual
virtual int CbcHeuristic::solution2 ( double &  ,
double *  ,
OsiCuts &   
)
inlinevirtual

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

Definition at line 119 of file CbcHeuristic.hpp.

virtual void CbcHeuristic::validate ( )
inlinevirtual
void CbcHeuristic::setWhen ( int  value)
inline

Sets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.

If 10 added then don't worry if validate says there are funny objects as user knows it will be fine

Definition at line 132 of file CbcHeuristic.hpp.

int CbcHeuristic::when ( ) const
inline

Gets "when" flag - 0 off, 1 at root, 2 other than root, 3 always.

Definition at line 136 of file CbcHeuristic.hpp.

void CbcHeuristic::setNumberNodes ( int  value)
inline

Sets number of nodes in subtree (default 200)

Definition at line 141 of file CbcHeuristic.hpp.

int CbcHeuristic::numberNodes ( ) const
inline

Gets number of nodes in a subtree (default 200)

Definition at line 145 of file CbcHeuristic.hpp.

void CbcHeuristic::setSwitches ( int  value)
inline

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 1024 bit - stop all heuristics on max time.

Definition at line 157 of file CbcHeuristic.hpp.

int CbcHeuristic::switches ( ) const
inline

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 1024 bit - stop all heuristics on max time.

Definition at line 169 of file CbcHeuristic.hpp.

bool CbcHeuristic::exitNow ( double  bestObjective) const

Whether to exit at once on gap.

void CbcHeuristic::setFeasibilityPumpOptions ( int  value)
inline

Sets feasibility pump options (-1 is off)

Definition at line 175 of file CbcHeuristic.hpp.

int CbcHeuristic::feasibilityPumpOptions ( ) const
inline

Gets feasibility pump options (-1 is off)

Definition at line 179 of file CbcHeuristic.hpp.

void CbcHeuristic::setModelOnly ( CbcModel model)
inline

Just set model - do not do anything else.

Definition at line 183 of file CbcHeuristic.hpp.

void CbcHeuristic::setFractionSmall ( double  value)
inline

Sets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)

Definition at line 189 of file CbcHeuristic.hpp.

double CbcHeuristic::fractionSmall ( ) const
inline

Gets fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound (default 1.0)

Definition at line 193 of file CbcHeuristic.hpp.

int CbcHeuristic::numberSolutionsFound ( ) const
inline

Get how many solutions the heuristic thought it got.

Definition at line 197 of file CbcHeuristic.hpp.

void CbcHeuristic::incrementNumberSolutionsFound ( )
inline

Increment how many solutions the heuristic thought it got.

Definition at line 201 of file CbcHeuristic.hpp.

int CbcHeuristic::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.

virtual void CbcHeuristic::generateCpp ( FILE *  )
inlinevirtual
void CbcHeuristic::generateCpp ( FILE *  fp,
const char *  heuristic 
)

Create C++ lines to get to current state - does work for base class.

Reimplemented in CbcHeuristicDive, and CbcHeuristicDive.

virtual bool CbcHeuristic::canDealWithOdd ( ) const
inlinevirtual

Returns true if can deal with "odd" problems e.g. sos type 2.

Reimplemented in CbcHeuristicDynamic3, and CbcHeuristicDynamic3.

Definition at line 222 of file CbcHeuristic.hpp.

const char* CbcHeuristic::heuristicName ( ) const
inline

return name of heuristic

Definition at line 226 of file CbcHeuristic.hpp.

void CbcHeuristic::setHeuristicName ( const char *  name)
inline

set name of heuristic

Definition at line 230 of file CbcHeuristic.hpp.

void CbcHeuristic::setSeed ( int  value)

Set random number generator seed.

Reimplemented in CbcRounding, and CbcRounding.

void CbcHeuristic::setDecayFactor ( double  value)
inline

Sets decay factor (for howOften) on failure.

Definition at line 236 of file CbcHeuristic.hpp.

void CbcHeuristic::setInputSolution ( const double *  solution,
double  objValue 
)

Set input solution.

void CbcHeuristic::setWhereFrom ( int  value)
inline

Definition at line 249 of file CbcHeuristic.hpp.

void CbcHeuristic::setShallowDepth ( int  value)
inline

Upto this depth we call the tree shallow and the heuristic can be called multiple times.

That is, the test whether the current node is far from the others where the jeuristic was invoked will not be done, only the frequency will be tested. After that depth the heuristic will can be invoked only once per node, right before branching. That's when it'll be tested whether the heur should run at all.

Definition at line 258 of file CbcHeuristic.hpp.

void CbcHeuristic::setHowOftenShallow ( int  value)
inline

How often to invoke the heuristics in the shallow part of the tree.

Definition at line 262 of file CbcHeuristic.hpp.

void CbcHeuristic::setMinDistanceToRun ( int  value)
inline

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.

Currently this is tested, but we may switch to avgDistanceToRun_ in the future.

Definition at line 268 of file CbcHeuristic.hpp.

virtual bool CbcHeuristic::shouldHeurRun ( int  whereFrom)
virtual

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.

Reimplemented in CbcHeuristicPartial, and CbcHeuristicPartial.

bool CbcHeuristic::shouldHeurRun_randomChoice ( )

Check whether the heuristic should run this time.

void CbcHeuristic::debugNodes ( )
void CbcHeuristic::printDistanceToNodes ( )
int CbcHeuristic::numRuns ( ) const
inline

how many times the heuristic has actually run

Definition at line 286 of file CbcHeuristic.hpp.

int CbcHeuristic::numCouldRun ( ) const
inline

How many times the heuristic could run.

Definition at line 291 of file CbcHeuristic.hpp.

OsiSolverInterface* CbcHeuristic::cloneBut ( int  type)

Clone but .

type 0 clone solver, 1 clone continuous solver Add 2 to say without integer variables which are at low priority Add 4 to say quite likely infeasible so give up easily.

Member Data Documentation

CbcModel * CbcHeuristic::model_
protected

Model.

Definition at line 302 of file CbcHeuristic.hpp.

int CbcHeuristic::when_
protected

When flag - 0 off, 1 at root, 2 other than root, 3 always.

Definition at line 304 of file CbcHeuristic.hpp.

int CbcHeuristic::numberNodes_
protected

Number of nodes in any sub tree.

Definition at line 306 of file CbcHeuristic.hpp.

int CbcHeuristic::feasibilityPumpOptions_
protected

Feasibility pump options (-1 is off)

Definition at line 308 of file CbcHeuristic.hpp.

double CbcHeuristic::fractionSmall_
mutableprotected

Fraction of new(rows+columns)/old(rows+columns) before doing small branch and bound.

Definition at line 310 of file CbcHeuristic.hpp.

CoinThreadRandom CbcHeuristic::randomNumberGenerator_
protected

Thread specific random number generator.

Definition at line 312 of file CbcHeuristic.hpp.

std::string CbcHeuristic::heuristicName_
protected

Name for printing.

Definition at line 314 of file CbcHeuristic.hpp.

int CbcHeuristic::howOften_
protected

How often to do (code can change)

Definition at line 317 of file CbcHeuristic.hpp.

double CbcHeuristic::decayFactor_
protected

How much to increase how often.

Definition at line 319 of file CbcHeuristic.hpp.

int CbcHeuristic::switches_
mutableprotected

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 1024 bit - stop all heuristics on max time.

Definition at line 329 of file CbcHeuristic.hpp.

int CbcHeuristic::whereFrom_
protected

Definition at line 338 of file CbcHeuristic.hpp.

int CbcHeuristic::shallowDepth_
protected

Upto this depth we call the tree shallow and the heuristic can be called multiple times.

That is, the test whether the current node is far from the others where the jeuristic was invoked will not be done, only the frequency will be tested. After that depth the heuristic will can be invoked only once per node, right before branching. That's when it'll be tested whether the heur should run at all.

Definition at line 345 of file CbcHeuristic.hpp.

int CbcHeuristic::howOftenShallow_
protected

How often to invoke the heuristics in the shallow part of the tree.

Definition at line 347 of file CbcHeuristic.hpp.

int CbcHeuristic::numInvocationsInShallow_
protected

How many invocations happened within the same node when in a shallow part of the tree.

Definition at line 350 of file CbcHeuristic.hpp.

int CbcHeuristic::numInvocationsInDeep_
protected

How many invocations happened when in the deep part of the tree.

For every node we count only one invocation.

Definition at line 353 of file CbcHeuristic.hpp.

int CbcHeuristic::lastRunDeep_
protected

After how many deep invocations was the heuristic run last time.

Definition at line 355 of file CbcHeuristic.hpp.

int CbcHeuristic::numRuns_
protected

how many times the heuristic has actually run

Definition at line 357 of file CbcHeuristic.hpp.

int CbcHeuristic::minDistanceToRun_
protected

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.

Currently this is tested, but we may switch to avgDistanceToRun_ in the future.

Definition at line 361 of file CbcHeuristic.hpp.

CbcHeuristicNodeList CbcHeuristic::runNodes_
protected

The description of the nodes where this heuristic has been applied.

Definition at line 364 of file CbcHeuristic.hpp.

int CbcHeuristic::numCouldRun_
protected

How many times the heuristic could run.

Definition at line 367 of file CbcHeuristic.hpp.

int CbcHeuristic::numberSolutionsFound_
protected

How many solutions the heuristic thought it got.

Definition at line 370 of file CbcHeuristic.hpp.

double * CbcHeuristic::inputSolution_
protected

Definition at line 373 of file CbcHeuristic.hpp.


The documentation for this class was generated from the following files: