14#ifndef OR_TOOLS_SAT_ROUTING_CUTS_H_
15#define OR_TOOLS_SAT_ROUTING_CUTS_H_
25#include "absl/types/span.h"
26#include "ortools/sat/cp_model.pb.h"
53 const std::vector<std::pair<int, int>>& arcs,
54 int stop_at_num_components,
55 std::vector<int>* subset_data,
56 std::vector<absl::Span<const int>>* subsets);
72 const std::vector<int>& parent, std::vector<int>* subset_data,
73 std::vector<absl::Span<const int>>* subsets,
74 int node_limit = std::numeric_limits<int>::max());
112 int num_nodes,
const std::vector<ArcWithLpValue>& relevant_arcs);
122 int num_nodes, std::vector<int> tails, std::vector<int> heads,
123 std::vector<Literal> literals, Model*
model);
130 std::vector<int> heads,
131 std::vector<Literal> literals,
132 std::vector<int64_t> demands,
133 int64_t capacity, Model*
model);
146 int num_nodes,
const std::vector<int>& tails,
const std::vector<int>& heads,
147 const std::vector<AffineExpression>& arc_capacities,
148 std::function<
void(
const std::vector<bool>& in_subset,
149 IntegerValue* min_incoming_flow,
150 IntegerValue* min_outgoing_flow)>
std::vector< int > ComputeGomoryHuTree(int num_nodes, const std::vector< ArcWithLpValue > &relevant_arcs)
CutGenerator CreateCVRPCutGenerator(int num_nodes, std::vector< int > tails, std::vector< int > heads, std::vector< Literal > literals, std::vector< int64_t > demands, int64_t capacity, Model *model)
CutGenerator CreateStronglyConnectedGraphCutGenerator(int num_nodes, std::vector< int > tails, std::vector< int > heads, std::vector< Literal > literals, Model *model)
CutGenerator CreateFlowCutGenerator(int num_nodes, const std::vector< int > &tails, const std::vector< int > &heads, const std::vector< AffineExpression > &arc_capacities, std::function< void(const std::vector< bool > &in_subset, IntegerValue *min_incoming_flow, IntegerValue *min_outgoing_flow)> get_flows, Model *model)
void ExtractAllSubsetsFromForest(const std::vector< int > &parent, std::vector< int > *subset_data, std::vector< absl::Span< const int > > *subsets, int node_limit)
void GenerateInterestingSubsets(int num_nodes, const std::vector< std::pair< int, int > > &arcs, int stop_at_num_components, std::vector< int > *subset_data, std::vector< absl::Span< const int > > *subsets)
void SymmetrizeArcs(std::vector< ArcWithLpValue > *arcs)
In SWIG mode, we don't want anything besides these top-level includes.
bool operator==(const ArcWithLpValue &o) const