# CbcBranchDefaultDecision Class Reference

Branching decision default class. More...

`#include <CbcBranchDefaultDecision.hpp>`

Inheritance diagram for CbcBranchDefaultDecision:
[legend]
Collaboration diagram for CbcBranchDefaultDecision:
[legend]

List of all members.

## Public Member Functions
| CbcBranchDefaultDecision ()
| CbcBranchDefaultDecision (const CbcBranchDefaultDecision &)
virtual | ~CbcBranchDefaultDecision ()
virtual CbcBranchDecision * | clone () const
| Clone.
virtual void | initialize (CbcModel *model)
| Initialize, e.g. before the start of branch selection at a node.
virtual int | betterBranch (CbcBranchingObject *thisOne, CbcBranchingObject *bestSoFar, double changeUp, int numInfUp, double changeDn, int numInfDn)
| Compare two branching objects.
virtual void | setBestCriterion (double value)
| Sets or gets best criterion so far.
virtual double | getBestCriterion () const
virtual int | bestBranch (CbcBranchingObject **objects, int numberObjects, int numberUnsatisfied, double *changeUp, int *numberInfeasibilitiesUp, double *changeDown, int *numberInfeasibilitiesDown, double objectiveValue)
| Compare N branching objects.
## Private Member Functions
CbcBranchDefaultDecision & | operator= (const CbcBranchDefaultDecision &rhs)
| Illegal Assignment operator.
## Private Attributes
double | bestCriterion_
| data
double | bestChangeUp_
| Change up for best.
int | bestNumberUp_
| Number of infeasibilities for up.
double | bestChangeDown_
| Change down for best.
CbcBranchingObject * | bestObject_
| Pointer to best branching object.
int | bestNumberDown_
| Number of infeasibilities for down.

## Detailed Description

Branching decision default class.

This class implements a simple default algorithm (betterBranch()) for choosing a branching variable.

Definition at line 18 of file CbcBranchDefaultDecision.hpp.

## Constructor & Destructor Documentation

CbcBranchDefaultDecision::CbcBranchDefaultDecision | ( |  | ) |

CbcBranchDefaultDecision::CbcBranchDefaultDecision | ( | const CbcBranchDefaultDecision & |  | ) |

virtual CbcBranchDefaultDecision::~CbcBranchDefaultDecision | ( |  | ) | `[virtual]`

## Member Function Documentation

virtual CbcBranchDecision* CbcBranchDefaultDecision::clone | ( |  | ) | const`[virtual]`

Clone.

Implements CbcBranchDecision.

virtual void CbcBranchDefaultDecision::initialize | ( | CbcModel * | model | ) | `[virtual]`

Initialize, e.g. before the start of branch selection at a node.

Implements CbcBranchDecision.

virtual int CbcBranchDefaultDecision::betterBranch | ( | CbcBranchingObject * | thisOne,
|  | CbcBranchingObject * | bestSoFar,
|  | double | changeUp,
|  | int | numInfUp,
|  | double | changeDn,
|  | int | numInfDn |
| ) |  |  | `[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 `CbcBranchDefaultDecision` 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 `CbcBranchDefaultDecision` 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 CbcBranchDecision.

virtual void CbcBranchDefaultDecision::setBestCriterion | ( | double | value | ) | `[virtual]`

Sets or gets best criterion so far.

Reimplemented from CbcBranchDecision.

virtual double CbcBranchDefaultDecision::getBestCriterion | ( |  | ) | const`[virtual]`

Reimplemented from CbcBranchDecision.

virtual int CbcBranchDefaultDecision::bestBranch | ( | CbcBranchingObject ** | objects,
|  | int | numberObjects,
|  | int | numberUnsatisfied,
|  | double * | changeUp,
|  | int * | numberInfeasibilitiesUp,
|  | double * | changeDown,
|  | int * | numberInfeasibilitiesDown,
|  | double | objectiveValue |
| ) |  |  | `[virtual]`

Compare N branching objects.

Return index of best and sets way of branching in chosen object.

This routine is used only after strong branching.

Reimplemented from CbcBranchDecision.

CbcBranchDefaultDecision& CbcBranchDefaultDecision::operator= | ( | const CbcBranchDefaultDecision & | rhs | ) | `[private]`

Illegal Assignment operator.

Reimplemented from CbcBranchDecision.

## Member Data Documentation

double CbcBranchDefaultDecision::bestCriterion_`[private]`

data

"best" so far

Definition at line 80 of file CbcBranchDefaultDecision.hpp.

double CbcBranchDefaultDecision::bestChangeUp_`[private]`

Change up for best.

Definition at line 83 of file CbcBranchDefaultDecision.hpp.

int CbcBranchDefaultDecision::bestNumberUp_`[private]`

Number of infeasibilities for up.

Definition at line 86 of file CbcBranchDefaultDecision.hpp.

double CbcBranchDefaultDecision::bestChangeDown_`[private]`

Change down for best.

Definition at line 89 of file CbcBranchDefaultDecision.hpp.

CbcBranchingObject* CbcBranchDefaultDecision::bestObject_`[private]`

Pointer to best branching object.

Definition at line 92 of file CbcBranchDefaultDecision.hpp.

int CbcBranchDefaultDecision::bestNumberDown_`[private]`

Number of infeasibilities for down.

Definition at line 95 of file CbcBranchDefaultDecision.hpp.

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

- /home/coin/svn-release/Cbc-2.7.7/Cbc/src/CbcBranchDefaultDecision.hpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines