Cbc
2.9.8
|
heuristic - just picks up any good solution More...
#include <CbcLinked.hpp>
Public Member Functions | |
CbcHeuristicDynamic3 () | |
CbcHeuristicDynamic3 (CbcModel &model) | |
CbcHeuristicDynamic3 (const CbcHeuristicDynamic3 &) | |
~CbcHeuristicDynamic3 () | |
virtual CbcHeuristic * | clone () const |
Clone. 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... | |
virtual bool | canDealWithOdd () const |
Returns true if can deal with "odd" problems e.g. sos type 2. More... | |
![]() | |
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... | |
virtual void | generateCpp (FILE *) |
Create C++ lines to get to current state. More... | |
void | generateCpp (FILE *fp, const char *heuristic) |
Create C++ lines to get to current state - does work for base class. 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 | |
![]() | |
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
Definition at line 379 of file CbcLinked.hpp.
CbcHeuristicDynamic3::CbcHeuristicDynamic3 | ( | ) |
CbcHeuristicDynamic3::CbcHeuristicDynamic3 | ( | CbcModel & | model | ) |
CbcHeuristicDynamic3::CbcHeuristicDynamic3 | ( | const CbcHeuristicDynamic3 & | ) |
CbcHeuristicDynamic3::~CbcHeuristicDynamic3 | ( | ) |
|
virtual |
Clone.
Implements CbcHeuristic.
|
virtual |
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.
|
virtual |
Resets stuff if model changes.
Implements CbcHeuristic.
|
inlinevirtual |
Returns true if can deal with "odd" problems e.g. sos type 2.
Reimplemented from CbcHeuristic.
Definition at line 417 of file CbcLinked.hpp.