Camargue
exec_branch.hpp
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
5 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
6 
7 #ifndef CMR_EXEC_BRANCH_H
8 #define CMR_EXEC_BRANCH_H
9 
10 #include "active_tour.hpp"
11 #include "core_lp.hpp"
12 #include "datagroups.hpp"
13 #include "cliq.hpp"
14 #include "branch_node.hpp"
15 #include "branch_tour.hpp"
16 #include "lp_util.hpp"
17 #include "branch_util.hpp"
18 
19 #include <array>
20 #include <iostream>
21 #include <list>
22 #include <string>
23 #include <utility>
24 #include <vector>
25 
26 namespace CMR {
27 namespace ABC {
28 
29 class Executor {
30 public:
32  Executor(const Data::Instance &inst, const Data::BestGroup &bestdata,
33  const Graph::CoreGraph &coregraph, LP::CoreLP &core,
34  BranchTourFind &btourfind);
35 
37 
40  BranchNode &parent);
41 
43  void clamp(const BranchNode &current_node);
44 
46  void unclamp(const BranchNode &current_node);
47 
48  int verbose = 0;
49 
50 private:
51  const Data::Instance &instance;
52  const LP::ActiveTour &active_tour;
53  const Data::BestGroup &best_data;
54  const Graph::CoreGraph &core_graph;
55 
56  LP::CoreLP &core_lp;
57 
58  BranchTourFind &btour_find;
59 
60 };
61 
62 }
63 }
64 
65 #endif
Working with branch tours.
Miscellaneous functions, structs/enums, and constants for LPs.
Executor(const Data::Instance &inst, const Data::BestGroup &bestdata, const Graph::CoreGraph &coregraph, LP::CoreLP &core, BranchTourFind &btourfind)
Construct an Executor using data from an existing solution process.
Definition: exec_branch.cpp:26
Information about the current best tour.
Definition: datagroups.hpp:154
Data group structures.
Compute branch tours for estimation and instatement, managing their edges.
Definition: branch_tour.hpp:23
ABC search nodes.
Graph structures for the edges currently in a CoreLP::Relaxation.
Definition: datagroups.hpp:100
Reference counted storage of Cliques and Tooth objects.
Definition: exec_branch.hpp:29
Storing TSP instance data.
Definition: datagroups.hpp:36
Information about the active tour in a CoreLP.
Definition: active_tour.hpp:30
BranchNode::Split split_problem(ScoreTuple &branch_tuple, BranchNode &parent)
Create the children nodes of parent for branching on branch_edge.
Definition: exec_branch.cpp:117
Definition: branch_util.hpp:62
ScoreTuple branch_edge()
Get the next edge to branch on.
Definition: exec_branch.cpp:35
std::array< BranchNode, 2 > Split
Alias declaration for returning two split child problems.
Definition: branch_node.hpp:50
The namespace for this project.
Definition: abc_nodesel.hpp:20
Class for storing the core lp associated to a TSP instance and pivoting.
Definition: core_lp.hpp:33
void clamp(const BranchNode &current_node)
Clamp a variable as indicated by current_node.
Definition: exec_branch.cpp:169
Definition: branch_node.hpp:25
Functions, structs/enums, and constants for branching.
Managing Core LP relaxations of TSP instances.
Monitoring the active tour in the solution process.
void unclamp(const BranchNode &current_node)
Undo the clamp done on current_node.
Definition: exec_branch.cpp:200