Skip to content

Commit 0e989e7

Browse files
committed
more work on routing pybind11
1 parent 36074e0 commit 0e989e7

36 files changed

+202
-38
lines changed

examples/python/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ py_binary(
436436
"//ortools/routing:enums_py_pb2",
437437
"//ortools/routing:parameters_py_pb2",
438438
"//ortools/routing/python:routing",
439+
"//ortools/util/python:sorted_interval_list",
439440
],
440441
)
441442

@@ -455,6 +456,7 @@ py_binary(
455456
"//ortools/routing:enums_py_pb2",
456457
"//ortools/routing:parameters_py_pb2",
457458
"//ortools/routing/python:routing",
459+
"//ortools/util/python:sorted_interval_list",
458460
],
459461
)
460462

examples/python/prize_collecting_tsp.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"""Simple prize collecting TSP problem with a max distance."""
1616

1717
from ortools.routing import enums_pb2
18+
from ortools.routing import parameters_pb2
1819
from ortools.routing.python import routing
1920

2021

@@ -144,7 +145,9 @@ def distance_callback(from_index, to_index):
144145
routing_model.add_disjunction([manager.node_to_index(node)], VISIT_VALUES[node])
145146

146147
# Setting first solution heuristic.
147-
search_parameters = routing.default_routing_search_parameters()
148+
search_parameters: parameters_pb2.RoutingSearchParameters = (
149+
routing.default_routing_search_parameters()
150+
)
148151
search_parameters.first_solution_strategy = (
149152
enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC
150153
)

examples/python/prize_collecting_vrp.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"""Simple prize collecting VRP problem with a max distance."""
1616

1717
from ortools.routing import enums_pb2
18+
from ortools.routing import parameters_pb2
1819
from ortools.routing.python import routing
1920

2021

@@ -154,7 +155,9 @@ def distance_callback(from_index, to_index):
154155
routing_model.add_disjunction([manager.node_to_index(node)], VISIT_VALUES[node])
155156

156157
# Setting first solution heuristic.
157-
search_parameters = routing.default_routing_search_parameters()
158+
search_parameters: parameters_pb2.RoutingSearchParameters = (
159+
routing.default_routing_search_parameters()
160+
)
158161
search_parameters.first_solution_strategy = (
159162
enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC
160163
)

ortools/constraint_solver/assignment.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ bool BaseAssignmentContainer::FindCopy(const void* var, int* index) const {
5858
return true;
5959
}
6060

61+
template class AssignmentContainer<IntVar, IntVarElement>;
62+
template class AssignmentContainer<IntervalVar, IntervalVarElement>;
63+
template class AssignmentContainer<SequenceVar, SequenceVarElement>;
64+
6165
// ----- IntVarElement -----
6266

6367
IntVarElement::IntVarElement() { Reset(nullptr); }

ortools/constraint_solver/constraint_solver.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5514,9 +5514,9 @@ class AssignmentContainer : public BaseAssignmentContainer {
55145514
std::vector<E> elements_;
55155515
};
55165516

5517-
template class AssignmentContainer<IntVar, IntVarElement>;
5518-
template class AssignmentContainer<IntervalVar, IntervalVarElement>;
5519-
template class AssignmentContainer<SequenceVar, SequenceVarElement>;
5517+
extern template class AssignmentContainer<IntVar, IntVarElement>;
5518+
extern template class AssignmentContainer<IntervalVar, IntervalVarElement>;
5519+
extern template class AssignmentContainer<SequenceVar, SequenceVarElement>;
55205520

55215521
/// An Assignment is a variable -> domains mapping, used
55225522
/// to report solutions to the user.

ortools/constraint_solver/python/BUILD.bazel

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# Description: python wrapping of the code in ../
1515

1616
load("@pip_deps//:requirements.bzl", "requirement")
17-
load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")
17+
load("@pybind11_bazel//:build_defs.bzl", "pybind_extension", "pybind_library")
1818
load("@rules_cc//cc:cc_library.bzl", "cc_library")
1919
load("@rules_python//python:py_test.bzl", "py_test")
2020

@@ -42,6 +42,24 @@ pybind_extension(
4242
],
4343
)
4444

45+
pybind_library(
46+
name = "constraint_solver_lib",
47+
srcs = ["constraint_solver.cc"],
48+
visibility = ["//visibility:public"],
49+
deps = [
50+
":constraint_solver_doc",
51+
"//ortools/constraint_solver:assignment_cc_proto",
52+
"//ortools/constraint_solver:cp",
53+
"//ortools/constraint_solver:search_limit_cc_proto",
54+
"//ortools/util:piecewise_linear_function",
55+
"//ortools/util:tuple_set",
56+
"@abseil-cpp//absl/cleanup",
57+
"@abseil-cpp//absl/functional:function_ref",
58+
"@abseil-cpp//absl/strings",
59+
"@pybind11_protobuf//pybind11_protobuf:native_proto_caster",
60+
],
61+
)
62+
4563
py_test(
4664
name = "constraint_solver_test",
4765
size = "small",

ortools/routing/python/BUILD.bazel

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ pybind_extension(
3636
"//ortools/constraint_solver:cp",
3737
"//ortools/constraint_solver:search_stats_cc_proto",
3838
"//ortools/constraint_solver:solver_parameters_cc_proto",
39-
"//ortools/constraint_solver/python:constraint_solver",
39+
"//ortools/constraint_solver/python:constraint_solver_lib",
4040
"//ortools/port:proto_utils",
4141
"//ortools/routing",
4242
"//ortools/routing:enums_cc_proto",
@@ -48,7 +48,7 @@ pybind_extension(
4848
"//ortools/sat:sat_parameters_cc_proto",
4949
"//ortools/util:optional_boolean_cc_proto",
5050
"//ortools/util:sorted_interval_list",
51-
"//ortools/util/python:sorted_interval_list",
51+
"//ortools/util/python:sorted_interval_list_lib",
5252
"@abseil-cpp//absl/algorithm:container",
5353
"@abseil-cpp//absl/container:flat_hash_set",
5454
"@protobuf//:duration_cc_proto",
@@ -68,6 +68,7 @@ py_test(
6868
"//ortools/constraint_solver/python:constraint_solver",
6969
"//ortools/routing:enums_py_pb2",
7070
"//ortools/routing:parameters_py_pb2",
71+
"//ortools/util/python:sorted_interval_list",
7172
],
7273
)
7374

@@ -78,8 +79,10 @@ py_test(
7879
deps = [
7980
":routing",
8081
requirement("absl-py"),
82+
"//ortools/constraint_solver/python:constraint_solver",
8183
"//ortools/routing:enums_py_pb2",
8284
"//ortools/routing:parameters_py_pb2",
85+
"//ortools/util/python:sorted_interval_list",
8386
],
8487
)
8588

@@ -90,6 +93,10 @@ py_test(
9093
deps = [
9194
":routing",
9295
requirement("absl-py"),
96+
"//ortools/constraint_solver/python:constraint_solver",
97+
"//ortools/routing:enums_py_pb2",
98+
"//ortools/routing:parameters_py_pb2",
99+
"//ortools/util/python:sorted_interval_list",
93100
],
94101
)
95102

@@ -100,6 +107,7 @@ py_test(
100107
deps = [
101108
":routing",
102109
requirement("absl-py"),
110+
"//ortools/constraint_solver/python:constraint_solver",
103111
"//ortools/routing:enums_py_pb2",
104112
"//ortools/routing:parameters_py_pb2",
105113
"//ortools/util:optional_boolean_py_pb2",

0 commit comments

Comments
 (0)