# BcpsBranchObject Class Reference

BcpsBranchObject contains the member data required when choosing branching entities and excuting actual branching. More...

`#include <BcpsBranchObject.h>`

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

List of all members.

## Public Member Functions
| BcpsBranchObject ()
| Default Constructor.
| BcpsBranchObject (BcpsModel *model)
| Useful constructor.
| BcpsBranchObject (BcpsModel *model, int objectIndex, int direction, double value)
| Useful constructor.
| BcpsBranchObject (BcpsModel *model, int objectIndex, int upScore, double downScore, int direction, double value)
| Useful constructor.
| BcpsBranchObject (const BcpsBranchObject &)
| Copy constructor.
virtual | ~BcpsBranchObject ()
| Destructor.
BcpsBranchObject & | operator= (const BcpsBranchObject &rhs)
| Assignment operator.
virtual BcpsBranchObject * | clone () const =0
| Clone a object.
int | getType ()
| Get type.
void | setType (int t)
| Set type.
virtual int | numBranches () const
| The number of branch arms created for this branch object.
virtual int | numBranchesLeft () const
| The number of branch arms left to be evaluated.
virtual double | branch (bool normalBranch=false)=0
| Perform branching as specified by the branching object.
virtual void | print (bool normalBranch)
| Print information about this branching object.
virtual bool | boundBranch () const
| Return true if branching should fix object bounds.
int | getObjectIndex () const
| Object objectIndex.
void | setObjectIndex (int ind)
| Set object objectIndex.
double | getUpScore () const
| Get integer score.
void | setUpScore (double score)
| Set integer score.
double | getDownScore () const
| Get double score.
void | setDownScore (double score)
| Get double score.
int | getDirection () const
| Returns a code indicating the active arm of the branching object.
void | setDirection (int direction)
| Set the direction of the branching object.
double | getValue () const
| Return object branching value.
BcpsModel * | model () const
| Return model.
virtual AlpsReturnStatus | encode (AlpsEncoded *encoded) const
| Pack to an encoded object.
virtual AlpsReturnStatus | decode (AlpsEncoded &encoded)
| Unpack a branching object from an encoded object.
## Protected Member Functions
AlpsReturnStatus | encodeBcps (AlpsEncoded *encoded) const
| Pack Bcps portion to an encoded object.
AlpsReturnStatus | decodeBcps (AlpsEncoded &encoded)
| Unpack Bcps portion from an encoded object.
## Protected Attributes
int | type_
| Type of branching.
BcpsModel * | model_
| The model that owns this branch object.
int | objectIndex_
| Branch object index.
double | upScore_
| Quality/Goodness of this object.
double | downScore_
| The score of branching down.
int | direction_
| Information required to do branching.
double | value_
| Current branching value.
int | numBranchesLeft_
| Number of arms remaining to be evaluated.

## Detailed Description

BcpsBranchObject contains the member data required when choosing branching entities and excuting actual branching.

It also has the member funtions to do branching by adjusting bounds, etc. in solver. Branching objects can be simple integer variables or more complicated objects like SOS.

Definition at line 47 of file BcpsBranchObject.h.

## Constructor & Destructor Documentation

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

Default Constructor.

Definition at line 91 of file BcpsBranchObject.h.

BcpsBranchObject::BcpsBranchObject | ( | BcpsModel * | model | ) | `[inline]`

Useful constructor.

Definition at line 104 of file BcpsBranchObject.h.

BcpsBranchObject::BcpsBranchObject | ( | BcpsModel * | model,
|  | int | objectIndex,
|  | int | direction,
|  | double | value |
| ) |  |  | `[inline]`

Useful constructor.

Definition at line 117 of file BcpsBranchObject.h.

BcpsBranchObject::BcpsBranchObject | ( | BcpsModel * | model,
|  | int | objectIndex,
|  | int | upScore,
|  | double | downScore,
|  | int | direction,
|  | double | value |
| ) |  |  | `[inline]`

Useful constructor.

Definition at line 133 of file BcpsBranchObject.h.

BcpsBranchObject::BcpsBranchObject | ( | const BcpsBranchObject & |  | ) |

Copy constructor.

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

Destructor.

Definition at line 154 of file BcpsBranchObject.h.

## Member Function Documentation

BcpsBranchObject& BcpsBranchObject::operator= | ( | const BcpsBranchObject & | rhs | ) |

Assignment operator.

Reimplemented in BlisBranchObjectInt, BlisBranchObjectBilevel, and BlisBranchObjectInt.

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

Clone a object.

Implemented in BlisBranchObjectInt, BlisBranchObjectBilevel, and BlisBranchObjectInt.

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

Get type.

Definition at line 163 of file BcpsBranchObject.h.

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

Set type.

Definition at line 166 of file BcpsBranchObject.h.

virtual int BcpsBranchObject::numBranches | ( |  | ) | const`[inline, virtual]`

The number of branch arms created for this branch object.

Definition at line 169 of file BcpsBranchObject.h.

virtual int BcpsBranchObject::numBranchesLeft | ( |  | ) | const`[inline, virtual]`

The number of branch arms left to be evaluated.

Definition at line 172 of file BcpsBranchObject.h.

virtual double BcpsBranchObject::branch | ( | bool | normalBranch = `false` | ) | `[pure virtual]`

Perform branching as specified by the branching object.

Also, update the status of this branching object.

Implemented in BlisBranchObjectInt, BlisBranchObjectBilevel, and BlisBranchObjectInt.

virtual void BcpsBranchObject::print | ( | bool | normalBranch | ) | `[inline, virtual]`

Print information about this branching object.

Reimplemented in BlisBranchObjectInt, BlisBranchObjectBilevel, and BlisBranchObjectInt.

Definition at line 180 of file BcpsBranchObject.h.

virtual bool BcpsBranchObject::boundBranch | ( |  | ) | const`[inline, virtual]`

Return true if branching should fix object bounds.

Definition at line 183 of file BcpsBranchObject.h.

int BcpsBranchObject::getObjectIndex | ( |  | ) | const`[inline]`

Object objectIndex.

Definition at line 186 of file BcpsBranchObject.h.

void BcpsBranchObject::setObjectIndex | ( | int | ind | ) | `[inline]`

Set object objectIndex.

Definition at line 189 of file BcpsBranchObject.h.

double BcpsBranchObject::getUpScore | ( |  | ) | const`[inline]`

Get integer score.

Definition at line 192 of file BcpsBranchObject.h.

void BcpsBranchObject::setUpScore | ( | double | score | ) | `[inline]`

Set integer score.

Definition at line 195 of file BcpsBranchObject.h.

double BcpsBranchObject::getDownScore | ( |  | ) | const`[inline]`

Get double score.

Definition at line 198 of file BcpsBranchObject.h.

void BcpsBranchObject::setDownScore | ( | double | score | ) | `[inline]`

Get double score.

Definition at line 201 of file BcpsBranchObject.h.

int BcpsBranchObject::getDirection | ( |  | ) | const`[inline]`

Returns a code indicating the active arm of the branching object.

Definition at line 204 of file BcpsBranchObject.h.

void BcpsBranchObject::setDirection | ( | int | direction | ) | `[inline]`

Set the direction of the branching object.

Definition at line 207 of file BcpsBranchObject.h.

double BcpsBranchObject::getValue | ( |  | ) | const`[inline]`

Return object branching value.

Definition at line 210 of file BcpsBranchObject.h.

BcpsModel* BcpsBranchObject::model | ( |  | ) | const`[inline]`

Return model.

Definition at line 213 of file BcpsBranchObject.h.

AlpsReturnStatus BcpsBranchObject::encodeBcps | ( | AlpsEncoded * | encoded | ) | const`[inline, protected]`

Pack Bcps portion to an encoded object.

Definition at line 218 of file BcpsBranchObject.h.

AlpsReturnStatus BcpsBranchObject::decodeBcps | ( | AlpsEncoded & | encoded | ) | `[inline, protected]`

Unpack Bcps portion from an encoded object.

Definition at line 232 of file BcpsBranchObject.h.

virtual AlpsReturnStatus BcpsBranchObject::encode | ( | AlpsEncoded * | encoded | ) | const`[inline, virtual]`

Pack to an encoded object.

Reimplemented in BlisBranchObjectInt, BlisBranchObjectBilevel, and BlisBranchObjectInt.

Definition at line 248 of file BcpsBranchObject.h.

virtual AlpsReturnStatus BcpsBranchObject::decode | ( | AlpsEncoded & | encoded | ) | `[inline, virtual]`

Unpack a branching object from an encoded object.

Reimplemented in BlisBranchObjectInt, BlisBranchObjectBilevel, and BlisBranchObjectInt.

Definition at line 256 of file BcpsBranchObject.h.

## Member Data Documentation

int BcpsBranchObject::type_`[protected]`

Type of branching.

Definition at line 52 of file BcpsBranchObject.h.

BcpsModel* BcpsBranchObject::model_`[protected]`

The model that owns this branch object.

Definition at line 55 of file BcpsBranchObject.h.

int BcpsBranchObject::objectIndex_`[protected]`

Branch object index.

The index is not the same as variable index. For integer branching, the index refers to the position in the integer object array/vector.

Definition at line 60 of file BcpsBranchObject.h.

double BcpsBranchObject::upScore_`[protected]`

Quality/Goodness of this object.

They are set when creating candiate branching entities, and used when comparing two branching enities. Derived class can add more metrics. The score of branching up. Used for binary branching only.

Definition at line 69 of file BcpsBranchObject.h.

double BcpsBranchObject::downScore_`[protected]`

The score of branching down.

Used for binary branching only.

Definition at line 72 of file BcpsBranchObject.h.

int BcpsBranchObject::direction_`[protected]`

Information required to do branching.

Used for binary branching only. The direction of the active branch. Down is -1, up is 1.

Definition at line 78 of file BcpsBranchObject.h.

double BcpsBranchObject::value_`[protected]`

Current branching value.

For integer, it can be fractional solution value.

Definition at line 82 of file BcpsBranchObject.h.

int BcpsBranchObject::numBranchesLeft_`[protected]`

Number of arms remaining to be evaluated.

Definition at line 85 of file BcpsBranchObject.h.

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

- /home/coin/svn-release/Blis-0.93.2/Bcps/src/BcpsBranchObject.h