7 #include "cut_structs.hpp" 14 #include <unordered_map> 26 void get_light_teeth();
30 const std::vector<int> &perm,
31 const std::vector<Graph::AdjObj>
35 const std::vector<int> &tour,
36 const std::vector<int> &perm,
37 const std::vector<Graph::Node> &nodelist);
43 static void print_tooth(
const SimpleTooth &T,
bool full,
44 const std::vector<int> &tour_nodes);
50 using ToothList = std::vector<SimpleTooth::Ptr>;
53 std::vector<ToothList> light_teeth;
55 static std::vector<IteratorMat> seen_ranges;
56 std::vector<std::array<int, 3>> list_sizes;
61 std::vector<int> endmark;
63 static void add_tooth(ToothList &teeth,
64 std::vector<IteratorMat> &ranges,
65 std::array<int, 3> &sizes,
66 int root,
int body_start,
67 int body_end,
double slack,
68 const std::vector<int> &tour,
69 const std::vector<int> &perm,
70 const std::vector<Graph::Node> &nodelist);
72 static int teeth_cb(
double cut_val,
int cut_start,
int cut_end,
77 std::vector<IteratorMat> &_ranges,
78 std::vector<std::array<int, 3>> &_list_sizes,
79 std::vector<bool> &_node_marks,
80 const std::vector<int> &_tour_nodes,
81 const std::vector<int> &_perm,
83 light_teeth(_light_teeth),ranges(_ranges), list_sizes(_list_sizes),
84 node_marks(_node_marks),
85 tour_nodes(_tour_nodes), perm(_perm),
87 old_seg(_G_s.node_count - 1, _G_s.node_count - 1, 0.0)
90 std::vector<std::vector<SimpleTooth::Ptr>> &light_teeth;
91 std::vector<IteratorMat> &ranges;
92 std::vector<std::array<int, 3>> &list_sizes;
94 std::vector<bool> &node_marks;
95 const std::vector<int> &tour_nodes;
96 const std::vector<int> &perm;
102 std::unordered_map<int, double> rb_sums;
Class template for a square upper triangular matrix.
Definition: util.hpp:141
Support graph data for an LP solution.
Definition: datagroups.hpp:174
Class for building miniature simple DP witness cutgraphs.
Definition: witness.hpp:19
Representing bodies of simple tooth inequalities with associated slack.
Definition: cut_structs.hpp:29
Header for classes/structures/functions to work with graphs.
static std::pair< int, int > get_range(ToothBody s, const std::vector< int > &perm, const std::vector< Graph::AdjObj > &root_nbrs)
Get the range of adjacency zones for a tooth body wrt a given root.
Definition: tooth.cpp:164
Information about the active tour in a CoreLP.
Definition: active_tour.hpp:30
Utility functions, macros, and structures.
A class for recording CPU and wall clock time.
Definition: timer.hpp:10
Representing simple tooth inequalities.
Definition: cut_structs.hpp:39
The namespace for this project.
Definition: abc_nodesel.hpp:20
Representation of a graph as an adjacency list.
Definition: graph.hpp:80
Monitoring the active tour in the solution process.