CbcHeuristic Class Reference

Heuristic base class. More...

#include <CbcHeuristic.hpp>

Inheritance diagram for CbcHeuristic:
Inheritance graph
[legend]
Collaboration diagram for CbcHeuristic:
Collaboration graph
[legend]

List of all members.

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 solution (double &objectiveValue, double *newSolution, OsiCuts &cs)
 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 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 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).
virtual void generateCpp (FILE *fp)
 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.
bool shouldHeurRun ()
 Check whether the heuristic should run.
bool shouldHeurRun_randomChoice ()
void debugNodes ()
void printDistanceToNodes ()

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 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.

Private Member Functions

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

Detailed Description

Heuristic base class.

Definition at line 70 of file CbcHeuristic.hpp.


Constructor & Destructor Documentation

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

Member Function Documentation

void CbcHeuristic::gutsOfDelete (  )  [inline, private]

Definition at line 72 of file CbcHeuristic.hpp.

void CbcHeuristic::gutsOfCopy ( const CbcHeuristic rhs  )  [private]
virtual CbcHeuristic* CbcHeuristic::clone (  )  const [pure virtual]
CbcHeuristic& CbcHeuristic::operator= ( const CbcHeuristic rhs  ) 
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]

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

Implemented in CbcRounding, CbcHeuristicPartial, CbcSerendipity, CbcHeuristicDive, CbcHeuristicFPump, CbcHeuristicGreedyCover, CbcHeuristicGreedyEquality, CbcHeuristicLocal, CbcHeuristicRINS, CbcHeuristicRENS, and CbcHeuristicDynamic3.

virtual int CbcHeuristic::solution ( double &  objectiveValue,
double *  newSolution,
OsiCuts cs 
) [inline, virtual]

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 114 of file CbcHeuristic.hpp.

virtual void CbcHeuristic::validate (  )  [inline, virtual]

Validate model i.e. sets when_ to 0 if necessary (may be NULL).

Reimplemented in CbcRounding, CbcHeuristicPartial, CbcHeuristicDive, CbcHeuristicGreedyCover, and CbcHeuristicGreedyEquality.

Definition at line 119 of file CbcHeuristic.hpp.

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 125 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 128 of file CbcHeuristic.hpp.

void CbcHeuristic::setNumberNodes ( int  value  )  [inline]

Sets number of nodes in subtree (default 200).

Definition at line 132 of file CbcHeuristic.hpp.

int CbcHeuristic::numberNodes (  )  const [inline]

Gets number of nodes in a subtree (default 200).

Definition at line 135 of file CbcHeuristic.hpp.

void CbcHeuristic::setFeasibilityPumpOptions ( int  value  )  [inline]

Sets feasibility pump options (-1 is off).

Definition at line 138 of file CbcHeuristic.hpp.

int CbcHeuristic::feasibilityPumpOptions (  )  const [inline]

Gets feasibility pump options (-1 is off).

Definition at line 141 of file CbcHeuristic.hpp.

void CbcHeuristic::setModelOnly ( CbcModel model  )  [inline]

Just set model - do not do anything else.

Definition at line 144 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 149 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 152 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).

virtual void CbcHeuristic::generateCpp ( FILE *  fp  )  [inline, virtual]
void CbcHeuristic::generateCpp ( FILE *  fp,
const char *  heuristic 
)

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

Reimplemented in CbcHeuristicDive.

virtual bool CbcHeuristic::canDealWithOdd (  )  const [inline, virtual]

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

Reimplemented in CbcHeuristicDynamic3.

Definition at line 170 of file CbcHeuristic.hpp.

const char* CbcHeuristic::heuristicName (  )  const [inline]

return name of heuristic

Definition at line 173 of file CbcHeuristic.hpp.

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

set name of heuristic

Definition at line 176 of file CbcHeuristic.hpp.

void CbcHeuristic::setSeed ( int  value  ) 

Set random number generator seed.

Reimplemented in CbcRounding.

bool CbcHeuristic::shouldHeurRun (  ) 

Check whether the heuristic should run.

bool CbcHeuristic::shouldHeurRun_randomChoice (  ) 
void CbcHeuristic::debugNodes (  ) 
void CbcHeuristic::printDistanceToNodes (  ) 

Member Data Documentation

Model.

Definition at line 190 of file CbcHeuristic.hpp.

int CbcHeuristic::when_ [protected]

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

Definition at line 192 of file CbcHeuristic.hpp.

int CbcHeuristic::numberNodes_ [protected]

Number of nodes in any sub tree.

Definition at line 194 of file CbcHeuristic.hpp.

Feasibility pump options (-1 is off).

Definition at line 196 of file CbcHeuristic.hpp.

double CbcHeuristic::fractionSmall_ [protected]

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

Definition at line 198 of file CbcHeuristic.hpp.

Thread specific random number generator.

Definition at line 200 of file CbcHeuristic.hpp.

std::string CbcHeuristic::heuristicName_ [protected]

Name for printing.

Definition at line 202 of file CbcHeuristic.hpp.

int CbcHeuristic::howOften_ [protected]

How often to do (code can change).

Reimplemented in CbcHeuristicRINS.

Definition at line 205 of file CbcHeuristic.hpp.

double CbcHeuristic::decayFactor_ [protected]

How much to increase how often.

Reimplemented in CbcHeuristicRINS.

Definition at line 207 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 214 of file CbcHeuristic.hpp.

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

Definition at line 216 of file CbcHeuristic.hpp.

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

Definition at line 219 of file CbcHeuristic.hpp.

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

For every node we count only one invocation.

Definition at line 222 of file CbcHeuristic.hpp.

int CbcHeuristic::lastRunDeep_ [protected]

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

Definition at line 224 of file CbcHeuristic.hpp.

int CbcHeuristic::numRuns_ [protected]

how many times the heuristic has actually run

Definition at line 226 of file CbcHeuristic.hpp.

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 230 of file CbcHeuristic.hpp.

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

Definition at line 233 of file CbcHeuristic.hpp.

int CbcHeuristic::numCouldRun_ [protected]

How many times the heuristic could run.

Definition at line 236 of file CbcHeuristic.hpp.


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

Generated on 15 Mar 2015 for Coin-All by  doxygen 1.6.1