# CbcClique Class Reference

Branching object for cliques. More...

`#include <CbcClique.hpp>`

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

List of all members.

## Public Member Functions
| CbcClique ()
| Default Constructor.
| CbcClique (CbcModel *model, int cliqueType, int numberMembers, const int *which, const char *type, int identifier, int slack=-1)
| Useful constructor (which are integer indices) slack can denote a slack in set.
| CbcClique (const CbcClique &)
| Copy constructor.
virtual CbcObject * | clone () const
| Clone.
CbcClique & | operator= (const CbcClique &rhs)
| Assignment operator.
virtual | ~CbcClique ()
| Destructor.
virtual double | infeasibility (const OsiBranchingInformation *info, int &preferredWay) const
| Infeasibility - large is 0.5.
virtual void | feasibleRegion ()
| This looks at solution and sets bounds to contain solution.
virtual CbcBranchingObject * | createCbcBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
| Creates a branching object.
int | numberMembers () const
| Number of members.
int | numberNonSOSMembers () const
| Number of variables with -1 coefficient.
const int * | members () const
| Members (indices in range 0 ... numberIntegers_-1).
char | type (int index) const
| Type of each member, i.e., which way is strong.
int | cliqueType () const
| Clique type: 0 is <=, 1 is ==.
virtual void | redoSequenceEtc (CbcModel *model, int numberColumns, const int *originalColumns)
| Redoes data when sequence numbers change.
## Protected Attributes
int | numberMembers_
| data Number of members
int | numberNonSOSMembers_
| Number of Non SOS members i.e. fixing to zero is strong.
int * | members_
| Members (indices in range 0 ... numberIntegers_-1).
char * | type_
| Strong value for each member.
int | cliqueType_
| Clique type.
int | slack_
| Slack variable for the clique.

## Detailed Description

Branching object for cliques.

A clique is defined to be a set of binary variables where fixing any one variable to its `strong' value fixes all other variables. An example is the most common SOS1 construction: a set of binary variables x_j s.t. SUM{j} x_j = 1. Setting any one variable to 1 forces all other variables to 0. (See comments for CbcSOS below.)

Other configurations are possible, however: Consider x1-x2+x3 <= 0. Setting x1 (x3) to 1 forces x2 to 1 and x3 (x1) to 0. Setting x2 to 0 forces x1 and x3 to 0.

The proper point of view to take when interpreting CbcClique is `generalisation of SOS1 on binary variables.' To get into the proper frame of mind, here's an example.

Consider the following sequence, where x_j = (1-y_j):

         x1 + x2 + x3 <=  1		all strong at 1
         x1 - y2 + x3 <=  0		y2 strong at 0; x1, x3 strong at 1
        -y1 - y2 + x3 <= -1		y1, y2 strong at 0, x3 strong at 1
        -y1 - y2 - y3 <= -2		all strong at 0

The first line is a standard SOS1 on binary variables.

Variables with +1 coefficients are `SOS-style' and variables with -1 coefficients are `non-SOS-style'. So numberNonSOSMembers_ simply tells you how many variables have -1 coefficients. The implicit rhs for a clique is 1-numberNonSOSMembers_.

Definition at line 41 of file CbcClique.hpp.

## Constructor & Destructor Documentation

CbcClique::CbcClique | ( |  | ) |

Default Constructor.

CbcClique::CbcClique | ( | CbcModel * | model,
|  | int | cliqueType,
|  | int | numberMembers,
|  | const int * | which,
|  | const char * | type,
|  | int | identifier,
|  | int | slack = `-1` |
| ) |  |  |

Useful constructor (which are integer indices) slack can denote a slack in set.

If type == NULL then as if 1

CbcClique::CbcClique | ( | const CbcClique & |  | ) |

Copy constructor.

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

Destructor.

## Member Function Documentation

virtual CbcObject* CbcClique::clone | ( |  | ) | const`[virtual]`

Clone.

Implements CbcObject.

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

Assignment operator.

Reimplemented from CbcObject.

virtual double CbcClique::infeasibility | ( | const OsiBranchingInformation * | info,
|  | int & | preferredWay |
| ) |  |  | const`[virtual]`

Infeasibility - large is 0.5.

Reimplemented from CbcObject.

virtual void CbcClique::feasibleRegion | ( |  | ) | `[virtual]`

This looks at solution and sets bounds to contain solution.

Implements CbcObject.

virtual CbcBranchingObject* CbcClique::createCbcBranch | ( | OsiSolverInterface * | solver,
|  | const OsiBranchingInformation * | info,
|  | int | way |
| ) |  |  | `[virtual]`

Creates a branching object.

Reimplemented from CbcObject.

int CbcClique::numberMembers | ( |  | ) | const`[inline]`

Number of members.

Definition at line 78 of file CbcClique.hpp.

int CbcClique::numberNonSOSMembers | ( |  | ) | const`[inline]`

Number of variables with -1 coefficient.

Number of non-SOS members, i.e., fixing to zero is strong. See comments at head of class, and comments for type_.

Definition at line 86 of file CbcClique.hpp.

const int* CbcClique::members | ( |  | ) | const`[inline]`

Members (indices in range 0 ... numberIntegers_-1).

Definition at line 91 of file CbcClique.hpp.

char CbcClique::type | ( | int | index | ) | const`[inline]`

Type of each member, i.e., which way is strong.

This also specifies whether a variable has a +1 or -1 coefficient.

- 0 => -1 coefficient, 0 is strong value
- 1 => +1 coefficient, 1 is strong value If unspecified, all coefficients are assumed to be positive.

Indexed as 0 .. numberMembers_-1

Definition at line 104 of file CbcClique.hpp.

int CbcClique::cliqueType | ( |  | ) | const`[inline]`

Clique type: 0 is <=, 1 is ==.

Definition at line 110 of file CbcClique.hpp.

virtual void CbcClique::redoSequenceEtc | ( | CbcModel * | model,
|  | int | numberColumns,
|  | const int * | originalColumns |
| ) |  |  | `[virtual]`

Redoes data when sequence numbers change.

Reimplemented from CbcObject.

## Member Data Documentation

int CbcClique::numberMembers_`[protected]`

data Number of members

Definition at line 119 of file CbcClique.hpp.

int CbcClique::numberNonSOSMembers_`[protected]`

Number of Non SOS members i.e. fixing to zero is strong.

Definition at line 122 of file CbcClique.hpp.

int* CbcClique::members_`[protected]`

Members (indices in range 0 ... numberIntegers_-1).

Definition at line 125 of file CbcClique.hpp.

char* CbcClique::type_`[protected]`

Strong value for each member.

This also specifies whether a variable has a +1 or -1 coefficient.

- 0 => -1 coefficient, 0 is strong value
- 1 => +1 coefficient, 1 is strong value If unspecified, all coefficients are assumed to be positive.

Indexed as 0 .. numberMembers_-1

Definition at line 136 of file CbcClique.hpp.

int CbcClique::cliqueType_`[protected]`

Clique type.

0 defines a <= relation, 1 an equality. The assumed value of the rhs is numberNonSOSMembers_+1. (See comments for the class.)

Definition at line 143 of file CbcClique.hpp.

int CbcClique::slack_`[protected]`

Slack variable for the clique.

Identifies the slack variable for the clique (typically added to convert a <= relation to an equality). Value is sequence number within clique menbers.

Definition at line 151 of file CbcClique.hpp.

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

- /home/coin/svn-release/Cbc-2.7.8/Cbc/src/CbcClique.hpp

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines