# BcpsBranchStrategy Class Reference

Branching strategy specifies: (1) how to select a candidate set of branching objects (2) how to compare two branching objects. More...

`#include <BcpsBranchStrategy.h>`

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

List of all members.

## Public Member Functions
| BcpsBranchStrategy ()
| Default Constructor.
| BcpsBranchStrategy (BcpsModel *m)
| Useful Constructor.
virtual | ~BcpsBranchStrategy ()
| Destructor.
virtual BcpsBranchStrategy * | clone () const =0
| Clone a branch strategy.
int | getType ()
| Get type.
void | setType (int t)
| Set type.
void | setModel (BcpsModel *m)
| Set model.
virtual void | clearBest (BcpsModel *model)
| Clear branching strategy environment before starting a new round of selecting the best branch object.
virtual int | createCandBranchObjects (int numPassesLeft, double ub)
| Create a set of candidate branching objects.
virtual int | betterBranchObject (BcpsBranchObject *b, BcpsBranchObject *bestSoFar)=0
| Compare branching object thisOne to bestSoFar.
virtual BcpsBranchObject * | bestBranchObject ()
| Compare branching objects in branchObjects_.
## Protected Attributes
int | type_
| Type of branching strategy.
BcpsModel * | model_
| Pointer to model.
## Private Member Functions
BcpsBranchStrategy & | operator= (const BcpsBranchStrategy &rhs)
| Disable assignment operator.
int | numBranchObjects_
| Following members are used to store candidate branching objects.
BcpsBranchObject ** | branchObjects_
| The set of candiate branching objects.
BcpsBranchObject * | bestBranchObject_
| Following members are used to store information about best branching object found so far.
double | bestChangeUp_
| Change up for best.
int | bestNumberUp_
| Number of infeasibilities for up.
double | bestChangeDown_
| Change down for best.
int | bestNumberDown_
| Number of infeasibilities for down.
int | getNumBranchObjects ()
| Set/get branching objects.
void | getNumBranchObjects (int num)
| Following members are used to store candidate branching objects.
BcpsBranchObject ** | getBranchObjects ()
| Following members are used to store candidate branching objects.
void | setBranchObjects (BcpsBranchObject **obj)
| Following members are used to store candidate branching objects.
BcpsBranchObject * | getBestBranchObject ()
| Following members are used to store candidate branching objects.
void | setBestBranchObject (BcpsBranchObject *ob)
| Following members are used to store candidate branching objects.

## Detailed Description

Branching strategy specifies: (1) how to select a candidate set of branching objects (2) how to compare two branching objects.

Definition at line 39 of file BcpsBranchStrategy.h.

## Constructor & Destructor Documentation

BcpsBranchStrategy::BcpsBranchStrategy | ( |  | ) | `[inline]`

Default Constructor.

Definition at line 83 of file BcpsBranchStrategy.h.

BcpsBranchStrategy::BcpsBranchStrategy | ( | BcpsModel * | m | ) | `[inline]`

Useful Constructor.

Definition at line 95 of file BcpsBranchStrategy.h.

virtual BcpsBranchStrategy::~BcpsBranchStrategy | ( |  | ) | `[inline, virtual]`

Destructor.

Definition at line 107 of file BcpsBranchStrategy.h.

## Member Function Documentation

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

Disable assignment operator.

Reimplemented in BlisBranchStrategyPseudo, BlisBranchStrategyRel, BlisBranchStrategyStrong, BlisBranchStrategyBilevel, BlisBranchStrategyMaxInf, BlisBranchStrategyPseudo, BlisBranchStrategyRel, and BlisBranchStrategyStrong.

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

Clone a branch strategy.

Implemented in BlisBranchStrategyPseudo, BlisBranchStrategyRel, BlisBranchStrategyStrong, BlisBranchStrategyBilevel, BlisBranchStrategyMaxInf, BlisBranchStrategyPseudo, BlisBranchStrategyRel, and BlisBranchStrategyStrong.

int BcpsBranchStrategy::getType | ( |  | ) | `[inline]`

Get type.

Definition at line 118 of file BcpsBranchStrategy.h.

void BcpsBranchStrategy::setType | ( | int | t | ) | `[inline]`

Set type.

Definition at line 121 of file BcpsBranchStrategy.h.

void BcpsBranchStrategy::setModel | ( | BcpsModel * | m | ) | `[inline]`

Set model.

Definition at line 124 of file BcpsBranchStrategy.h.

int BcpsBranchStrategy::getNumBranchObjects | ( |  | ) | `[inline]`

Set/get branching objects.

Definition at line 128 of file BcpsBranchStrategy.h.

void BcpsBranchStrategy::getNumBranchObjects | ( | int | num | ) | `[inline]`

Following members are used to store candidate branching objects.

NOTE: They are required to be cleared before starting another round of selecting. Number of candidate branching objects.

Definition at line 129 of file BcpsBranchStrategy.h.

BcpsBranchObject** BcpsBranchStrategy::getBranchObjects | ( |  | ) | `[inline]`

Following members are used to store candidate branching objects.

NOTE: They are required to be cleared before starting another round of selecting. Number of candidate branching objects.

Definition at line 130 of file BcpsBranchStrategy.h.

void BcpsBranchStrategy::setBranchObjects | ( | BcpsBranchObject ** | obj | ) | `[inline]`

Following members are used to store candidate branching objects.

NOTE: They are required to be cleared before starting another round of selecting. Number of candidate branching objects.

Definition at line 131 of file BcpsBranchStrategy.h.

BcpsBranchObject* BcpsBranchStrategy::getBestBranchObject | ( |  | ) | `[inline]`

Following members are used to store candidate branching objects.

NOTE: They are required to be cleared before starting another round of selecting. Number of candidate branching objects.

Definition at line 132 of file BcpsBranchStrategy.h.

void BcpsBranchStrategy::setBestBranchObject | ( | BcpsBranchObject * | ob | ) | `[inline]`

Following members are used to store candidate branching objects.

NOTE: They are required to be cleared before starting another round of selecting. Number of candidate branching objects.

Definition at line 133 of file BcpsBranchStrategy.h.

virtual void BcpsBranchStrategy::clearBest | ( | BcpsModel * | model | ) | `[inline, virtual]`

Clear branching strategy environment before starting a new round of selecting the best branch object.

Definition at line 138 of file BcpsBranchStrategy.h.

virtual int BcpsBranchStrategy::createCandBranchObjects | ( | int | numPassesLeft,
|  | double | ub |
| ) |  |  | `[inline, virtual]`

Create a set of candidate branching objects.

Reimplemented in BlisBranchStrategyPseudo, BlisBranchStrategyBilevel, BlisBranchStrategyMaxInf, BlisBranchStrategyPseudo, BlisBranchStrategyRel, and BlisBranchStrategyStrong.

Definition at line 147 of file BcpsBranchStrategy.h.

virtual int BcpsBranchStrategy::betterBranchObject | ( | BcpsBranchObject * | b,
|  | BcpsBranchObject * | bestSoFar |
| ) |  |  | `[pure virtual]`

Compare branching object thisOne to bestSoFar.

If thisOne is better than bestObject, return branching direction(1 or -1), otherwise return 0. If bestSorFar is NULL, then always return branching direction(1 or -1).

Implemented in BlisBranchStrategyPseudo, BlisBranchStrategyRel, BlisBranchStrategyStrong, BlisBranchStrategyBilevel, BlisBranchStrategyMaxInf, BlisBranchStrategyPseudo, BlisBranchStrategyRel, and BlisBranchStrategyStrong.

virtual BcpsBranchObject* BcpsBranchStrategy::bestBranchObject | ( |  | ) | `[virtual]`

Compare branching objects in branchObjects_.

Return the index of the best branching object. Also, set branch direction in the best object.

## Member Data Documentation

int BcpsBranchStrategy::type_`[protected]`

Type of branching strategy.

Definition at line 48 of file BcpsBranchStrategy.h.

BcpsModel* BcpsBranchStrategy::model_`[protected]`

Pointer to model.

Definition at line 51 of file BcpsBranchStrategy.h.

int BcpsBranchStrategy::numBranchObjects_`[protected]`

Following members are used to store candidate branching objects.

NOTE: They are required to be cleared before starting another round of selecting. Number of candidate branching objects.

Definition at line 58 of file BcpsBranchStrategy.h.

BcpsBranchObject** BcpsBranchStrategy::branchObjects_`[protected]`

The set of candiate branching objects.

Definition at line 60 of file BcpsBranchStrategy.h.

BcpsBranchObject* BcpsBranchStrategy::bestBranchObject_`[protected]`

Following members are used to store information about best branching object found so far.

NOTE: They are required to be cleared before starting another round of selecting. Best branching object found so far.

Definition at line 69 of file BcpsBranchStrategy.h.

double BcpsBranchStrategy::bestChangeUp_`[protected]`

Change up for best.

Definition at line 71 of file BcpsBranchStrategy.h.

int BcpsBranchStrategy::bestNumberUp_`[protected]`

Number of infeasibilities for up.

Definition at line 73 of file BcpsBranchStrategy.h.

double BcpsBranchStrategy::bestChangeDown_`[protected]`

Change down for best.

Definition at line 75 of file BcpsBranchStrategy.h.

int BcpsBranchStrategy::bestNumberDown_`[protected]`

Number of infeasibilities for down.

Definition at line 77 of file BcpsBranchStrategy.h.

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

- /home/coin/svn-release/Blis-0.94.1/Bcps/src/BcpsBranchStrategy.h