summaryrefslogtreecommitdiff
path: root/newstructure/thirdparty/linux/include/coin/CbcClique.hpp
diff options
context:
space:
mode:
authorHarpreet2016-09-03 00:36:51 +0530
committerHarpreet2016-09-03 00:36:51 +0530
commita0d9443af147e949c1e6a01ac24749d12593ec5b (patch)
tree1a1955c5482ae608fd7f618b06f4ecc6a0d39a23 /newstructure/thirdparty/linux/include/coin/CbcClique.hpp
parent4b64cf486f5c999fd8167758cae27839f3b50848 (diff)
downloadFOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.tar.gz
FOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.tar.bz2
FOSSEE-Optim-toolbox-development-a0d9443af147e949c1e6a01ac24749d12593ec5b.zip
cbcintlinprog added
Diffstat (limited to 'newstructure/thirdparty/linux/include/coin/CbcClique.hpp')
-rw-r--r--newstructure/thirdparty/linux/include/coin/CbcClique.hpp303
1 files changed, 0 insertions, 303 deletions
diff --git a/newstructure/thirdparty/linux/include/coin/CbcClique.hpp b/newstructure/thirdparty/linux/include/coin/CbcClique.hpp
deleted file mode 100644
index e21e027..0000000
--- a/newstructure/thirdparty/linux/include/coin/CbcClique.hpp
+++ /dev/null
@@ -1,303 +0,0 @@
-// $Id: CbcClique.hpp 1899 2013-04-09 18:12:08Z stefan $
-// Copyright (C) 2002, International Business Machines
-// Corporation and others. All Rights Reserved.
-// This code is licensed under the terms of the Eclipse Public License (EPL).
-
-// Edwin 11/9/2009-- carved out of CbcBranchActual
-
-#ifndef CbcClique_H
-#define CbcClique_H
-
-/** \brief 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):
- \verbatim
- 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
- \endverbatim
- 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_.
-*/
-class CbcClique : public CbcObject {
-
-public:
-
- /// Default Constructor
- CbcClique ();
-
- /** Useful constructor (which are integer indices) slack can denote a slack
- in set. If type == NULL then as if 1
- */
- CbcClique (CbcModel * model, int cliqueType, int numberMembers,
- const int * which, const char * type,
- int identifier, int slack = -1);
-
- /// Copy constructor
- CbcClique ( const CbcClique &);
-
- /// Clone
- virtual CbcObject * clone() const;
-
- /// Assignment operator
- CbcClique & operator=( const CbcClique& rhs);
-
- /// Destructor
- virtual ~CbcClique ();
-
- /// Infeasibility - large is 0.5
- virtual double infeasibility(const OsiBranchingInformation * info,
- int &preferredWay) const;
-
- using CbcObject::feasibleRegion ;
- /// This looks at solution and sets bounds to contain solution
- virtual void feasibleRegion();
-
- /// Creates a branching object
- virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
- /// Number of members
- inline int numberMembers() const {
- return numberMembers_;
- }
- /** \brief 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_.
- */
- inline int numberNonSOSMembers() const {
- return numberNonSOSMembers_;
- }
-
- /// Members (indices in range 0 ... numberIntegers_-1)
- inline const int * members() const {
- return members_;
- }
-
- /*! \brief 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
- */
- inline char type(int index) const {
- if (type_) return type_[index];
- else return 1;
- }
-
- /// Clique type: 0 is <=, 1 is ==
- inline int cliqueType() const {
- return cliqueType_;
- }
- /// Redoes data when sequence numbers change
- virtual void redoSequenceEtc(CbcModel * model, int numberColumns, const int * originalColumns);
-
-protected:
- /// data
- /// Number of members
- int numberMembers_;
-
- /// Number of Non SOS members i.e. fixing to zero is strong
- int numberNonSOSMembers_;
-
- /// Members (indices in range 0 ... numberIntegers_-1)
- int * members_;
-
- /** \brief 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
- */
- char * type_;
-
- /** \brief Clique type
-
- 0 defines a <= relation, 1 an equality. The assumed value of the rhs is
- numberNonSOSMembers_+1. (See comments for the class.)
- */
- int cliqueType_;
-
- /** \brief 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.
- */
- int slack_;
-};
-
-/** Branching object for unordered cliques
-
- Intended for cliques which are long enough to make it worthwhile
- but <= 64 members. There will also be ones for long cliques.
-
- Variable_ is the clique id number (redundant, as the object also holds a
- pointer to the clique.
- */
-class CbcCliqueBranchingObject : public CbcBranchingObject {
-
-public:
-
- // Default Constructor
- CbcCliqueBranchingObject ();
-
- // Useful constructor
- CbcCliqueBranchingObject (CbcModel * model, const CbcClique * clique,
- int way,
- int numberOnDownSide, const int * down,
- int numberOnUpSide, const int * up);
-
- // Copy constructor
- CbcCliqueBranchingObject ( const CbcCliqueBranchingObject &);
-
- // Assignment operator
- CbcCliqueBranchingObject & operator=( const CbcCliqueBranchingObject& rhs);
-
- /// Clone
- virtual CbcBranchingObject * clone() const;
-
- // Destructor
- virtual ~CbcCliqueBranchingObject ();
-
- using CbcBranchingObject::branch ;
- /// Does next branch and updates state
- virtual double branch();
-
- using CbcBranchingObject::print ;
- /** \brief Print something about branch - only if log level high
- */
- virtual void print();
-
- /** Return the type (an integer identifier) of \c this */
- virtual CbcBranchObjType type() const {
- return CliqueBranchObj;
- }
-
- /** Compare the original object of \c this with the original object of \c
- brObj. Assumes that there is an ordering of the original objects.
- This method should be invoked only if \c this and brObj are of the same
- type.
- Return negative/0/positive depending on whether \c this is
- smaller/same/larger than the argument.
- */
- virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
-
- /** Compare the \c this with \c brObj. \c this and \c brObj must be of the
- same type and must have the same original object, but they may have
- different feasible regions.
- Return the appropriate CbcRangeCompare value (first argument being the
- sub/superset if that's the case). In case of overlap (and if \c
- replaceIfOverlap is true) replace the current branching object with one
- whose feasible region is the overlap.
- */
- virtual CbcRangeCompare compareBranchingObject
- (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
-
-private:
- /// data
- const CbcClique * clique_;
- /// downMask - bit set to fix to weak bounds, not set to leave unfixed
- unsigned int downMask_[2];
- /// upMask - bit set to fix to weak bounds, not set to leave unfixed
- unsigned int upMask_[2];
-};
-
-/** Unordered Clique Branching Object class.
- These are for cliques which are > 64 members
- Variable is number of clique.
- */
-class CbcLongCliqueBranchingObject : public CbcBranchingObject {
-
-public:
-
- // Default Constructor
- CbcLongCliqueBranchingObject ();
-
- // Useful constructor
- CbcLongCliqueBranchingObject (CbcModel * model, const CbcClique * clique,
- int way,
- int numberOnDownSide, const int * down,
- int numberOnUpSide, const int * up);
-
- // Copy constructor
- CbcLongCliqueBranchingObject ( const CbcLongCliqueBranchingObject &);
-
- // Assignment operator
- CbcLongCliqueBranchingObject & operator=( const CbcLongCliqueBranchingObject& rhs);
-
- /// Clone
- virtual CbcBranchingObject * clone() const;
-
- // Destructor
- virtual ~CbcLongCliqueBranchingObject ();
-
- using CbcBranchingObject::branch ;
- /// Does next branch and updates state
- virtual double branch();
-
- using CbcBranchingObject::print ;
- /** \brief Print something about branch - only if log level high
- */
- virtual void print();
-
- /** Return the type (an integer identifier) of \c this */
- virtual CbcBranchObjType type() const {
- return LongCliqueBranchObj;
- }
-
- /** Compare the original object of \c this with the original object of \c
- brObj. Assumes that there is an ordering of the original objects.
- This method should be invoked only if \c this and brObj are of the same
- type.
- Return negative/0/positive depending on whether \c this is
- smaller/same/larger than the argument.
- */
- virtual int compareOriginalObject(const CbcBranchingObject* brObj) const;
-
- /** Compare the \c this with \c brObj. \c this and \c brObj must be os the
- same type and must have the same original object, but they may have
- different feasible regions.
- Return the appropriate CbcRangeCompare value (first argument being the
- sub/superset if that's the case). In case of overlap (and if \c
- replaceIfOverlap is true) replace the current branching object with one
- whose feasible region is the overlap.
- */
- virtual CbcRangeCompare compareBranchingObject
- (const CbcBranchingObject* brObj, const bool replaceIfOverlap = false);
-
-private:
- /// data
- const CbcClique * clique_;
- /// downMask - bit set to fix to weak bounds, not set to leave unfixed
- unsigned int * downMask_;
- /// upMask - bit set to fix to weak bounds, not set to leave unfixed
- unsigned int * upMask_;
-};
-
-#endif
-