# AbcBranchDecision Class Reference

Abstract branching decision base class. More...

`#include <AbcBranchBase.h>`

Inheritance diagram for AbcBranchDecision:
[legend]

List of all members.

## Public Member Functions
| AbcBranchDecision ()
| Default Constructor.
virtual | ~AbcBranchDecision ()
| Destructor.
virtual AbcBranchDecision * | clone () const =0
| Clone.
virtual void | initialize (AbcModel *model)=0
| Initialize e.g. before starting to choose a branch at a node.
virtual int | betterBranch (int thisOne, int bestSoFar, double changeUp, int numberInfeasibilitiesUp, double changeDown, int numberInfeasibilitiesDown)=0
| Compare two branching objects (current just integer variables).
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.
## Private Member Functions
AbcBranchDecision & | operator= (const AbcBranchDecision &rhs)
| Assignment is illegal.

## Detailed Description

Abstract branching decision base class.

In the abstract, an AbcBranchDecision object is expected to be able to compare two possible branching choices.

The betterBranch() method is the crucial routine. It is expected to be able to compare two integer variables.

Definition at line 50 of file AbcBranchBase.h.

## Constructor & Destructor Documentation

AbcBranchDecision::AbcBranchDecision | ( |  | ) |

Default Constructor.

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

Destructor.

## Member Function Documentation

virtual AbcBranchDecision* AbcBranchDecision::clone | ( |  | ) | const`[pure virtual]`

Clone.

Implemented in AbcBranchDefaultDecision.

virtual void AbcBranchDecision::initialize | ( | AbcModel * | model | ) | `[pure virtual]`

Initialize e.g. before starting to choose a branch at a node.

Implemented in AbcBranchDefaultDecision.

virtual int AbcBranchDecision::betterBranch | ( | int | thisOne,
|  | int | bestSoFar,
|  | double | changeUp,
|  | int | numberInfeasibilitiesUp,
|  | double | changeDown,
|  | int | numberInfeasibilitiesDown |
| ) |  |  | `[pure virtual]`

Compare two branching objects (current just integer variables).

Return nonzero if branching using `thisOne` is better than branching using `bestSoFar`.

If `bestSoFar` is NULL, the routine should return a nonzero value. This routine is used only after strong branching.

It is now reccommended that bestBranch is used - see below. This has been left for compatibility.

Implemented in AbcBranchDefaultDecision.

virtual int AbcBranchDecision::bestBranch | ( | AbcModel * | model,
|  | int * | 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. This is reccommended version as it can be more sophisticated

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

Assignment is illegal.

Reimplemented in AbcBranchDefaultDecision.

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

- /home/coin/svn-release/Blis-0.93.2/Alps/examples/Abc/AbcBranchBase.h