Branching decision default class. More...
#include <AbcBranchActual.h>
Public Member Functions | |
AbcBranchDefaultDecision () | |
AbcBranchDefaultDecision (const AbcBranchDefaultDecision &) | |
virtual | ~AbcBranchDefaultDecision () |
virtual AbcBranchDecision * | clone () const |
Clone. More... | |
virtual void | initialize (AbcModel *model) |
Initialize, e.g. before the start of branch selection at a node. More... | |
virtual int | betterBranch (int thisOne, int bestSoFar, double changeUp, int numInfUp, double changeDn, int numInfDn) |
Compare two branching objects. More... | |
![]() | |
AbcBranchDecision () | |
Default Constructor. More... | |
virtual | ~AbcBranchDecision () |
Destructor. More... | |
virtual int | bestBranch (AbcModel *model, int *objects, int numberObjects, int numberUnsatisfied, double *changeUp, int *numberInfeasibilitiesUp, double *changeDown, int *numberInfeasibilitiesDown, double objectiveValue) |
Compare N branching objects. More... | |
Private Member Functions | |
AbcBranchDefaultDecision & | operator= (const AbcBranchDefaultDecision &rhs) |
Illegal Assignment operator. More... | |
Private Attributes | |
AbcModel * | model_ |
data Point to the model More... | |
double | bestCriterion_ |
"best" so far More... | |
double | bestChangeUp_ |
Change up for best. More... | |
int | bestNumberUp_ |
Number of infeasibilities for up. More... | |
double | bestChangeDown_ |
Change down for best. More... | |
int | bestNumberDown_ |
Number of infeasibilities for down. More... | |
int | bestObject_ |
Index of the best branching integer variable. More... | |
Branching decision default class.
This class implements a simple default algorithm (betterBranch()) for choosing a branching variable.
Definition at line 38 of file AbcBranchActual.h.
AbcBranchDefaultDecision::AbcBranchDefaultDecision | ( | ) |
AbcBranchDefaultDecision::AbcBranchDefaultDecision | ( | const AbcBranchDefaultDecision & | ) |
|
virtual |
|
virtual |
Clone.
Implements AbcBranchDecision.
Initialize, e.g. before the start of branch selection at a node.
Implements AbcBranchDecision.
|
virtual |
Compare two branching objects.
Return nonzero if thisOne
is better than bestSoFar
.
The routine compares branches using the values supplied in numInfUp
and numInfDn
until a solution is found by search, after which it uses the values supplied in changeUp
and changeDn
. The best branching object seen so far and the associated parameter values are remembered in the AbcBranchDefaultDecision
object. The nonzero return value is +1 if the up branch is preferred, -1 if the down branch is preferred.
As the names imply, the assumption is that the values supplied for numInfUp
and numInfDn
will be the number of infeasibilities reported by the branching object, and changeUp
and changeDn
will be the estimated change in objective. Other measures can be used if desired.
Because an AbcBranchDefaultDecision
object remembers the current best branching candidate (bestObject_) as well as the values used in the comparison, the parameter bestSoFar
is redundant, hence unused.
Implements AbcBranchDecision.
|
private |
Illegal Assignment operator.
|
private |
data Point to the model
Definition at line 89 of file AbcBranchActual.h.
|
private |
"best" so far
Definition at line 92 of file AbcBranchActual.h.
|
private |
Change up for best.
Definition at line 95 of file AbcBranchActual.h.
|
private |
Number of infeasibilities for up.
Definition at line 98 of file AbcBranchActual.h.
|
private |
Change down for best.
Definition at line 101 of file AbcBranchActual.h.
|
private |
Number of infeasibilities for down.
Definition at line 104 of file AbcBranchActual.h.
|
private |
Index of the best branching integer variable.
Definition at line 107 of file AbcBranchActual.h.