Cbc  2.9.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | List of all members
CbcSOS Class Reference

Branching object for Special Ordered Sets of type 1 and 2. More...

#include <CbcSOS.hpp>

+ Inheritance diagram for CbcSOS:
+ Collaboration diagram for CbcSOS:

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. More...
 
 CbcSOS (const CbcSOS &)
 
virtual CbcObjectclone () const
 Clone. More...
 
CbcSOSoperator= (const CbcSOS &rhs)
 
virtual ~CbcSOS ()
 
virtual double infeasibility (const OsiBranchingInformation *info, int &preferredWay) const
 Infeasibility - large is 0.5. More...
 
virtual void feasibleRegion ()
 This looks at solution and sets bounds to contain solution. More...
 
virtual CbcBranchingObjectcreateCbcBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way)
 Creates a branching object. More...
 
virtual CbcObjectUpdateData createUpdateInformation (const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject)
 Pass in information on branch just done and create CbcObjectUpdateData instance. More...
 
virtual void updateInformation (const CbcObjectUpdateData &data)
 Update object by CbcObjectUpdateData. More...
 
virtual OsiSolverBranchsolverBranch () const
 Create an OsiSolverBranch object. More...
 
virtual void redoSequenceEtc (CbcModel *model, int numberColumns, const int *originalColumns)
 Redoes data when sequence numbers change. More...
 
OsiSOSosiObject (const OsiSolverInterface *solver) const
 Construct an OsiSOS object. More...
 
int numberMembers () const
 Number of members. More...
 
const int * members () const
 Members (indices in range 0 ... numberColumns-1) More...
 
int sosType () const
 SOS type. More...
 
int numberTimesDown () const
 Down number times. More...
 
int numberTimesUp () const
 Up number times. More...
 
const double * weights () const
 Array of weights. More...
 
void setNumberMembers (int n)
 Set number of members. More...
 
int * mutableMembers () const
 Members (indices in range 0 ... numberColumns-1) More...
 
double * mutableWeights () const
 Array of weights. More...
 
virtual bool canDoHeuristics () const
 Return true if object can take part in normal heuristics. More...
 
void setIntegerValued (bool yesNo)
 Set whether set is integer valued or not. More...
 
- Public Member Functions inherited from CbcObject
 CbcObject ()
 
 CbcObject (CbcModel *model)
 
 CbcObject (const CbcObject &)
 
CbcObjectoperator= (const CbcObject &rhs)
 
virtual ~CbcObject ()
 Destructor. More...
 
virtual double infeasibility (int &) const
 
virtual double feasibleRegion (OsiSolverInterface *solver, const OsiBranchingInformation *info) const
 Dummy one for compatibility. More...
 
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. More...
 
virtual OsiBranchingObjectcreateBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) const
 Create a branching object and indicate which way to branch first. More...
 
virtual OsiBranchingObjectcreateOsiBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const
 Create an Osibranching object and indicate which way to branch first. More...
 
virtual CbcBranchingObjectpreferredNewFeasible () const
 Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a good direction. More...
 
virtual CbcBranchingObjectnotPreferredNewFeasible () const
 Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a bad direction. More...
 
virtual void resetBounds (const OsiSolverInterface *)
 Reset variable bounds to their original values. More...
 
virtual void floorCeiling (double &floorValue, double &ceilingValue, double value, double tolerance) const
 Returns floor and ceiling i.e. More...
 
int id () const
 Identifier (normally column number in matrix) More...
 
void setId (int value)
 Set identifier (normally column number in matrix) but 1000000000 to 1100000000 means optional branching object i.e. More...
 
bool optionalObject () const
 Return true if optional branching object i.e. More...
 
int position () const
 Get position in object_ list. More...
 
void setPosition (int position)
 Set position in object_ list. More...
 
void setModel (CbcModel *model)
 update model More...
 
CbcModelmodel () const
 Return model. More...
 
int preferredWay () const
 If -1 down always chosen first, +1 up always, 0 normal. More...
 
void setPreferredWay (int value)
 Set -1 down always chosen first, +1 up always, 0 normal. More...
 
virtual void initializeForBranching (CbcModel *)
 Initialize for branching. More...
 
- Public Member Functions inherited from OsiObject
 OsiObject ()
 Default Constructor. More...
 
 OsiObject (const OsiObject &)
 Copy constructor. More...
 
OsiObjectoperator= (const OsiObject &rhs)
 Assignment operator. More...
 
virtual ~OsiObject ()
 Destructor. More...
 
double infeasibility (const OsiSolverInterface *solver, int &whichWay) const
 Infeasibility of the object. More...
 
virtual double checkInfeasibility (const OsiBranchingInformation *info) const
 
virtual bool canMoveToNearest () const
 Return true if object can take part in move to nearest heuristic. More...
 
virtual int columnNumber () const
 Column number if single column object -1 otherwise, Used by heuristics. More...
 
int priority () const
 Return Priority - note 1 is highest priority. More...
 
void setPriority (int priority)
 Set priority. More...
 
virtual bool boundBranch () const
 Return true if branch should only bound variables. More...
 
virtual bool canHandleShadowPrices () const
 Return true if knows how to deal with Pseudo Shadow Prices. More...
 
int numberWays () const
 Return maximum number of ways branch may have. More...
 
void setNumberWays (int numberWays)
 Set maximum number of ways branch may have. More...
 
void setWhichWay (int way)
 Return preferred way to branch. More...
 
int whichWay () const
 Return current preferred way to branch. More...
 
double infeasibility () const
 Return infeasibility. More...
 
virtual double upEstimate () const
 Return "up" estimate (default 1.0e-5) More...
 
virtual double downEstimate () const
 Return "down" estimate (default 1.0e-5) More...
 
virtual void resetSequenceEtc (int, const int *)
 Change column numbers after preprocessing. More...
 
virtual void updateBefore (const OsiObject *)
 Updates stuff like pseudocosts before threads. More...
 
virtual void updateAfter (const OsiObject *, const OsiObject *)
 Updates stuff like pseudocosts after threads finished. More...
 

Private Attributes

int * members_
 data More...
 
double * weights_
 Weights for individual members. More...
 
double shadowEstimateDown_
 Current pseudo-shadow price estimate down. More...
 
double shadowEstimateUp_
 Current pseudo-shadow price estimate up. More...
 
double downDynamicPseudoRatio_
 Down pseudo ratio. More...
 
double upDynamicPseudoRatio_
 Up pseudo ratio. More...
 
int numberTimesDown_
 Number of times we have gone down. More...
 
int numberTimesUp_
 Number of times we have gone up. More...
 
int numberMembers_
 Number of members. More...
 
int sosType_
 SOS type. More...
 
bool integerValued_
 Whether integer valued. More...
 
bool oddValues_
 Whether odd values e.g. negative. More...
 

Additional Inherited Members

- Protected Attributes inherited from CbcObject
CbcModelmodel_
 data More...
 
int id_
 Identifier (normally column number in matrix) More...
 
int position_
 Position in object list. More...
 
int preferredWay_
 If -1 down always chosen first, +1 up always, 0 normal. More...
 
- Protected Attributes inherited from OsiObject
double infeasibility_
 data More...
 
short whichWay_
 Computed preferred way to branch. More...
 
short numberWays_
 Maximum number of ways on branch. More...
 
int priority_
 Priority. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

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

Member Function Documentation

virtual CbcObject* CbcSOS::clone ( ) const
virtual

Clone.

Implements CbcObject.

CbcSOS& CbcSOS::operator= ( const CbcSOS rhs)
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
inlinevirtual

Return true if object can take part in normal heuristics.

Reimplemented from OsiObject.

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.

Member Data Documentation

int* CbcSOS::members_
private

data

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

Definition at line 150 of file CbcSOS.hpp.

double* CbcSOS::weights_
private

Weights for individual members.

Arbitrary weights for members. Can be used to attach meaning to variable values independent of objective coefficients. For example, if the SOS set comprises binary variables used to choose a facility of a given size, the weight could be the corresponding facilty size. Fractional values of the SOS variables can then be used to estimate ideal facility size.

Weights cannot be completely arbitrary. From the code, they must be differ by at least 1.0e-7

Definition at line 163 of file CbcSOS.hpp.

double CbcSOS::shadowEstimateDown_
mutableprivate

Current pseudo-shadow price estimate down.

Definition at line 165 of file CbcSOS.hpp.

double CbcSOS::shadowEstimateUp_
mutableprivate

Current pseudo-shadow price estimate up.

Definition at line 167 of file CbcSOS.hpp.

double CbcSOS::downDynamicPseudoRatio_
private

Down pseudo ratio.

Definition at line 169 of file CbcSOS.hpp.

double CbcSOS::upDynamicPseudoRatio_
private

Up pseudo ratio.

Definition at line 171 of file CbcSOS.hpp.

int CbcSOS::numberTimesDown_
private

Number of times we have gone down.

Definition at line 173 of file CbcSOS.hpp.

int CbcSOS::numberTimesUp_
private

Number of times we have gone up.

Definition at line 175 of file CbcSOS.hpp.

int CbcSOS::numberMembers_
private

Number of members.

Definition at line 177 of file CbcSOS.hpp.

int CbcSOS::sosType_
private

SOS type.

Definition at line 179 of file CbcSOS.hpp.

bool CbcSOS::integerValued_
private

Whether integer valued.

Definition at line 181 of file CbcSOS.hpp.

bool CbcSOS::oddValues_
private

Whether odd values e.g. negative.

Definition at line 183 of file CbcSOS.hpp.


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