diff options
author | Georgey | 2017-07-05 11:40:43 +0530 |
---|---|---|
committer | Georgey | 2017-07-05 11:40:43 +0530 |
commit | 938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427 (patch) | |
tree | b343c0ee5609433c80e0de1db8b6886c9126dc2d /thirdparty/linux/include/coin/CbcBranchBase.hpp | |
parent | 5b72577efe080c5294b32d804e4d26351fef30bc (diff) | |
download | FOSSEE-Optimization-toolbox-938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427.tar.gz FOSSEE-Optimization-toolbox-938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427.tar.bz2 FOSSEE-Optimization-toolbox-938fef4a37a7b7c61b4b6ff74cb4cfd2f100c427.zip |
Added linux shared libraries and header files for int and ecos functions
Diffstat (limited to 'thirdparty/linux/include/coin/CbcBranchBase.hpp')
-rw-r--r-- | thirdparty/linux/include/coin/CbcBranchBase.hpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin/CbcBranchBase.hpp b/thirdparty/linux/include/coin/CbcBranchBase.hpp new file mode 100644 index 0000000..56c4261 --- /dev/null +++ b/thirdparty/linux/include/coin/CbcBranchBase.hpp @@ -0,0 +1,78 @@ +/* $Id: CbcBranchBase.hpp 1573 2011-01-05 01:12:36Z lou $ */ +// 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). + +#ifndef CbcBranchBase_H +#define CbcBranchBase_H + +#include <string> +#include <vector> +#include "OsiBranchingObject.hpp" + +enum CbcRangeCompare { + CbcRangeSame, + CbcRangeDisjoint, + CbcRangeSubset, + CbcRangeSuperset, + CbcRangeOverlap +}; + +#include "CbcObject.hpp" +#include "CbcBranchingObject.hpp" +#include "CbcBranchDecision.hpp" +#include "CbcConsequence.hpp" +#include "CbcObjectUpdateData.hpp" + +//############################################################################## + +/** Compare two ranges. The two bounds arrays are both of size two and + describe closed intervals. 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 content of thisBd + with the intersection of the ranges. +*/ +static inline CbcRangeCompare +CbcCompareRanges(double* thisBd, const double* otherBd, + const bool replaceIfOverlap) +{ + const double lbDiff = thisBd[0] - otherBd[0]; + if (lbDiff < 0) { // lb of this < lb of other + if (thisBd[1] >= otherBd[1]) { // ub of this >= ub of other + return CbcRangeSuperset; + } else if (thisBd[1] < otherBd[0]) { + return CbcRangeDisjoint; + } else { + // overlap + if (replaceIfOverlap) { + thisBd[0] = otherBd[0]; + } + return CbcRangeOverlap; + } + } else if (lbDiff > 0) { // lb of this > lb of other + if (thisBd[1] <= otherBd[1]) { // ub of this <= ub of other + return CbcRangeSubset; + } else if (thisBd[0] > otherBd[1]) { + return CbcRangeDisjoint; + } else { + // overlap + if (replaceIfOverlap) { + thisBd[1] = otherBd[1]; + } + return CbcRangeOverlap; + } + } else { // lb of this == lb of other + if (thisBd[1] == otherBd[1]) { + return CbcRangeSame; + } + return thisBd[1] < otherBd[1] ? CbcRangeSubset : CbcRangeSuperset; + } + + return CbcRangeSame; // fake return + +} + +//############################################################################# + +#endif + |