Files
ortools-clone/examples/cpp/BUILD.bazel

972 lines
26 KiB
Python
Raw Normal View History

2025-01-10 11:35:44 +01:00
# Copyright 2010-2025 Google LLC
2022-09-09 16:49:24 +02:00
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
2025-08-06 10:57:31 +02:00
load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
2025-12-01 10:22:54 +01:00
load("//tools/testing:bintest.bzl", "bintest")
2025-10-10 09:17:40 +00:00
# Description:
# C++ examples for operations_research.
package(default_visibility = ["//visibility:public"])
2025-08-06 10:57:31 +02:00
cc_binary(
name = "binpacking_2d_sat",
2025-10-10 09:17:40 +00:00
srcs = ["binpacking_2d_sat.cc"],
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/base:mathutil",
2023-10-24 17:40:38 +02:00
"//ortools/base:path",
"//ortools/packing:binpacking_2d_parser",
"//ortools/packing:multiple_dimensions_bin_packing_cc_proto",
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"//ortools/sat:cp_model_cc_proto",
"//ortools/sat:cp_model_solver",
"//ortools/sat:sat_parameters_cc_proto",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2025-05-26 15:07:03 +02:00
"@protobuf",
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:36:49 -07:00
name = "binpacking_2d_sat_class01_instance2_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":binpacking_2d_sat_class01_instance2_test.bintest"],
named_data = {
"binpacking_2d_sat": ":binpacking_2d_sat",
"Class_01.2bp": "//ortools/packing/testdata:Class_01.2bp",
},
)
cc_library(
name = "cgc",
srcs = ["cgc.cc"],
hdrs = [
"cgc.h",
"cgc_data.h",
],
2025-12-01 10:22:54 +01:00
deps = [
"//ortools/base",
"//ortools/base:file",
"//ortools/constraint_solver:cp",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/time",
"@abseil-cpp//absl/types:span",
"@re2",
],
)
cc_binary(
name = "cgc_main",
srcs = ["cgc_main.cc"],
deps = [
":cgc",
"//ortools/base",
"@abseil-cpp//absl/flags:flag",
"@abseil-cpp//absl/strings:str_format",
"@abseil-cpp//absl/time",
],
)
bintest(
name = "cgc_test_solution",
size = "small",
srcs = [":cgc_test_solution.bintest"],
named_data = {
"cgc_main": ":cgc_main",
"1.in": "testdata/cgc/1.in",
"2.in": "testdata/cgc/2.in",
"3.in": "testdata/cgc/3.in",
"cgcut1.in": "testdata/cgc/cgcut1.in",
"cgcut2.in": "testdata/cgc/cgcut2.in",
"cgcut3.in": "testdata/cgc/cgcut3.in",
},
2023-08-09 17:36:49 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "constraint_programming_cp",
srcs = ["constraint_programming_cp.cc"],
deps = [
"//ortools/base",
"//ortools/constraint_solver:cp",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:56:39 -07:00
name = "constraint_programming_cp_test",
2023-08-09 20:54:52 -07:00
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":constraint_programming_cp_test.bintest"],
named_data = {"constraint_programming_cp": ":constraint_programming_cp"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "costas_array_sat",
srcs = ["costas_array_sat.cc"],
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/base:types",
2020-10-21 09:03:08 +02:00
"//ortools/sat:cp_model",
"//ortools/sat:model",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "costas_array_sat_model1_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":costas_array_sat_model1_test.bintest"],
named_data = {"costas_array_sat": ":costas_array_sat"},
2023-08-09 20:54:52 -07:00
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "costas_array_sat_model2_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":costas_array_sat_model2_test.bintest"],
named_data = {"costas_array_sat": ":costas_array_sat"},
2023-08-09 20:54:52 -07:00
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "costas_array_sat_model3_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":costas_array_sat_model3_test.bintest"],
named_data = {"costas_array_sat": ":costas_array_sat"},
2023-08-09 20:54:52 -07:00
)
cc_binary(
name = "cryptarithm_sat",
srcs = ["cryptarithm_sat.cc"],
2025-10-10 09:17:40 +00:00
deps = ["//ortools/sat:cp_model"],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "cryptarithm_sat_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":cryptarithm_sat_test.bintest"],
named_data = {"cryptarithm_sat": ":cryptarithm_sat"},
2023-08-09 20:54:52 -07:00
)
cc_binary(
name = "dobble_ls",
srcs = ["dobble_ls.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/base:map_util",
2025-10-10 09:17:40 +00:00
"//ortools/base:types",
"//ortools/constraint_solver:cp",
"//ortools/util:bitset",
"@abseil-cpp//absl/random",
"@abseil-cpp//absl/strings:str_format",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:36:49 -07:00
name = "dobble_ls_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":dobble_ls_test.bintest"],
named_data = {"dobble_ls": ":dobble_ls"},
2023-08-09 17:36:49 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "golomb_sat",
srcs = ["golomb_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
"//ortools/sat:model",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings:str_format",
2025-05-26 15:07:03 +02:00
"@protobuf",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:36:49 -07:00
name = "golomb_sat_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":golomb_sat_test.bintest"],
named_data = {"golomb_sat": ":golomb_sat"},
2023-08-09 17:36:49 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "knapsack_2d_sat",
2025-10-10 09:17:40 +00:00
srcs = ["knapsack_2d_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/packing:binpacking_2d_parser",
"//ortools/packing:multiple_dimensions_bin_packing_cc_proto",
"//ortools/sat:cp_model",
"//ortools/sat:cp_model_solver",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/types:span",
2025-05-26 15:07:03 +02:00
"@protobuf",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "knapsack_2d_sat_class01_instance2_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":knapsack_2d_sat_class01_instance2_test.bintest"],
named_data = {
"knapsack_2d_sat": ":knapsack_2d_sat",
"Class_01.2bp": "//ortools/packing/testdata:Class_01.2bp",
},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "jobshop_sat",
2025-10-10 09:17:40 +00:00
srcs = ["jobshop_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/graph:connected_components",
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"//ortools/sat:cp_model_cc_proto",
"//ortools/sat:cp_model_solver",
2025-10-10 09:17:40 +00:00
"//ortools/sat:sat_parameters_cc_proto",
"//ortools/scheduling:jobshop_scheduling_cc_proto",
"//ortools/scheduling:jobshop_scheduling_parser",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
"@protobuf",
"@protobuf//:wrappers_cc_proto",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:44:00 -07:00
name = "jobshop_sat_ft06",
2023-08-09 20:54:52 -07:00
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":jobshop_sat_ft06.bintest"],
named_data = {
"jobshop_sat": ":jobshop_sat",
"ft06": "//ortools/scheduling/testdata:ft06",
},
2023-08-09 17:44:00 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "magic_sequence_sat",
srcs = ["magic_sequence_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings:str_format",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "magic_sequence_sat_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":magic_sequence_sat_test.bintest"],
named_data = {"magic_sequence_sat": ":magic_sequence_sat"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "multi_knapsack_sat",
2025-10-10 09:17:40 +00:00
srcs = ["multi_knapsack_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "multi_knapsack_sat_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":multi_knapsack_sat_test.bintest"],
named_data = {"multi_knapsack_sat": ":multi_knapsack_sat"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "shift_minimization_sat",
2025-10-10 09:17:40 +00:00
srcs = ["shift_minimization_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
"//ortools/sat:model",
"//ortools/util:filelineiter",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2023-08-09 17:44:00 -07:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:44:00 -07:00
name = "shift_minimization_sat_test",
2023-08-09 20:54:52 -07:00
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":shift_minimization_sat_test.bintest"],
named_data = {
"shift_minimization_sat": ":shift_minimization_sat",
"shift_minimization.dat": "testdata/shift_minimization.dat",
},
2020-10-21 09:03:08 +02:00
)
cc_binary(
name = "weighted_tardiness_sat",
2025-10-10 09:17:40 +00:00
srcs = ["weighted_tardiness_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"//ortools/sat:cp_model_cc_proto",
"//ortools/sat:cp_model_solver",
"//ortools/sat:model",
2025-10-10 09:17:40 +00:00
"//ortools/sat:sat_parameters_cc_proto",
"//ortools/util:filelineiter",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "weighted_tardiness_sat_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":weighted_tardiness_sat_test.bintest"],
named_data = {
"weighted_tardiness_sat": ":weighted_tardiness_sat",
"wt40.txt": "testdata/wt40.txt",
},
2023-08-09 20:54:52 -07:00
)
cc_binary(
name = "magic_square_sat",
srcs = ["magic_square_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
"//ortools/sat:model",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings:str_format",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "magic_square_sat_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":magic_square_sat_test.bintest"],
named_data = {"magic_square_sat": ":magic_square_sat"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "network_routing_sat",
srcs = ["network_routing_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/graph",
"//ortools/graph:shortest_paths",
"//ortools/sat:cp_model",
"//ortools/sat:model",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"//ortools/util:time_limit",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/container:flat_hash_set",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/random:distributions",
"@abseil-cpp//absl/strings:str_format",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/strings:string_view",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:36:49 -07:00
name = "network_routing_sat_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":network_routing_sat_test.bintest"],
named_data = {"network_routing_sat": ":network_routing_sat"},
2023-08-09 17:36:49 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "nqueens",
srcs = ["nqueens.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/base:map_util",
2025-10-10 09:17:40 +00:00
"//ortools/base:types",
2020-10-21 09:03:08 +02:00
"//ortools/constraint_solver:cp",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/strings:str_format",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "nqueens_test",
2025-10-10 09:17:40 +00:00
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":nqueens_test.bintest"],
named_data = {"nqueens": ":nqueens"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "sports_scheduling_sat",
srcs = ["sports_scheduling_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"//ortools/sat:cp_model_cc_proto",
"//ortools/sat:model",
2025-10-10 09:17:40 +00:00
"//ortools/util:sorted_interval_list",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:36:49 -07:00
name = "sports_scheduling_sat_test",
size = "medium",
2025-12-01 10:22:54 +01:00
srcs = [":sports_scheduling_sat_test.bintest"],
named_data = {"sports_scheduling_sat": ":sports_scheduling_sat"},
2023-08-09 17:36:49 -07:00
)
cc_binary(
2025-10-10 09:17:40 +00:00
name = "pdptw",
srcs = ["pdptw.cc"],
2023-08-09 20:54:52 -07:00
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/base:mathutil",
"//ortools/base:timer",
"//ortools/constraint_solver:cp",
2025-11-05 17:31:25 +01:00
"//ortools/constraint_solver:routing",
2025-10-10 09:17:40 +00:00
"//ortools/routing/parsers:lilim_parser",
"//ortools/routing/parsers:simple_graph",
"@abseil-cpp//absl/algorithm:container",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/strings:str_format",
"@protobuf",
2023-08-09 20:54:52 -07:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
name = "pdptw_test",
size = "medium",
srcs = [":pdptw_test.bintest"],
named_data = {
"pdptw": ":pdptw",
"lc102.txt": "testdata/lc102.txt",
},
)
bintest(
name = "pdptw_non_homogenous_fleet_test",
size = "medium",
srcs = [":pdptw_non_homogenous_fleet_test.bintest"],
named_data = {
"pdptw": ":pdptw",
"lc102.txt": "testdata/lc102.txt",
},
)
# Routing examples.
cc_binary(
name = "random_tsp",
srcs = ["random_tsp.cc"],
2020-10-21 09:03:08 +02:00
deps = [
2025-10-10 09:17:40 +00:00
"//ortools/constraint_solver:cp",
2025-11-05 17:31:25 +01:00
"//ortools/constraint_solver:routing",
"//ortools/util:random_engine",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/flags:parse",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/log:initialize",
"@abseil-cpp//absl/random",
"@abseil-cpp//absl/strings",
2025-05-26 15:07:03 +02:00
"@protobuf",
2020-10-21 09:03:08 +02:00
],
)
# Linear and integer programming examples.
2020-10-21 09:03:08 +02:00
cc_binary(
name = "integer_programming",
srcs = ["integer_programming.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/linear_solver",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "integer_programming_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":integer_programming_test.bintest"],
named_data = {"integer_programming": ":integer_programming"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "linear_programming",
srcs = ["linear_programming.cc"],
deps = [
"//ortools/base",
"//ortools/linear_solver",
"//ortools/linear_solver:linear_solver_cc_proto",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "linear_programming_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":linear_programming_test.bintest"],
named_data = {"linear_programming": ":linear_programming"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "linear_solver_protocol_buffers",
srcs = ["linear_solver_protocol_buffers.cc"],
deps = [
"//ortools/base",
"//ortools/linear_solver:linear_solver_cc_proto",
2024-03-25 11:59:02 +01:00
"//ortools/linear_solver:solve_mp_model",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2025-10-10 09:17:40 +00:00
name = "linear_solver_protocol_buffers_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":linear_solver_protocol_buffers_test.bintest"],
named_data = {"linear_solver_protocol_buffers": ":linear_solver_protocol_buffers"},
2025-10-10 09:17:40 +00:00
)
2021-01-15 09:47:18 +01:00
cc_binary(
name = "strawberry_fields_with_column_generation",
srcs = ["strawberry_fields_with_column_generation.cc"],
2021-01-15 09:47:18 +01:00
deps = [
"//ortools/base",
"//ortools/linear_solver",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/flags:flag",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings:str_format",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2023-08-09 22:34:09 -07:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 22:34:09 -07:00
name = "strawberry_fields_with_column_generation_test",
size = "large",
2025-12-01 10:22:54 +01:00
srcs = [":strawberry_fields_with_column_generation_test.bintest"],
named_data = {"strawberry_fields_with_column_generation": ":strawberry_fields_with_column_generation"},
2021-01-15 09:47:18 +01:00
)
# Dimacs assignment problems
cc_library(
name = "print_dimacs_assignment",
hdrs = ["print_dimacs_assignment.h"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/base:file",
"//ortools/graph:linear_assignment",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
2020-10-21 09:03:08 +02:00
],
)
cc_library(
name = "parse_dimacs_assignment",
2025-01-06 13:20:57 +01:00
srcs = ["parse_dimacs_assignment.cc"],
hdrs = ["parse_dimacs_assignment.h"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/graph:linear_assignment",
"//ortools/util:filelineiter",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/flags:flag",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/strings",
2020-10-21 09:03:08 +02:00
],
)
cc_binary(
name = "dimacs_assignment",
srcs = ["dimacs_assignment.cc"],
2020-10-21 09:03:08 +02:00
deps = [
":parse_dimacs_assignment",
":print_dimacs_assignment",
"//ortools/algorithms:hungarian",
2020-10-21 09:03:08 +02:00
"//ortools/base",
"//ortools/base:timer",
2024-12-29 19:47:45 +01:00
"//ortools/graph",
"//ortools/graph:linear_assignment",
"@abseil-cpp//absl/container:flat_hash_map",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/flags:flag",
2025-12-01 10:22:54 +01:00
"@abseil-cpp//absl/strings:string_view",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
name = "dimacs_assignment_min_cost_test",
size = "small",
srcs = [":dimacs_assignment_min_cost_test.bintest"],
named_data = {
"dimacs_assignment": ":dimacs_assignment",
"dimacs_example.txt": "testdata/dimacs_example.txt",
},
)
bintest(
name = "dimacs_assignment_max_cost_test",
size = "small",
srcs = [":dimacs_assignment_max_cost_test.bintest"],
named_data = {
"dimacs_assignment": ":dimacs_assignment",
"dimacs_example.txt": "testdata/dimacs_example.txt",
},
)
# MPS driver for LP and MIP.
2020-10-21 09:03:08 +02:00
cc_binary(
name = "mps_driver",
srcs = ["mps_driver.cc"],
2025-10-10 09:17:40 +00:00
copts = ["-Wfloat-conversion"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/base:file",
2020-10-21 09:03:08 +02:00
"//ortools/base:timer",
"//ortools/glop:lp_solver",
"//ortools/glop:parameters_cc_proto",
2025-10-10 09:17:40 +00:00
"//ortools/lp_data",
"//ortools/lp_data:base",
2020-10-21 09:03:08 +02:00
"//ortools/lp_data:mps_reader",
2025-10-10 09:17:40 +00:00
"//ortools/lp_data:proto_utils",
"//ortools/util:file_util",
2023-08-09 17:36:49 -07:00
"//ortools/util:proto_tools",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/status",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
2025-05-26 15:07:03 +02:00
"@protobuf",
2023-08-09 17:36:49 -07:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 17:36:49 -07:00
name = "mps_driver_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":mps_driver_test.bintest"],
named_data = {
"mps_driver": ":mps_driver",
"maximization.mps": "//ortools/linear_solver/testdata:maximization.mps",
},
2020-10-21 09:03:08 +02:00
)
# Linear Assignment C++ Example
2021-01-15 09:47:18 +01:00
cc_binary(
name = "linear_assignment_api",
srcs = ["linear_assignment_api.cc"],
2021-01-15 09:47:18 +01:00
deps = [
"//ortools/base",
2024-12-29 19:47:45 +01:00
"//ortools/graph",
"//ortools/graph:linear_assignment",
2021-01-15 09:47:18 +01:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "linear_assignment_api_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":linear_assignment_api_test.bintest"],
named_data = {"linear_assignment_api": ":linear_assignment_api"},
2023-08-09 20:54:52 -07:00
)
# Flow C++ Example
2020-10-21 09:03:08 +02:00
cc_binary(
name = "flow_api",
srcs = ["flow_api.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
2024-12-29 19:47:45 +01:00
"//ortools/graph",
2025-10-10 09:17:40 +00:00
"//ortools/graph:generic_max_flow",
"//ortools/graph:min_cost_flow",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "flow_api_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":flow_api_test.bintest"],
named_data = {"flow_api": ":flow_api"},
2023-08-09 20:54:52 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "max_flow",
srcs = ["max_flow.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/graph",
"//ortools/graph:generic_max_flow",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "max_flow_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":max_flow_test.bintest"],
named_data = {"max_flow": ":max_flow"},
2023-08-09 20:54:52 -07:00
)
2022-08-07 16:31:58 -04:00
cc_binary(
name = "min_cost_flow",
srcs = ["min_cost_flow.cc"],
2022-08-07 16:31:58 -04:00
deps = [
"//ortools/base",
2023-08-09 20:54:52 -07:00
"//ortools/graph:min_cost_flow",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:globals",
2023-08-09 20:54:52 -07:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 20:54:52 -07:00
name = "min_cost_flow_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":min_cost_flow_test.bintest"],
named_data = {"min_cost_flow": ":min_cost_flow"},
2022-08-07 16:31:58 -04:00
)
# Frequency Assignment Problem
cc_library(
name = "fap_parser",
2025-01-06 13:20:57 +01:00
srcs = ["fap_parser.cc"],
hdrs = ["fap_parser.h"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base:file",
"//ortools/base:map_util",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/container:flat_hash_map",
"@abseil-cpp//absl/strings",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2020-10-21 09:03:08 +02:00
],
)
cc_library(
name = "fap_model_printer",
2025-01-06 13:20:57 +01:00
srcs = ["fap_model_printer.cc"],
hdrs = ["fap_model_printer.h"],
2022-10-10 15:03:10 +02:00
deps = [
":fap_parser",
2025-10-10 09:17:40 +00:00
"//ortools/base:logging",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/strings",
"@abseil-cpp//absl/strings:str_format",
2022-10-10 15:03:10 +02:00
],
)
cc_library(
name = "fap_utilities",
2025-01-06 13:20:57 +01:00
srcs = ["fap_utilities.cc"],
hdrs = ["fap_utilities.h"],
2020-10-21 09:03:08 +02:00
deps = [
":fap_parser",
2020-10-21 09:03:08 +02:00
"//ortools/base",
"//ortools/base:map_util",
"//ortools/constraint_solver:cp",
"@abseil-cpp//absl/container:btree",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2020-10-21 09:03:08 +02:00
],
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "frequency_assignment_problem",
srcs = ["frequency_assignment_problem.cc"],
2020-10-21 09:03:08 +02:00
deps = [
":fap_model_printer",
":fap_parser",
":fap_utilities",
2020-10-21 09:03:08 +02:00
"//ortools/base",
"//ortools/base:map_util",
"//ortools/constraint_solver:cp",
"@abseil-cpp//absl/container:btree",
"@abseil-cpp//absl/strings",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2020-10-21 09:03:08 +02:00
],
)
# Quadratic assignment problem.
2025-10-10 09:17:40 +00:00
2020-10-21 09:03:08 +02:00
cc_binary(
name = "qap_sat",
srcs = ["qap_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
"//ortools/sat:cp_model",
"//ortools/sat:sat_parameters_cc_proto",
"//ortools/util:qap_reader",
"@abseil-cpp//absl/flags:flag",
"@abseil-cpp//absl/strings",
2025-05-26 15:07:03 +02:00
"@protobuf",
2020-10-21 09:03:08 +02:00
],
)
cc_binary(
name = "slitherlink_sat",
srcs = ["slitherlink_sat.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"//ortools/sat:cp_model_cc_proto",
"//ortools/sat:cp_model_solver",
"@abseil-cpp//absl/flags:parse",
"@abseil-cpp//absl/log",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/strings:str_format",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/types:span",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 22:37:28 -07:00
name = "slitherlink_sat_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":slitherlink_sat_test.bintest"],
named_data = {"slitherlink_sat": ":slitherlink_sat"},
2023-08-09 22:37:28 -07:00
)
2020-10-21 09:03:08 +02:00
cc_binary(
name = "uncapacitated_facility_location",
srcs = ["uncapacitated_facility_location.cc"],
deps = [
"//ortools/base",
"//ortools/linear_solver",
2025-10-10 09:17:40 +00:00
"//ortools/util:random_engine",
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
"@abseil-cpp//absl/flags:parse",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/flags:usage",
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/log:initialize",
"@abseil-cpp//absl/random",
2020-10-21 09:03:08 +02:00
],
)
cc_binary(
name = "variable_intervals_sat",
srcs = ["variable_intervals_sat.cc"],
deps = [
"//ortools/sat:cp_model",
2025-10-10 09:17:40 +00:00
"//ortools/sat:cp_model_solver",
"//ortools/sat:sat_parameters_cc_proto",
2020-10-21 09:03:08 +02:00
"//ortools/util:time_limit",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log",
2020-10-21 09:03:08 +02:00
],
)
2025-12-01 10:22:54 +01:00
bintest(
2023-08-09 22:37:28 -07:00
name = "variable_intervals_sat_test",
size = "small",
2025-12-01 10:22:54 +01:00
srcs = [":variable_intervals_sat_test.bintest"],
named_data = {"variable_intervals_sat": ":variable_intervals_sat"},
2023-08-09 22:37:28 -07:00
)
cc_binary(
name = "pdlp_solve",
srcs = ["pdlp_solve.cc"],
2020-10-21 09:03:08 +02:00
deps = [
"//ortools/base",
2025-10-10 09:17:40 +00:00
"//ortools/base:file",
2024-03-25 11:59:02 +01:00
"//ortools/pdlp:iteration_stats",
"//ortools/pdlp:primal_dual_hybrid_gradient",
2024-03-25 11:59:02 +01:00
"//ortools/pdlp:quadratic_program",
"//ortools/pdlp:quadratic_program_io",
"//ortools/pdlp:solve_log_cc_proto",
"//ortools/pdlp:solvers_cc_proto",
"//ortools/port:proto_utils",
2024-03-25 11:59:02 +01:00
"//ortools/util:file_util",
"//ortools/util:fp_roundtrip_conv",
"//ortools/util:sigint",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/base:log_severity",
"@abseil-cpp//absl/flags:flag",
"@abseil-cpp//absl/log:check",
"@abseil-cpp//absl/log:flags",
2025-10-10 09:17:40 +00:00
"@abseil-cpp//absl/log:globals",
"@abseil-cpp//absl/strings",
2020-10-21 09:03:08 +02:00
],
)