26 #include <type_traits> 40 typename std::enable_if<!std::numeric_limits<T>::is_integer,
bool>::type
45 return std::abs(x - y) <= std::numeric_limits<T>::epsilon() * std::abs(x + y) * ulp
47 || std::abs(x - y) < std::numeric_limits<T>::min();
62 bool absDone = (LBD >= (UBD - epsilonA));
63 bool relDone = (LBD >= (UBD - fabs(UBD) * epsilonR));
64 bool done = (absDone || relDone);
76 std::queue<double>
LBD;
77 std::queue<double>
UBD;
95 time = std::queue<double>();
96 LBD = std::queue<double>();
97 UBD = std::queue<double>();
98 iters = std::queue<double>();
99 nodeid = std::queue<double>();
100 curLB = std::queue<double>();
102 absGap = std::queue<double>();
103 relGap = std::queue<double>();
176 _ptr(std::addressof(ref)) {}
181 operator T&()
const noexcept {
return *
_ptr; }
193 template <
typename T>
std::queue< double > iters
Definition: babUtils.h:78
Helper class that can be used to enforce the caller to explicitly state that the variable he passed m...
Definition: babUtils.h:170
std::queue< double > UBD
Definition: babUtils.h:77
NS
Enum for selecting the Node Selection heuristic.
Definition: babUtils.h:143
void clear()
Clears all logging information.
Definition: babUtils.h:93
Definition: babUtils.h:127
BAB_RETCODE
Enum for representing the return codes returned by the B&B solver.
Definition: babUtils.h:126
std::queue< double > curLB
Definition: babUtils.h:80
T * _ptr
Definition: babUtils.h:185
std::string csvIterationsName
Definition: babUtils.h:86
Definition: babUtils.h:133
Definition: babUtils.h:146
BV
Enum for selecting the Branching Variable selection heuristic.
Definition: babUtils.h:153
std::queue< double > absGap
Definition: babUtils.h:82
namespace holding all essentials of the babBase submodule
Definition: babBrancher.h:40
Definition: babUtils.h:154
Definition: babUtils.h:128
Definition: babUtils.h:130
Definition: babUtils.h:129
std::queue< double > relGap
Definition: babUtils.h:83
std::queue< double > nodeid
Definition: babUtils.h:79
Definition: babUtils.h:156
std::string csvGeneralName
Definition: babUtils.h:87
T type
Definition: babUtils.h:173
std::enable_if<!std::numeric_limits< T >::is_integer, bool >::type almost_equal(T x, T y, int ulp=2)
compares if two floating numbers are very close to each other from:https://en.cppreference....
Definition: babUtils.h:41
std::string solutionStatus
Definition: babUtils.h:84
std::string logFileName
Definition: babUtils.h:85
T & get() const noexcept
Definition: babUtils.h:182
Definition: babUtils.h:134
std::queue< double > nodesLeft
Definition: babUtils.h:81
Definition: babUtils.h:145
OutVar(T &ref) noexcept
Definition: babUtils.h:175
Definition: babUtils.h:136
OutVar & operator=(const OutVar &x) noexcept=default
Struct storing logging information during B&B prodcedure.
Definition: babUtils.h:74
Definition: babUtils.h:135
bool reachedMinNodeSize
Definition: babUtils.h:88
bool larger_or_equal_within_rel_and_abs_tolerance(const double LBD, const double UBD, const double epsilonR, const double epsilonA)
Function for checking if LBD is larger than UBD, or smaller by not more than the specified tolerance.
Definition: babUtils.h:60
Definition: babUtils.h:132
OutVar< T > out_par(T &arr)
Function for casting to OutVar<type T>
Definition: babUtils.h:195
Definition: babUtils.h:144
Definition: babUtils.h:155
std::queue< double > time
Definition: babUtils.h:75
std::queue< double > LBD
Definition: babUtils.h:76
Definition: babUtils.h:131