Branching object for cliques. More...
#include <CbcClique.hpp>
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 | |
| CbcClique (const CbcClique &) | |
| virtual CbcObject * | clone () const |
| Clone. | |
| CbcClique & | operator= (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 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. | |
| 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 | |
| CbcClique (const CbcClique &) | |
| virtual CbcObject * | clone () const |
| Clone. | |
| CbcClique & | operator= (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 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. | |
| int | cliqueType () const |
| Clique type - 0 <=, 1 ==. | |
| virtual void | redoSequenceEtc (CbcModel *model, int numberColumns, const int *originalColumns) |
| Redoes data when sequence numbers change. | |
Public Member Functions inherited from CbcObject | |
| CbcObject () | |
| CbcObject (CbcModel *model) | |
| CbcObject (const CbcObject &) | |
| CbcObject & | operator= (const CbcObject &rhs) |
| virtual | ~CbcObject () |
| Destructor. | |
| virtual double | infeasibility (int &) const |
| virtual double | feasibleRegion (OsiSolverInterface *solver, const OsiBranchingInformation *info) const |
| Dummy one for compatibility. | |
| virtual double | feasibleRegion (OsiSolverInterface *solver) const |
| For the variable(s) referenced by the object, look at the current solution and set bounds to match the solution. | |
| virtual CbcBranchingObject * | createBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) |
| virtual OsiBranchingObject * | createOsiBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const |
| Create an Osibranching object and indicate which way to branch first. | |
| virtual OsiSolverBranch * | solverBranch () const |
| Create an OsiSolverBranch object. | |
| virtual CbcBranchingObject * | preferredNewFeasible () const |
| Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a good direction. | |
| virtual CbcBranchingObject * | notPreferredNewFeasible () const |
| Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a bad direction. | |
| virtual void | resetBounds (const OsiSolverInterface *) |
| Reset variable bounds to their original values. | |
| virtual void | floorCeiling (double &floorValue, double &ceilingValue, double value, double tolerance) const |
| Returns floor and ceiling i.e. | |
| virtual CbcObjectUpdateData | createUpdateInformation (const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject) |
| Pass in information on branch just done and create CbcObjectUpdateData instance. | |
| virtual void | updateInformation (const CbcObjectUpdateData &) |
| Update object by CbcObjectUpdateData. | |
| int | id () const |
| Identifier (normally column number in matrix) | |
| void | setId (int value) |
| Set identifier (normally column number in matrix) but 1000000000 to 1100000000 means optional branching object i.e. | |
| bool | optionalObject () const |
| Return true if optional branching object i.e. | |
| int | position () const |
| Get position in object_ list. | |
| void | setPosition (int position) |
| Set position in object_ list. | |
| void | setModel (CbcModel *model) |
| update model | |
| CbcModel * | model () const |
| Return model. | |
| int | preferredWay () const |
| If -1 down always chosen first, +1 up always, 0 normal. | |
| void | setPreferredWay (int value) |
| Set -1 down always chosen first, +1 up always, 0 normal. | |
| CbcObject () | |
| CbcObject (CbcModel *model) | |
| CbcObject (const CbcObject &) | |
| CbcObject & | operator= (const CbcObject &rhs) |
| virtual | ~CbcObject () |
| Destructor. | |
| virtual double | infeasibility (int &) const |
| virtual double | feasibleRegion (OsiSolverInterface *solver, const OsiBranchingInformation *info) const |
| Dummy one for compatibility. | |
| virtual double | feasibleRegion (OsiSolverInterface *solver) const |
| For the variable(s) referenced by the object, look at the current solution and set bounds to match the solution. | |
| virtual CbcBranchingObject * | createBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) |
| virtual OsiBranchingObject * | createOsiBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const |
| Create an Osibranching object and indicate which way to branch first. | |
| virtual OsiSolverBranch * | solverBranch () const |
| Create an OsiSolverBranch object. | |
| virtual CbcBranchingObject * | preferredNewFeasible () const |
| Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a good direction. | |
| virtual CbcBranchingObject * | notPreferredNewFeasible () const |
| Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a bad direction. | |
| virtual void | resetBounds (const OsiSolverInterface *) |
| Reset variable bounds to their original values. | |
| virtual void | floorCeiling (double &floorValue, double &ceilingValue, double value, double tolerance) const |
| Returns floor and ceiling i.e. | |
| virtual CbcObjectUpdateData | createUpdateInformation (const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject) |
| Pass in information on branch just done and create CbcObjectUpdateData instance. | |
| virtual void | updateInformation (const CbcObjectUpdateData &) |
| Update object by CbcObjectUpdateData. | |
| int | id () const |
| Identifier (normally column number in matrix) | |
| void | setId (int value) |
| Set identifier (normally column number in matrix) but 1000000000 to 1100000000 means optional branching object i.e. | |
| bool | optionalObject () const |
| Return true if optional branching object i.e. | |
| int | position () const |
| Get position in object_ list. | |
| void | setPosition (int position) |
| Set position in object_ list. | |
| void | setModel (CbcModel *model) |
| update model | |
| CbcModel * | model () const |
| Return model. | |
| int | preferredWay () const |
| If -1 down always chosen first, +1 up always, 0 normal. | |
| void | setPreferredWay (int value) |
| Set -1 down always chosen first, +1 up always, 0 normal. | |
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. | |
Protected Attributes inherited from CbcObject | |
| CbcModel * | model_ |
| data | |
| int | id_ |
| Identifier (normally column number in matrix) | |
| int | position_ |
| Position in object list. | |
| int | preferredWay_ |
| If -1 down always chosen first, +1 up always, 0 normal. | |
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.
| 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 | ( | ) |
| 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 |
|
virtual |
Infeasibility - large is 0.5.
Reimplemented from CbcObject.
|
virtual |
This looks at solution and sets bounds to contain solution.
Implements CbcObject.
|
virtual |
Creates a branching object.
Reimplemented from CbcObject.
|
inline |
Number of members.
Definition at line 74 of file CbcClique.hpp.
|
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.
|
inline |
Members (indices in range 0 ... numberIntegers_-1)
Definition at line 88 of file CbcClique.hpp.
|
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.
|
inline |
Clique type - 0 <=, 1 ==.
Definition at line 107 of file CbcClique.hpp.
|
virtual |
Redoes data when sequence numbers change.
Reimplemented from CbcObject.
|
virtual |
Infeasibility - large is 0.5.
Reimplemented from CbcObject.
|
virtual |
This looks at solution and sets bounds to contain solution.
Implements CbcObject.
|
virtual |
Creates a branching object.
Reimplemented from CbcObject.
|
inline |
Number of members.
Definition at line 74 of file CbcClique.hpp.
|
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.
|
inline |
Members (indices in range 0 ... numberIntegers_-1)
Definition at line 88 of file CbcClique.hpp.
|
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.
|
inline |
Clique type - 0 <=, 1 ==.
Definition at line 107 of file CbcClique.hpp.
|
virtual |
Redoes data when sequence numbers change.
Reimplemented from CbcObject.
|
protected |
data Number of members
Definition at line 116 of file CbcClique.hpp.
|
protected |
Number of Non SOS members i.e. fixing to zero is strong.
Definition at line 119 of file CbcClique.hpp.
|
protected |
Members (indices in range 0 ... numberIntegers_-1)
Definition at line 122 of file CbcClique.hpp.
|
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.
|
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.
|
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.
1.8.1.1