bab_tree_8h_source.html 59.3 KB
Newer Older
Dominik Bongartz's avatar
Dominik Bongartz committed
1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Dominik Bongartz's avatar
Dominik Bongartz committed
2
3
4
5
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
Dominik Bongartz's avatar
Dominik Bongartz committed
6
<meta name="generator" content="Doxygen 1.8.14"/>
Dominik Bongartz's avatar
Dominik Bongartz committed
7
<meta name="viewport" content="width=device-width, initial-scale=1"/>
Dominik Bongartz's avatar
Dominik Bongartz committed
8
<title>MAiNGO: C:/dobo01/maingo/dep/babbase/inc/babTree.h Source File</title>
Dominik Bongartz's avatar
Dominik Bongartz committed
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="mango_only.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">MAiNGO
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
Dominik Bongartz's avatar
Dominik Bongartz committed
41
<!-- Generated by Doxygen 1.8.14 -->
Dominik Bongartz's avatar
Dominik Bongartz committed
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('bab_tree_8h_source.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">babTree.h</div>  </div>
</div><!--header-->
<div class="contents">
Jaromil Najman's avatar
Jaromil Najman committed
93
<a href="bab_tree_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/**********************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Copyright (c) 2019 Process Systems Engineering (AVT.SVT), RWTH Aachen University</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * This program and the accompanying materials are made available under the</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * terms of the Eclipse Public License 2.0 which is available at</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * http://www.eclipse.org/legal/epl-2.0.</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * SPDX-License-Identifier: EPL-2.0</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * @file babTree.h</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * @brief File containing definition of the Branch-and-Bound tree class.</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> **********************************************************************************/</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="bab_exception_8h.html">babException.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="bab_node_8h.html">babNode.h</a>&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="bab_utils_8h.html">babUtils.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacebab_base.html">babBase</a> {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structbab_base_1_1_branching_history_info.html">   35</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structbab_base_1_1_branching_history_info.html">BranchingHistoryInfo</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489">   40</a></span>&#160;    <span class="keyword">enum class</span> <a class="code" href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489">BranchStatus</a> {</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        <a class="code" href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489abd06fe7dd930fd19a43a4313735a71cd">wasBranchedUp</a> = 1,</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <a class="code" href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489ad2a72f428238ecf3e66348939fcc135a">wasBranchedDown</a>,</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        <a class="code" href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489a65bddc0563e821bec242c776bac8e1da">wasNotBranched</a>    <span class="comment">// this last case happens e.g. for fixed nodes that are only readded to the tree</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;    } <a class="code" href="structbab_base_1_1_branching_history_info.html#af4685d27e83c66bddbd9fdc32759eb69">branchStatus</a>;       </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structbab_base_1_1_branching_history_info.html#a981348bf4cccba968bf48b591dc8e84c">   46</a></span>&#160;    <span class="keywordtype">int</span> <a class="code" href="structbab_base_1_1_branching_history_info.html#a981348bf4cccba968bf48b591dc8e84c">branchVar</a> = -1; </div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structbab_base_1_1_branching_history_info.html#a560c2b8ee36448c5f4e458d6d50b55d1">   48</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="structbab_base_1_1_branching_history_info.html#a560c2b8ee36448c5f4e458d6d50b55d1">relaxationSolutionPointForBranchingVariable</a>; </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structbab_base_1_1_branching_history_info.html#a7bab729fe8ba76839ead60e47fab38ce">   49</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="structbab_base_1_1_branching_history_info.html#a7bab729fe8ba76839ead60e47fab38ce">parentLowerBound</a>;                            </div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structbab_base_1_1_branching_history_info.html#a62b35e2f1c80674846d3df7e61058e33">   50</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="structbab_base_1_1_branching_history_info.html#a62b35e2f1c80674846d3df7e61058e33">parentUpperBound</a>;                            </div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;};</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html">   64</a></span>&#160;<span class="keyword">class </span><a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a> {</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#aa8a0898f9749b240c21468fe50f7209d">   73</a></span>&#160;    <a class="code" href="classbab_base_1_1_bab_node_with_info.html#aa8a0898f9749b240c21468fe50f7209d">BabNodeWithInfo</a>(<a class="code" href="classbab_base_1_1_bab_node.html">BabNode</a> nodeIn, <span class="keywordtype">double</span> selScoreIn):</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">node</a>(nodeIn), <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a011d4cf815cb43fc30c79c47cd5e9d5f">_nodeSelectionScore</a>(selScoreIn) {}</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">   76</a></span>&#160;    <a class="code" href="classbab_base_1_1_bab_node.html">BabNode</a> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">node</a>; </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#ab64329ad707a6b9914be851b784dba50">   81</a></span>&#160;    <span class="keyword">operator</span> <a class="code" href="classbab_base_1_1_bab_node.html">BabNode</a> <span class="keyword">const</span>&amp;() <span class="keyword">const</span>&amp; { <span class="keywordflow">return</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">node</a>; }</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#aa21366a28ecacce7ee7cb231408f38b2">   86</a></span>&#160;    <span class="keyword">operator</span> <a class="code" href="classbab_base_1_1_bab_node.html">BabNode</a> &amp;&amp;() &amp;&amp; { <span class="keywordflow">return</span> std::move(<a class="code" href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">node</a>); }    <span class="comment">//note the ref-qualifiers</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#a33be0940f65782c7845e3a5d5803e422">   91</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a33be0940f65782c7845e3a5d5803e422">get_node_selection_score</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a011d4cf815cb43fc30c79c47cd5e9d5f">_nodeSelectionScore</a>; }</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#aae390aed47e097508887f3df907c88ae">   96</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#aae390aed47e097508887f3df907c88ae">set_node_selection_score</a>(<span class="keywordtype">double</span> newScore) { <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a011d4cf815cb43fc30c79c47cd5e9d5f">_nodeSelectionScore</a> = newScore; }</div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#afec4f9666432de68b443e4013ea5fb9e">  101</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#afec4f9666432de68b443e4013ea5fb9e">get_pruning_score</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">node</a>.<a class="code" href="classbab_base_1_1_bab_node.html#a7b99992c4fb98f8086a3cf09ab8d96ad">get_pruning_score</a>(); }</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#a944cee8a402dd5e3d4f8a2950eae15f2">  106</a></span>&#160;    <span class="keywordtype">unsigned</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a944cee8a402dd5e3d4f8a2950eae15f2">get_ID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">node</a>.<a class="code" href="classbab_base_1_1_bab_node.html#a12e23225255660e57238ecb0820ea420">get_ID</a>(); };</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <a class="code" href="structbab_base_1_1_branching_history_info.html">BranchingHistoryInfo</a> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#ac6075518d3bd41539952567717008ada">branchingInfo</a>;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_node_with_info.html#a011d4cf815cb43fc30c79c47cd5e9d5f">  117</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html#a011d4cf815cb43fc30c79c47cd5e9d5f">_nodeSelectionScore</a>; </div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;};</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html">  134</a></span>&#160;<span class="keyword">class </span><a class="code" href="classbab_base_1_1_bab_tree.html">BabTree</a> {</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;  <span class="keyword">public</span>:</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;    <a class="code" href="classbab_base_1_1_bab_tree.html#a67b93250145e013dfa036ba6a4fa6d2f">BabTree</a>();</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="comment">// Virtual Destructor for the case of inheritance. However, the compiler now will not autogenarate the other constructors. So we tell it to:</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;    <span class="keyword">virtual</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a55a52c08fcb2eb8a59aa7b4b770ffb03">~BabTree</a>()      = <span class="keywordflow">default</span>;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;    <a class="code" href="classbab_base_1_1_bab_tree.html#a67b93250145e013dfa036ba6a4fa6d2f">BabTree</a>(<span class="keyword">const</span> <a class="code" href="classbab_base_1_1_bab_tree.html">BabTree</a>&amp;) = <span class="keywordflow">default</span>;       </div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;    <a class="code" href="classbab_base_1_1_bab_tree.html">BabTree</a>&amp; <a class="code" href="classbab_base_1_1_bab_tree.html#a9da3ce58d47965be2f5c5f04ad2871d9">operator=</a>(<a class="code" href="classbab_base_1_1_bab_tree.html">BabTree</a>&amp;) = <span class="keywordflow">default</span>;  </div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;    <a class="code" href="classbab_base_1_1_bab_tree.html#a67b93250145e013dfa036ba6a4fa6d2f">BabTree</a>(<a class="code" href="classbab_base_1_1_bab_tree.html">BabTree</a>&amp;&amp;)           = <span class="keywordflow">default</span>;  </div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;    <a class="code" href="classbab_base_1_1_bab_tree.html">BabTree</a>&amp; <a class="code" href="classbab_base_1_1_bab_tree.html#a9da3ce58d47965be2f5c5f04ad2871d9">operator=</a>(<a class="code" href="classbab_base_1_1_bab_tree.html">BabTree</a>&amp;&amp;) = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#aaa3be3d14946afcacef5079b3b0e812c">  151</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="classbab_base_1_1_bab_tree.html#aaa3be3d14946afcacef5079b3b0e812c">get_nodes_left</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        assert(<a class="code" href="classbab_base_1_1_bab_tree.html#aad690dae7eda8bd3e178f2341b5a1076">_nodesLeft</a> == <a class="code" href="classbab_base_1_1_bab_tree.html#a766066afd3863ebc1f9025d2e1200e20">_nodeVector</a>.size());</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        <span class="keywordflow">return</span> <a class="code" href="classbab_base_1_1_bab_tree.html#aad690dae7eda8bd3e178f2341b5a1076">_nodesLeft</a>;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;    };</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#a931d3afc91a3c6011e9921cbfe09d0a2">  162</a></span>&#160;    <span class="keywordtype">unsigned</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a931d3afc91a3c6011e9921cbfe09d0a2">get_valid_id</a>() { <span class="keywordflow">return</span> ++<a class="code" href="classbab_base_1_1_bab_tree.html#aad75c9a8cb31642d172e39d64f260789">_Id</a>; };    <span class="comment">//increment should be declared atomic for parallel use!</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classbab_base_1_1_bab_tree.html#afa84dcd25179e0f30408d80bd0c61f26">add_node</a>(<a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a> node);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;    <a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a> <a class="code" href="classbab_base_1_1_bab_tree.html#a65ce6ec7e2b0a93efd3383a837ad3df4">pop_next_node</a>();</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#ab57edc600a99a8da34df3d50398b7b98">get_lowest_pruning_score</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#ab6f087487f69b67a0516d342527763ff">get_pruning_score_gap</a>() <span class="keyword">const</span>;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a49521ddbee9e1d7e2a2b494d2ad5c4f5">set_pruning_score_threshold</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> newThreshold);</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#a13e9545dba8eb0600f0f41b5a682081b">  198</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a13e9545dba8eb0600f0f41b5a682081b">remove_has_incumbent_from_all_nodes</a>()</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;    {</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;        std::for_each(<a class="code" href="classbab_base_1_1_bab_tree.html#a766066afd3863ebc1f9025d2e1200e20">_nodeVector</a>.begin(), <a class="code" href="classbab_base_1_1_bab_tree.html#a766066afd3863ebc1f9025d2e1200e20">_nodeVector</a>.end(), [](<a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a>&amp; b) { b.node.set_holds_incumbent(<span class="keyword">false</span>); });</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;    }</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#a41440886243ed211a6a26981daedc530">  206</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a41440886243ed211a6a26981daedc530">get_pruning_score_threshold</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a724bc2173e90f9f49b452a2c60c58d93">_pruningScoreThreshold</a>; }</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#a11f278a2cf37dd13270f754a0b77aa95">  215</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a11f278a2cf37dd13270f754a0b77aa95">enable_pruning_with_rel_and_abs_tolerance</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> relTol, <span class="keyword">const</span> <span class="keywordtype">double</span> absTol)</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    {</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;        <a class="code" href="classbab_base_1_1_bab_tree.html#aa0c6599b79fd5a94a232f64cd33060de">_relPruningTol</a> = relTol;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;        <a class="code" href="classbab_base_1_1_bab_tree.html#a90f1c73b6149b861acbded97b7221b35">_absPruningTol</a> = absTol;</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;    };</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a58f93eb766b7a68e9d88699e267fdd0e">set_node_selection_strategy</a>(<a class="code" href="namespacebab_base_1_1enums.html#a02e97c49bffe195071c83aa097a8dde5">enums::NS</a> nodeSelectionStrategyType);</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;  <span class="keyword">private</span>:</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="keywordtype">void</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a0d63f7d99cc24bac3d632d53517939bf">delete_element</a>(std::vector&lt;BabNodeWithInfo&gt;::iterator targetNodeIt);</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a9dd406c60d514814311c4c9d4d8bd83e">_fathom_nodes_exceeding_pruning_threshold</a>(<span class="keyword">const</span> <span class="keywordtype">double</span> newThreshold, <span class="keyword">const</span> <span class="keywordtype">double</span> relTol, <span class="keyword">const</span> <span class="keywordtype">double</span> absTol);</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#a724bc2173e90f9f49b452a2c60c58d93">  244</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a724bc2173e90f9f49b452a2c60c58d93">_pruningScoreThreshold</a>; </div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#aa0c6599b79fd5a94a232f64cd33060de">  246</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#aa0c6599b79fd5a94a232f64cd33060de">_relPruningTol</a> = 0.0; </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#a90f1c73b6149b861acbded97b7221b35">  247</a></span>&#160;    <span class="keywordtype">double</span> <a class="code" href="classbab_base_1_1_bab_tree.html#a90f1c73b6149b861acbded97b7221b35">_absPruningTol</a> = 0.0; </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#aad690dae7eda8bd3e178f2341b5a1076">  249</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="classbab_base_1_1_bab_tree.html#aad690dae7eda8bd3e178f2341b5a1076">_nodesLeft</a>; </div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#aad75c9a8cb31642d172e39d64f260789">  250</a></span>&#160;    <span class="keywordtype">unsigned</span> <a class="code" href="classbab_base_1_1_bab_tree.html#aad75c9a8cb31642d172e39d64f260789">_Id</a>;      </div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    <span class="comment">// Function has to accept a vector of BabNodes and return a const_iterator to the selected node. No assumption can be made about the ordering of the passed vector, except that the .front() entry is the one with the largest nodeSelectionScore</span></div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#ab7c26ded9e7755b0252554a73c2746be">  254</a></span>&#160;    std::function&lt;std::vector&lt;BabNodeWithInfo&gt;::const_iterator(<span class="keyword">const</span> std::vector&lt;BabNodeWithInfo&gt;&amp; nodeVectorIN)&gt; <a class="code" href="classbab_base_1_1_bab_tree.html#ab7c26ded9e7755b0252554a73c2746be">_select_node</a>; </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classbab_base_1_1_bab_tree.html#a766066afd3863ebc1f9025d2e1200e20">  255</a></span>&#160;    std::vector&lt;BabNodeWithInfo&gt; <a class="code" href="classbab_base_1_1_bab_tree.html#a766066afd3863ebc1f9025d2e1200e20">_nodeVector</a>;                                                                                   </div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;};</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;std::vector&lt;BabNodeWithInfo&gt;::const_iterator <a class="code" href="namespacebab_base.html#a7023aaaa7bf22bf1c3717cfa070f4e69">select_node_highest_priority</a>(<span class="keyword">const</span> std::vector&lt;BabNodeWithInfo&gt;&amp; nodeVectorIN);</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;std::vector&lt;BabNodeWithInfo&gt;::const_iterator <a class="code" href="namespacebab_base.html#a388a4423133a99ec8703695a463b6c47">select_node_breadthfirst</a>(<span class="keyword">const</span> std::vector&lt;BabNodeWithInfo&gt;&amp; nodeVectorIN);</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;std::vector&lt;BabNodeWithInfo&gt;::const_iterator <a class="code" href="namespacebab_base.html#a676088e39a43b256c799d75f1eb9e26f">select_node_depthfirst</a>(<span class="keyword">const</span> std::vector&lt;BabNodeWithInfo&gt;&amp; nodeVectorIN);</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="structbab_base_1_1_node_priority_comparator.html">  275</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structbab_base_1_1_node_priority_comparator.html">NodePriorityComparator</a> {</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structbab_base_1_1_node_priority_comparator.html#a046f2155e1e85bd556686c212ff44506">  284</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structbab_base_1_1_node_priority_comparator.html#a046f2155e1e85bd556686c212ff44506">operator()</a>(<span class="keyword">const</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a>&amp; a, <span class="keyword">const</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a>&amp; b)<span class="keyword"> const</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        <span class="keywordflow">return</span> a.<a class="code" href="classbab_base_1_1_bab_node_with_info.html#a33be0940f65782c7845e3a5d5803e422">get_node_selection_score</a>() &lt; b.<a class="code" href="classbab_base_1_1_bab_node_with_info.html#a33be0940f65782c7845e3a5d5803e422">get_node_selection_score</a>();</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;    };</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;};</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="structbab_base_1_1_pruning_score_comparator.html">  298</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structbab_base_1_1_pruning_score_comparator.html">PruningScoreComparator</a> {</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="structbab_base_1_1_pruning_score_comparator.html#a32adb58b8c8c680fbb87c9837ecf88c9">  307</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structbab_base_1_1_pruning_score_comparator.html#a32adb58b8c8c680fbb87c9837ecf88c9">operator()</a>(<span class="keyword">const</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a>&amp; a, <span class="keyword">const</span> <a class="code" href="classbab_base_1_1_bab_node_with_info.html">BabNodeWithInfo</a>&amp; b)<span class="keyword"> const</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;<span class="keyword">    </span>{</div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;        <span class="keywordflow">return</span> a.<a class="code" href="classbab_base_1_1_bab_node_with_info.html#afec4f9666432de68b443e4013ea5fb9e">get_pruning_score</a>() &lt; b.<a class="code" href="classbab_base_1_1_bab_node_with_info.html#afec4f9666432de68b443e4013ea5fb9e">get_pruning_score</a>();</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;    };</div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;};</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;}    <span class="comment">//end namespace babBase</span></div><div class="ttc" id="classbab_base_1_1_bab_tree_html_aa0c6599b79fd5a94a232f64cd33060de"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#aa0c6599b79fd5a94a232f64cd33060de">babBase::BabTree::_relPruningTol</a></div><div class="ttdeci">double _relPruningTol</div><div class="ttdef"><b>Definition:</b> babTree.h:246</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
94
95
96
97
<div class="ttc" id="structbab_base_1_1_node_priority_comparator_html_a046f2155e1e85bd556686c212ff44506"><div class="ttname"><a href="structbab_base_1_1_node_priority_comparator.html#a046f2155e1e85bd556686c212ff44506">babBase::NodePriorityComparator::operator()</a></div><div class="ttdeci">bool operator()(const BabNodeWithInfo &amp;a, const BabNodeWithInfo &amp;b) const</div><div class="ttdoc">() operator for comparing </div><div class="ttdef"><b>Definition:</b> babTree.h:284</div></div>
<div class="ttc" id="namespacebab_base_1_1enums_html_a02e97c49bffe195071c83aa097a8dde5"><div class="ttname"><a href="namespacebab_base_1_1enums.html#a02e97c49bffe195071c83aa097a8dde5">babBase::enums::NS</a></div><div class="ttdeci">NS</div><div class="ttdoc">Enum for selecting the Node Selection heuristic. </div><div class="ttdef"><b>Definition:</b> babUtils.h:143</div></div>
<div class="ttc" id="classbab_base_1_1_bab_node_html_a12e23225255660e57238ecb0820ea420"><div class="ttname"><a href="classbab_base_1_1_bab_node.html#a12e23225255660e57238ecb0820ea420">babBase::BabNode::get_ID</a></div><div class="ttdeci">int get_ID() const</div><div class="ttdoc">Function for querying the node ID. </div><div class="ttdef"><b>Definition:</b> babNode.h:100</div></div>
<div class="ttc" id="structbab_base_1_1_pruning_score_comparator_html"><div class="ttname"><a href="structbab_base_1_1_pruning_score_comparator.html">babBase::PruningScoreComparator</a></div><div class="ttdoc">Functor for comparing pruning scores. </div><div class="ttdef"><b>Definition:</b> babTree.h:298</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
98
99
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a0692c234f3dd6f32552a5c04519fb489a65bddc0563e821bec242c776bac8e1da"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489a65bddc0563e821bec242c776bac8e1da">babBase::BranchingHistoryInfo::BranchStatus::wasNotBranched</a></div></div>
<div class="ttc" id="bab_exception_8h_html"><div class="ttname"><a href="bab_exception_8h.html">babException.h</a></div></div>
Jaromil Najman's avatar
Jaromil Najman committed
100
<div class="ttc" id="classbab_base_1_1_bab_tree_html_aaa3be3d14946afcacef5079b3b0e812c"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#aaa3be3d14946afcacef5079b3b0e812c">babBase::BabTree::get_nodes_left</a></div><div class="ttdeci">size_t get_nodes_left() const</div><div class="ttdoc">Returns the number of nodes left in the tree. The private member _nodesLeft is used instead of nodeVe...</div><div class="ttdef"><b>Definition:</b> babTree.h:151</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
101
<div class="ttc" id="classbab_base_1_1_bab_node_html"><div class="ttname"><a href="classbab_base_1_1_bab_node.html">babBase::BabNode</a></div><div class="ttdoc">Class representing a node in the Branch-and-Bound tree. </div><div class="ttdef"><b>Definition:</b> babNode.h:35</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
102
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a58f93eb766b7a68e9d88699e267fdd0e"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a58f93eb766b7a68e9d88699e267fdd0e">babBase::BabTree::set_node_selection_strategy</a></div><div class="ttdeci">void set_node_selection_strategy(enums::NS nodeSelectionStrategyType)</div><div class="ttdoc">Allows to set the node selection strategy. Default is to return the node with largest node selection ...</div><div class="ttdef"><b>Definition:</b> babTree.cpp:171</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
103
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_ac6075518d3bd41539952567717008ada"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#ac6075518d3bd41539952567717008ada">babBase::BabNodeWithInfo::branchingInfo</a></div><div class="ttdeci">BranchingHistoryInfo branchingInfo</div><div class="ttdoc">Object storing the branching history. </div><div class="ttdef"><b>Definition:</b> babTree.h:106</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
104
105
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_af4685d27e83c66bddbd9fdc32759eb69"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#af4685d27e83c66bddbd9fdc32759eb69">babBase::BranchingHistoryInfo::branchStatus</a></div><div class="ttdeci">enum babBase::BranchingHistoryInfo::BranchStatus branchStatus</div></div>
<div class="ttc" id="bab_node_8h_html"><div class="ttname"><a href="bab_node_8h.html">babNode.h</a></div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
106
107
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a0692c234f3dd6f32552a5c04519fb489"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489">babBase::BranchingHistoryInfo::BranchStatus</a></div><div class="ttdeci">BranchStatus</div><div class="ttdoc">Enum for distinguishing a branching status. </div><div class="ttdef"><b>Definition:</b> babTree.h:40</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a13e9545dba8eb0600f0f41b5a682081b"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a13e9545dba8eb0600f0f41b5a682081b">babBase::BabTree::remove_has_incumbent_from_all_nodes</a></div><div class="ttdeci">void remove_has_incumbent_from_all_nodes()</div><div class="ttdoc">Remove the hasIncumbent flag from all nodes. </div><div class="ttdef"><b>Definition:</b> babTree.h:198</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
108
<div class="ttc" id="classbab_base_1_1_bab_tree_html_ab7c26ded9e7755b0252554a73c2746be"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#ab7c26ded9e7755b0252554a73c2746be">babBase::BabTree::_select_node</a></div><div class="ttdeci">std::function&lt; std::vector&lt; BabNodeWithInfo &gt;::const_iterator(const std::vector&lt; BabNodeWithInfo &gt; &amp;nodeVectorIN)&gt; _select_node</div><div class="ttdef"><b>Definition:</b> babTree.h:254</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
109
110
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a67b93250145e013dfa036ba6a4fa6d2f"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a67b93250145e013dfa036ba6a4fa6d2f">babBase::BabTree::BabTree</a></div><div class="ttdeci">BabTree()</div><div class="ttdoc">Default constructor for BabTree, threshold set to INF. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:24</div></div>
<div class="ttc" id="namespacebab_base_html"><div class="ttname"><a href="namespacebab_base.html">babBase</a></div><div class="ttdoc">namespace holding all essentials of the babBase submodule </div></div>
Jaromil Najman's avatar
Jaromil Najman committed
111
<div class="ttc" id="structbab_base_1_1_branching_history_info_html"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html">babBase::BranchingHistoryInfo</a></div><div class="ttdoc">Struct for collecting all information that must be saved about a node, so that after it is retrieved ...</div><div class="ttdef"><b>Definition:</b> babTree.h:35</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
112
<div class="ttc" id="namespacebab_base_html_a388a4423133a99ec8703695a463b6c47"><div class="ttname"><a href="namespacebab_base.html#a388a4423133a99ec8703695a463b6c47">babBase::select_node_breadthfirst</a></div><div class="ttdeci">std::vector&lt; BabNodeWithInfo &gt;::const_iterator select_node_breadthfirst(const std::vector&lt; BabNodeWithInfo &gt; &amp;nodeVectorIN)</div><div class="ttdoc">Returns the node added least recently to the tree. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:223</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
113
114
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a560c2b8ee36448c5f4e458d6d50b55d1"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a560c2b8ee36448c5f4e458d6d50b55d1">babBase::BranchingHistoryInfo::relaxationSolutionPointForBranchingVariable</a></div><div class="ttdeci">double relaxationSolutionPointForBranchingVariable</div><div class="ttdef"><b>Definition:</b> babTree.h:48</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a724bc2173e90f9f49b452a2c60c58d93"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a724bc2173e90f9f49b452a2c60c58d93">babBase::BabTree::_pruningScoreThreshold</a></div><div class="ttdeci">double _pruningScoreThreshold</div><div class="ttdef"><b>Definition:</b> babTree.h:244</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
115
116
117
<div class="ttc" id="namespacebab_base_html_a7023aaaa7bf22bf1c3717cfa070f4e69"><div class="ttname"><a href="namespacebab_base.html#a7023aaaa7bf22bf1c3717cfa070f4e69">babBase::select_node_highest_priority</a></div><div class="ttdeci">std::vector&lt; BabNodeWithInfo &gt;::const_iterator select_node_highest_priority(const std::vector&lt; BabNodeWithInfo &gt; &amp;nodeVectorIN)</div><div class="ttdoc">Returns the node with the highest priority. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:200</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html_ab57edc600a99a8da34df3d50398b7b98"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#ab57edc600a99a8da34df3d50398b7b98">babBase::BabTree::get_lowest_pruning_score</a></div><div class="ttdeci">double get_lowest_pruning_score() const</div><div class="ttdoc">Return the lowest pruning score. Returns infinity if tree is empty. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:116</div></div>
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_aa8a0898f9749b240c21468fe50f7209d"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#aa8a0898f9749b240c21468fe50f7209d">babBase::BabNodeWithInfo::BabNodeWithInfo</a></div><div class="ttdeci">BabNodeWithInfo(BabNode nodeIn, double selScoreIn)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> babTree.h:73</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
118
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html">babBase::BabNodeWithInfo</a></div><div class="ttdoc">This class represents an node in the B&amp;B-Tree with additional information attached that is used in se...</div><div class="ttdef"><b>Definition:</b> babTree.h:64</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
119
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a0692c234f3dd6f32552a5c04519fb489ad2a72f428238ecf3e66348939fcc135a"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489ad2a72f428238ecf3e66348939fcc135a">babBase::BranchingHistoryInfo::BranchStatus::wasBranchedDown</a></div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
120
121
122
<div class="ttc" id="classbab_base_1_1_bab_tree_html_ab6f087487f69b67a0516d342527763ff"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#ab6f087487f69b67a0516d342527763ff">babBase::BabTree::get_pruning_score_gap</a></div><div class="ttdeci">double get_pruning_score_gap() const</div><div class="ttdoc">Query the largest gap between the pruning threshold and the the pruning scores of the nodes...</div><div class="ttdef"><b>Definition:</b> babTree.cpp:130</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a931d3afc91a3c6011e9921cbfe09d0a2"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a931d3afc91a3c6011e9921cbfe09d0a2">babBase::BabTree::get_valid_id</a></div><div class="ttdeci">unsigned get_valid_id()</div><div class="ttdoc">Returns a valid Id for the next node. </div><div class="ttdef"><b>Definition:</b> babTree.h:162</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a11f278a2cf37dd13270f754a0b77aa95"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a11f278a2cf37dd13270f754a0b77aa95">babBase::BabTree::enable_pruning_with_rel_and_abs_tolerance</a></div><div class="ttdeci">void enable_pruning_with_rel_and_abs_tolerance(const double relTol, const double absTol)</div><div class="ttdoc">Enables pruning of nodes even when they have pruning scores slightly below the threshold. </div><div class="ttdef"><b>Definition:</b> babTree.h:215</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
123
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a90f1c73b6149b861acbded97b7221b35"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a90f1c73b6149b861acbded97b7221b35">babBase::BabTree::_absPruningTol</a></div><div class="ttdeci">double _absPruningTol</div><div class="ttdef"><b>Definition:</b> babTree.h:247</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
124
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a49521ddbee9e1d7e2a2b494d2ad5c4f5"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a49521ddbee9e1d7e2a2b494d2ad5c4f5">babBase::BabTree::set_pruning_score_threshold</a></div><div class="ttdeci">double set_pruning_score_threshold(const double newThreshold)</div><div class="ttdoc">Update the pruning score threshold, e.g. after a new incumbent has been found, also fathom now fathom...</div><div class="ttdef"><b>Definition:</b> babTree.cpp:139</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
125
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a981348bf4cccba968bf48b591dc8e84c"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a981348bf4cccba968bf48b591dc8e84c">babBase::BranchingHistoryInfo::branchVar</a></div><div class="ttdeci">int branchVar</div><div class="ttdef"><b>Definition:</b> babTree.h:46</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
126
127
128
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a0d63f7d99cc24bac3d632d53517939bf"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a0d63f7d99cc24bac3d632d53517939bf">babBase::BabTree::delete_element</a></div><div class="ttdeci">void delete_element(std::vector&lt; BabNodeWithInfo &gt;::iterator targetNodeIt)</div><div class="ttdoc">Removes a node from the tree. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:60</div></div>
<div class="ttc" id="structbab_base_1_1_node_priority_comparator_html"><div class="ttname"><a href="structbab_base_1_1_node_priority_comparator.html">babBase::NodePriorityComparator</a></div><div class="ttdoc">Functor for comparing node priorities. </div><div class="ttdef"><b>Definition:</b> babTree.h:275</div></div>
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_aae390aed47e097508887f3df907c88ae"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#aae390aed47e097508887f3df907c88ae">babBase::BabNodeWithInfo::set_node_selection_score</a></div><div class="ttdeci">void set_node_selection_score(double newScore)</div><div class="ttdoc">Sets the node selection score of the node. </div><div class="ttdef"><b>Definition:</b> babTree.h:96</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
129
130
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_a650c3ccb6c41e2a8571992c4e711282a"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#a650c3ccb6c41e2a8571992c4e711282a">babBase::BabNodeWithInfo::node</a></div><div class="ttdeci">BabNode node</div><div class="ttdef"><b>Definition:</b> babTree.h:76</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a766066afd3863ebc1f9025d2e1200e20"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a766066afd3863ebc1f9025d2e1200e20">babBase::BabTree::_nodeVector</a></div><div class="ttdeci">std::vector&lt; BabNodeWithInfo &gt; _nodeVector</div><div class="ttdef"><b>Definition:</b> babTree.h:255</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
131
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_a944cee8a402dd5e3d4f8a2950eae15f2"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#a944cee8a402dd5e3d4f8a2950eae15f2">babBase::BabNodeWithInfo::get_ID</a></div><div class="ttdeci">unsigned get_ID() const</div><div class="ttdoc">Returns the ID of the node. </div><div class="ttdef"><b>Definition:</b> babTree.h:106</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
132
<div class="ttc" id="bab_utils_8h_html"><div class="ttname"><a href="bab_utils_8h.html">babUtils.h</a></div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
133
<div class="ttc" id="namespacebab_base_html_a676088e39a43b256c799d75f1eb9e26f"><div class="ttname"><a href="namespacebab_base.html#a676088e39a43b256c799d75f1eb9e26f">babBase::select_node_depthfirst</a></div><div class="ttdeci">std::vector&lt; BabNodeWithInfo &gt;::const_iterator select_node_depthfirst(const std::vector&lt; BabNodeWithInfo &gt; &amp;nodeVectorIN)</div><div class="ttdoc">Returns the node added most recently to the tree. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:209</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
134
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a7bab729fe8ba76839ead60e47fab38ce"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a7bab729fe8ba76839ead60e47fab38ce">babBase::BranchingHistoryInfo::parentLowerBound</a></div><div class="ttdeci">double parentLowerBound</div><div class="ttdef"><b>Definition:</b> babTree.h:49</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
135
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a65ce6ec7e2b0a93efd3383a837ad3df4"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a65ce6ec7e2b0a93efd3383a837ad3df4">babBase::BabTree::pop_next_node</a></div><div class="ttdeci">BabNodeWithInfo pop_next_node()</div><div class="ttdoc">Return the node according to the node selection strategy and removes it from the tree. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:74</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
136
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a62b35e2f1c80674846d3df7e61058e33"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a62b35e2f1c80674846d3df7e61058e33">babBase::BranchingHistoryInfo::parentUpperBound</a></div><div class="ttdeci">double parentUpperBound</div><div class="ttdef"><b>Definition:</b> babTree.h:50</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
137
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a55a52c08fcb2eb8a59aa7b4b770ffb03"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a55a52c08fcb2eb8a59aa7b4b770ffb03">babBase::BabTree::~BabTree</a></div><div class="ttdeci">virtual ~BabTree()=default</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
138
139
140
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a41440886243ed211a6a26981daedc530"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a41440886243ed211a6a26981daedc530">babBase::BabTree::get_pruning_score_threshold</a></div><div class="ttdeci">double get_pruning_score_threshold() const</div><div class="ttdoc">Query the the pruning score threshold. </div><div class="ttdef"><b>Definition:</b> babTree.h:206</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html">babBase::BabTree</a></div><div class="ttdoc">Represents the B&amp;B-Tree, manages the way nodes are saved and retrieved and pruned. </div><div class="ttdef"><b>Definition:</b> babTree.h:134</div></div>
<div class="ttc" id="classbab_base_1_1_bab_tree_html_afa84dcd25179e0f30408d80bd0c61f26"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#afa84dcd25179e0f30408d80bd0c61f26">babBase::BabTree::add_node</a></div><div class="ttdeci">void add_node(BabNodeWithInfo node)</div><div class="ttdoc">Add node to the list of nodes to process. </div><div class="ttdef"><b>Definition:</b> babTree.cpp:41</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
141
<div class="ttc" id="classbab_base_1_1_bab_tree_html_aad690dae7eda8bd3e178f2341b5a1076"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#aad690dae7eda8bd3e178f2341b5a1076">babBase::BabTree::_nodesLeft</a></div><div class="ttdeci">size_t _nodesLeft</div><div class="ttdef"><b>Definition:</b> babTree.h:249</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
142
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a9dd406c60d514814311c4c9d4d8bd83e"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a9dd406c60d514814311c4c9d4d8bd83e">babBase::BabTree::_fathom_nodes_exceeding_pruning_threshold</a></div><div class="ttdeci">double _fathom_nodes_exceeding_pruning_threshold(const double newThreshold, const double relTol, const double absTol)</div><div class="ttdoc">Removes all nodes from the tree having a pruning score greater than (or within the tolerances of) pru...</div><div class="ttdef"><b>Definition:</b> babTree.cpp:149</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
143
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_afec4f9666432de68b443e4013ea5fb9e"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#afec4f9666432de68b443e4013ea5fb9e">babBase::BabNodeWithInfo::get_pruning_score</a></div><div class="ttdeci">double get_pruning_score() const</div><div class="ttdoc">Returns the pruning score of the node. </div><div class="ttdef"><b>Definition:</b> babTree.h:101</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
144
<div class="ttc" id="structbab_base_1_1_branching_history_info_html_a0692c234f3dd6f32552a5c04519fb489abd06fe7dd930fd19a43a4313735a71cd"><div class="ttname"><a href="structbab_base_1_1_branching_history_info.html#a0692c234f3dd6f32552a5c04519fb489abd06fe7dd930fd19a43a4313735a71cd">babBase::BranchingHistoryInfo::BranchStatus::wasBranchedUp</a></div></div>
Jaromil Najman's avatar
Jaromil Najman committed
145
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_a011d4cf815cb43fc30c79c47cd5e9d5f"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#a011d4cf815cb43fc30c79c47cd5e9d5f">babBase::BabNodeWithInfo::_nodeSelectionScore</a></div><div class="ttdeci">double _nodeSelectionScore</div><div class="ttdef"><b>Definition:</b> babTree.h:117</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
146
<div class="ttc" id="classbab_base_1_1_bab_tree_html_a9da3ce58d47965be2f5c5f04ad2871d9"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#a9da3ce58d47965be2f5c5f04ad2871d9">babBase::BabTree::operator=</a></div><div class="ttdeci">BabTree &amp; operator=(BabTree &amp;)=default</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
147
148
149
<div class="ttc" id="classbab_base_1_1_bab_node_html_a7b99992c4fb98f8086a3cf09ab8d96ad"><div class="ttname"><a href="classbab_base_1_1_bab_node.html#a7b99992c4fb98f8086a3cf09ab8d96ad">babBase::BabNode::get_pruning_score</a></div><div class="ttdeci">double get_pruning_score() const</div><div class="ttdoc">Function for querying the pruning score within this node. </div><div class="ttdef"><b>Definition:</b> babNode.h:80</div></div>
<div class="ttc" id="structbab_base_1_1_pruning_score_comparator_html_a32adb58b8c8c680fbb87c9837ecf88c9"><div class="ttname"><a href="structbab_base_1_1_pruning_score_comparator.html#a32adb58b8c8c680fbb87c9837ecf88c9">babBase::PruningScoreComparator::operator()</a></div><div class="ttdeci">bool operator()(const BabNodeWithInfo &amp;a, const BabNodeWithInfo &amp;b) const</div><div class="ttdoc">() opeartor for comparing </div><div class="ttdef"><b>Definition:</b> babTree.h:307</div></div>
<div class="ttc" id="classbab_base_1_1_bab_node_with_info_html_a33be0940f65782c7845e3a5d5803e422"><div class="ttname"><a href="classbab_base_1_1_bab_node_with_info.html#a33be0940f65782c7845e3a5d5803e422">babBase::BabNodeWithInfo::get_node_selection_score</a></div><div class="ttdeci">double get_node_selection_score() const</div><div class="ttdoc">Returns the node selection score of the node. </div><div class="ttdef"><b>Definition:</b> babTree.h:91</div></div>
Jaromil Najman's avatar
Jaromil Najman committed
150
<div class="ttc" id="classbab_base_1_1_bab_tree_html_aad75c9a8cb31642d172e39d64f260789"><div class="ttname"><a href="classbab_base_1_1_bab_tree.html#aad75c9a8cb31642d172e39d64f260789">babBase::BabTree::_Id</a></div><div class="ttdeci">unsigned _Id</div><div class="ttdef"><b>Definition:</b> babTree.h:250</div></div>
Dominik Bongartz's avatar
Dominik Bongartz committed
151
152
153
154
155
156
157
158
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_ede40f663fdbaac4622f0a2d30ba279b.html">dep</a></li><li class="navelem"><a class="el" href="dir_47e169a4fe08058254fbf7964fa7bfb6.html">babbase</a></li><li class="navelem"><a class="el" href="dir_637fe8785ffc83488bdb33305770812c.html">inc</a></li><li class="navelem"><a class="el" href="bab_tree_8h.html">babTree.h</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
Dominik Bongartz's avatar
Dominik Bongartz committed
159
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
Dominik Bongartz's avatar
Dominik Bongartz committed
160
161
162
163
  </ul>
</div>
</body>
</html>