CbcClique Class Reference

Branching object for cliques. More...

#include <CbcClique.hpp>

Inheritance diagram for CbcClique:
Inheritance graph
[legend]
Collaboration diagram for CbcClique:
Collaboration graph
[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 CbcObjectclone () const
 Clone.
CbcCliqueoperator= (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 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., 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.

References numberMembers_.

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.

References numberNonSOSMembers_.

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

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

Definition at line 91 of file CbcClique.hpp.

References members_.

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.

References type_.

int CbcClique::cliqueType (  )  const [inline]

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

Definition at line 110 of file CbcClique.hpp.

References cliqueType_.

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.

Referenced by numberMembers().

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

Definition at line 122 of file CbcClique.hpp.

Referenced by numberNonSOSMembers().

int* CbcClique::members_ [protected]

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

Definition at line 125 of file CbcClique.hpp.

Referenced by members().

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.

Referenced by type().

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.

Referenced by cliqueType().

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:

Generated on 3 Jun 2015 for Dip-All by  doxygen 1.6.1