Cbc
trunk
|
Branching object for Special Ordered Sets of type 1 and 2. More...
#include <CbcSOS.hpp>
Public Member Functions | |
CbcSOS () | |
CbcSOS (CbcModel *model, int numberMembers, const int *which, const double *weights, int identifier, int type=1) | |
Constructor with SOS type and member information. | |
CbcSOS (const CbcSOS &) | |
virtual CbcObject * | clone () const |
Clone. | |
CbcSOS & | operator= (const CbcSOS &rhs) |
virtual | ~CbcSOS () |
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. | |
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 &data) |
Update object by CbcObjectUpdateData. | |
virtual OsiSolverBranch * | solverBranch () const |
Create an OsiSolverBranch object. | |
virtual void | redoSequenceEtc (CbcModel *model, int numberColumns, const int *originalColumns) |
Redoes data when sequence numbers change. | |
OsiSOS * | osiObject (const OsiSolverInterface *solver) const |
Construct an OsiSOS object. | |
int | numberMembers () const |
Number of members. | |
const int * | members () const |
Members (indices in range 0 ... numberColumns-1) | |
int | sosType () const |
SOS type. | |
int | numberTimesDown () const |
Down number times. | |
int | numberTimesUp () const |
Up number times. | |
const double * | weights () const |
Array of weights. | |
void | setNumberMembers (int n) |
Set number of members. | |
int * | mutableMembers () const |
Members (indices in range 0 ... numberColumns-1) | |
double * | mutableWeights () const |
Array of weights. | |
virtual bool | canDoHeuristics () const |
Return true if object can take part in normal heuristics. | |
void | setIntegerValued (bool yesNo) |
Set whether set is integer valued or not. |
Branching object for Special Ordered Sets of type 1 and 2.
SOS1 are an ordered set of variables where at most one variable can be non-zero. SOS1 are commonly defined with binary variables (interpreted as selection between alternatives) but this is not necessary. An SOS1 with all binary variables is a special case of a clique (setting any one variable to 1 forces all others to 0).
In theory, the implementation makes no assumptions about integrality in Type 1 sets. In practice, there are places where the code seems to have been written with a binary SOS mindset. Current development of SOS branching objects is proceeding in OsiSOS.
SOS2 are an ordered set of variables in which at most two consecutive variables can be non-zero and must sum to 1 (interpreted as interpolation between two discrete values). By definition the variables are non-integer.
Definition at line 29 of file CbcSOS.hpp.
CbcSOS::CbcSOS | ( | ) |
CbcSOS::CbcSOS | ( | CbcModel * | model, |
int | numberMembers, | ||
const int * | which, | ||
const double * | weights, | ||
int | identifier, | ||
int | type = 1 |
||
) |
Constructor with SOS type and member information.
Type specifies SOS 1 or 2. Identifier is an arbitrary value.
Which should be an array of variable indices with numberMembers entries. Weights can be used to assign arbitrary weights to variables, in the order they are specified in which. If no weights are provided, a default array of 0, 1, 2, ... is generated.
CbcSOS::CbcSOS | ( | const CbcSOS & | ) |
virtual CbcSOS::~CbcSOS | ( | ) | [virtual] |
virtual CbcObject* CbcSOS::clone | ( | ) | const [virtual] |
Clone.
Implements CbcObject.
virtual double CbcSOS::infeasibility | ( | const OsiBranchingInformation * | info, |
int & | preferredWay | ||
) | const [virtual] |
Infeasibility - large is 0.5.
Reimplemented from CbcObject.
virtual void CbcSOS::feasibleRegion | ( | ) | [virtual] |
This looks at solution and sets bounds to contain solution.
Implements CbcObject.
virtual CbcBranchingObject* CbcSOS::createCbcBranch | ( | OsiSolverInterface * | solver, |
const OsiBranchingInformation * | info, | ||
int | way | ||
) | [virtual] |
Creates a branching object.
Reimplemented from CbcObject.
virtual CbcObjectUpdateData CbcSOS::createUpdateInformation | ( | const OsiSolverInterface * | solver, |
const CbcNode * | node, | ||
const CbcBranchingObject * | branchingObject | ||
) | [virtual] |
Pass in information on branch just done and create CbcObjectUpdateData instance.
If object does not need data then backward pointer will be NULL. Assumes can get information from solver
Reimplemented from CbcObject.
virtual void CbcSOS::updateInformation | ( | const CbcObjectUpdateData & | data | ) | [virtual] |
Update object by CbcObjectUpdateData.
Reimplemented from CbcObject.
virtual OsiSolverBranch* CbcSOS::solverBranch | ( | ) | const [virtual] |
Create an OsiSolverBranch object.
This returns NULL if branch not represented by bound changes
Reimplemented from CbcObject.
virtual void CbcSOS::redoSequenceEtc | ( | CbcModel * | model, |
int | numberColumns, | ||
const int * | originalColumns | ||
) | [virtual] |
Redoes data when sequence numbers change.
Reimplemented from CbcObject.
OsiSOS* CbcSOS::osiObject | ( | const OsiSolverInterface * | solver | ) | const |
Construct an OsiSOS object.
int CbcSOS::numberMembers | ( | ) | const [inline] |
Number of members.
Definition at line 95 of file CbcSOS.hpp.
const int* CbcSOS::members | ( | ) | const [inline] |
Members (indices in range 0 ... numberColumns-1)
Definition at line 100 of file CbcSOS.hpp.
int CbcSOS::sosType | ( | ) | const [inline] |
SOS type.
Definition at line 105 of file CbcSOS.hpp.
int CbcSOS::numberTimesDown | ( | ) | const [inline] |
Down number times.
Definition at line 109 of file CbcSOS.hpp.
int CbcSOS::numberTimesUp | ( | ) | const [inline] |
Up number times.
Definition at line 113 of file CbcSOS.hpp.
const double* CbcSOS::weights | ( | ) | const [inline] |
Array of weights.
Definition at line 118 of file CbcSOS.hpp.
void CbcSOS::setNumberMembers | ( | int | n | ) | [inline] |
Set number of members.
Definition at line 123 of file CbcSOS.hpp.
int* CbcSOS::mutableMembers | ( | ) | const [inline] |
Members (indices in range 0 ... numberColumns-1)
Definition at line 128 of file CbcSOS.hpp.
double* CbcSOS::mutableWeights | ( | ) | const [inline] |
Array of weights.
Definition at line 133 of file CbcSOS.hpp.
virtual bool CbcSOS::canDoHeuristics | ( | ) | const [inline, virtual] |
Return true if object can take part in normal heuristics.
Definition at line 139 of file CbcSOS.hpp.
void CbcSOS::setIntegerValued | ( | bool | yesNo | ) | [inline] |
Set whether set is integer valued or not.
Definition at line 143 of file CbcSOS.hpp.