Public Member Functions | Protected Attributes

CbcClique Class Reference

Branching object for cliques. More...

#include <CbcClique.hpp>

Inheritance diagram for CbcClique:
CbcObject CbcObject

List of all members.

Public Member Functions

 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 Useful constructor (which are integer indices) in set.
 CbcClique (const CbcClique &)
virtual CbcObjectclone () const
 Clone.
CbcCliqueoperator= (const CbcClique &rhs)
virtual ~CbcClique ()
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 CbcBranchingObjectcreateCbcBranch (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.
int cliqueType () const
 Clique type - 0 <=, 1 ==.
virtual void redoSequenceEtc (CbcModel *model, int numberColumns, const int *originalColumns)
 Redoes data when sequence numbers change.
 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 Useful constructor (which are integer indices) in set.
 CbcClique (const CbcClique &)
virtual CbcObjectclone () const
 Clone.
CbcCliqueoperator= (const CbcClique &rhs)
virtual ~CbcClique ()
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 CbcBranchingObjectcreateCbcBranch (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.
int cliqueType () const
 Clique type - 0 <=, 1 ==.
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 = (1-y): 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_. Define a clique class

Definition at line 36 of file CbcClique.hpp.


Constructor & Destructor Documentation

CbcClique::CbcClique (  ) 
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 Useful constructor (which are integer indices) in set.

If type == NULL then as if 1

CbcClique::CbcClique ( const CbcClique  ) 
virtual CbcClique::~CbcClique (  )  [virtual]
CbcClique::CbcClique (  ) 
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 Useful constructor (which are integer indices) in set.

If type == NULL then as if 1

CbcClique::CbcClique ( const CbcClique  ) 
virtual CbcClique::~CbcClique (  )  [virtual]

Member Function Documentation

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

Clone.

Implements CbcObject.

CbcClique& CbcClique::operator= ( const CbcClique rhs  ) 
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 74 of file CbcClique.hpp.

int CbcClique::numberNonSOSMembers (  )  const [inline]

Number of variables with -1 coefficient.

Original comment: 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 83 of file CbcClique.hpp.

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

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

Definition at line 88 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 101 of file CbcClique.hpp.

int CbcClique::cliqueType (  )  const [inline]

Clique type - 0 <=, 1 ==.

Definition at line 107 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.

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

Clone.

Implements CbcObject.

CbcClique& CbcClique::operator= ( const CbcClique rhs  ) 
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 74 of file CbcClique.hpp.

int CbcClique::numberNonSOSMembers (  )  const [inline]

Number of variables with -1 coefficient.

Original comment: 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 83 of file CbcClique.hpp.

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

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

Definition at line 88 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 101 of file CbcClique.hpp.

int CbcClique::cliqueType (  )  const [inline]

Clique type - 0 <=, 1 ==.

Definition at line 107 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 116 of file CbcClique.hpp.

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

Definition at line 119 of file CbcClique.hpp.

int * CbcClique::members_ [protected]

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

Definition at line 122 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 133 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 140 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 148 of file CbcClique.hpp.


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