4354 lines
118 KiB
Python
4354 lines
118 KiB
Python
# Copyright 2010-2025 Google LLC
|
|
# 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.
|
|
|
|
# Home of CP/SAT solver (which includes SAT, max-SAT and PB problems).
|
|
|
|
load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
|
|
load("@protobuf//bazel:java_proto_library.bzl", "java_proto_library")
|
|
load("@protobuf//bazel:proto_library.bzl", "proto_library")
|
|
load("@protobuf//bazel:py_proto_library.bzl", "py_proto_library")
|
|
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
|
|
load("@rules_go//proto:def.bzl", "go_proto_library")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
cc_library(
|
|
name = "cp_model",
|
|
srcs = ["cp_model.cc"],
|
|
hdrs = ["cp_model.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_test",
|
|
size = "small",
|
|
srcs = ["cp_model_test.cc"],
|
|
deps = [
|
|
":cp_model",
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_solver",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:container_logging",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "model",
|
|
hdrs = ["model.h"],
|
|
deps = [
|
|
"//ortools/base",
|
|
"//ortools/base:typeid",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "model_test",
|
|
size = "small",
|
|
srcs = ["model_test.cc"],
|
|
deps = [
|
|
":model",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
proto_library(
|
|
name = "sat_parameters_proto",
|
|
srcs = ["sat_parameters.proto"],
|
|
)
|
|
|
|
cc_proto_library(
|
|
name = "sat_parameters_cc_proto",
|
|
deps = [":sat_parameters_proto"],
|
|
)
|
|
|
|
py_proto_library(
|
|
name = "sat_parameters_py_pb2",
|
|
deps = [":sat_parameters_proto"],
|
|
)
|
|
|
|
java_proto_library(
|
|
name = "sat_parameters_java_proto",
|
|
deps = [":sat_parameters_proto"],
|
|
)
|
|
|
|
go_proto_library(
|
|
name = "sat_parameters_go_proto",
|
|
importpath = "github.com/google/or-tools/ortools/sat/proto/satparameters",
|
|
protos = [":sat_parameters_proto"],
|
|
)
|
|
|
|
proto_library(
|
|
name = "cp_model_proto",
|
|
srcs = ["cp_model.proto"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "2d_distances_propagator",
|
|
srcs = ["2d_distances_propagator.cc"],
|
|
hdrs = ["2d_distances_propagator.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_propagation",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
":precedences",
|
|
":scheduling_helpers",
|
|
":synchronization",
|
|
"//ortools/base:stl_util",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "2d_mandatory_overlap_propagator",
|
|
srcs = ["2d_mandatory_overlap_propagator.cc"],
|
|
hdrs = ["2d_mandatory_overlap_propagator.h"],
|
|
deps = [
|
|
":diffn_util",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
":scheduling_helpers",
|
|
":synchronization",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_copy",
|
|
srcs = ["cp_model_copy.cc"],
|
|
hdrs = ["cp_model_copy.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:protobuf_util",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_copy_test",
|
|
srcs = ["cp_model_copy_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_copy",
|
|
":model",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/base:protobuf_util",
|
|
"//ortools/linear_solver:linear_solver_cc_proto",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "primary_variables",
|
|
srcs = ["primary_variables.cc"],
|
|
hdrs = ["primary_variables.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "primary_variables_test",
|
|
srcs = ["primary_variables_test.cc"],
|
|
deps = [
|
|
":primary_variables",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
],
|
|
)
|
|
|
|
cc_proto_library(
|
|
name = "cp_model_cc_proto",
|
|
deps = [":cp_model_proto"],
|
|
)
|
|
|
|
py_proto_library(
|
|
name = "cp_model_py_pb2",
|
|
deps = [":cp_model_proto"],
|
|
)
|
|
|
|
java_proto_library(
|
|
name = "cp_model_java_proto",
|
|
deps = [":cp_model_proto"],
|
|
)
|
|
|
|
go_proto_library(
|
|
name = "cp_model_go_proto",
|
|
importpath = "github.com/google/or-tools/ortools/sat/proto/cpmodel",
|
|
protos = [":cp_model_proto"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_utils",
|
|
srcs = ["cp_model_utils.cc"],
|
|
hdrs = ["cp_model_utils.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":sat_base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:hash",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/status",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_utils_test",
|
|
size = "small",
|
|
srcs = ["cp_model_utils_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/port:proto_utils",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "synchronization",
|
|
srcs = ["synchronization.cc"],
|
|
hdrs = ["synchronization.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":symmetry_util",
|
|
":util",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base",
|
|
"//ortools/base:status_macros",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/hash",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/status",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/time",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "synchronization_test",
|
|
size = "small",
|
|
srcs = ["synchronization_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":integer_base",
|
|
":model",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:random_engine",
|
|
"@abseil-cpp//absl/time",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_checker",
|
|
srcs = ["cp_model_checker.cc"],
|
|
hdrs = ["cp_model_checker.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":diffn_util",
|
|
":primary_variables",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_checker_test",
|
|
size = "small",
|
|
srcs = ["cp_model_checker_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "constraint_violation",
|
|
srcs = ["constraint_violation.cc"],
|
|
hdrs = ["constraint_violation.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":sat_parameters_cc_proto",
|
|
":util",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:dense_set",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "constraint_violation_test",
|
|
size = "small",
|
|
srcs = ["constraint_violation_test.cc"],
|
|
deps = [
|
|
":constraint_violation",
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
"//ortools/base",
|
|
"//ortools/base:dump_vars",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "feasibility_jump",
|
|
srcs = ["feasibility_jump.cc"],
|
|
hdrs = ["feasibility_jump.h"],
|
|
deps = [
|
|
":combine_solutions",
|
|
":constraint_violation",
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_utils",
|
|
":integer_base",
|
|
":linear_model",
|
|
":restart",
|
|
":sat_parameters_cc_proto",
|
|
":stat_tables",
|
|
":subsolver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/algorithms:binary_search",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/functional:any_invocable",
|
|
"@abseil-cpp//absl/functional:bind_front",
|
|
"@abseil-cpp//absl/functional:function_ref",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "feasibility_jump_test",
|
|
srcs = ["feasibility_jump_test.cc"],
|
|
deps = [
|
|
":feasibility_jump",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "linear_model",
|
|
srcs = ["linear_model.cc"],
|
|
hdrs = ["linear_model.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "linear_model_test",
|
|
size = "small",
|
|
srcs = ["linear_model_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":linear_model",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "parameters_validation",
|
|
srcs = ["parameters_validation.cc"],
|
|
hdrs = ["parameters_validation.h"],
|
|
deps = [
|
|
":cp_model_search",
|
|
":sat_parameters_cc_proto",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "parameters_validation_test",
|
|
size = "small",
|
|
srcs = ["parameters_validation_test.cc"],
|
|
deps = [
|
|
":parameters_validation",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_search",
|
|
srcs = ["cp_model_search.cc"],
|
|
hdrs = ["cp_model_search.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_mapping",
|
|
":cp_model_utils",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":linear_propagation",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_search_test",
|
|
size = "small",
|
|
srcs = ["cp_model_search_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:stats",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_solver_helpers",
|
|
srcs = ["cp_model_solver_helpers.cc"],
|
|
hdrs = ["cp_model_solver_helpers.h"],
|
|
deps = [
|
|
":circuit",
|
|
":clause",
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_loader",
|
|
":cp_model_mapping",
|
|
":cp_model_postsolve",
|
|
":cp_model_presolve",
|
|
":cp_model_search",
|
|
":cp_model_symmetries",
|
|
":cp_model_utils",
|
|
":cuts",
|
|
":feasibility_jump",
|
|
":feasibility_pump",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":integer_search",
|
|
":intervals",
|
|
":lb_tree_search",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":linear_model",
|
|
":linear_programming_constraint",
|
|
":linear_relaxation",
|
|
":lp_utils",
|
|
":max_hs",
|
|
":model",
|
|
":optimization",
|
|
":parameters_validation",
|
|
":precedences",
|
|
":presolve_context",
|
|
":probing",
|
|
":rins",
|
|
":sat_base",
|
|
":sat_inprocessing",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":simplification",
|
|
":stat_tables",
|
|
":subsolver",
|
|
":symmetry_util",
|
|
":synchronization",
|
|
":util",
|
|
":work_assignment",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base",
|
|
"//ortools/base:status_macros",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/base:types",
|
|
"//ortools/graph:connected_components",
|
|
"//ortools/linear_solver:linear_solver_cc_proto",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:random_engine",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/status",
|
|
"@abseil-cpp//absl/status:statusor",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/time",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "shaving_solver",
|
|
srcs = ["shaving_solver.cc"],
|
|
hdrs = ["shaving_solver.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_copy",
|
|
":cp_model_lns",
|
|
":cp_model_presolve",
|
|
":cp_model_solver_helpers",
|
|
":cp_model_utils",
|
|
":integer_base",
|
|
":model",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
":subsolver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/graph:connected_components",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/synchronization",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_solver",
|
|
srcs = ["cp_model_solver.cc"],
|
|
hdrs = ["cp_model_solver.h"],
|
|
deps = [
|
|
":circuit",
|
|
":clause",
|
|
":combine_solutions",
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_copy",
|
|
":cp_model_lns",
|
|
":cp_model_loader",
|
|
":cp_model_mapping",
|
|
":cp_model_postsolve",
|
|
":cp_model_presolve",
|
|
":cp_model_search",
|
|
":cp_model_solver_helpers",
|
|
":cp_model_symmetries",
|
|
":cp_model_utils",
|
|
":cuts",
|
|
":diffn_util",
|
|
":feasibility_jump",
|
|
":feasibility_pump",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":integer_search",
|
|
":intervals",
|
|
":lb_tree_search",
|
|
":linear_constraint",
|
|
":linear_model",
|
|
":linear_programming_constraint",
|
|
":linear_relaxation",
|
|
":lp_utils",
|
|
":max_hs",
|
|
":model",
|
|
":optimization",
|
|
":parameters_validation",
|
|
":precedences",
|
|
":presolve_context",
|
|
":primary_variables",
|
|
":probing",
|
|
":rins",
|
|
":routing_cuts",
|
|
":sat_base",
|
|
":sat_inprocessing",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":shaving_solver",
|
|
":simplification",
|
|
":stat_tables",
|
|
":subsolver",
|
|
":synchronization",
|
|
":util",
|
|
":work_assignment",
|
|
"//ortools/base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:status_macros",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:threadpool",
|
|
"//ortools/base:timer",
|
|
"//ortools/base:types",
|
|
"//ortools/graph:connected_components",
|
|
"//ortools/linear_solver:linear_solver_cc_proto",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:random_engine",
|
|
"//ortools/util:sigint",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/status",
|
|
"@abseil-cpp//absl/status:statusor",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/time",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_solver_test",
|
|
size = "medium",
|
|
srcs = ["cp_model_solver_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_solver",
|
|
":cp_model_test_utils",
|
|
":lp_utils",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/linear_solver:linear_solver_cc_proto",
|
|
"//ortools/util:logging",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_mapping",
|
|
hdrs = ["cp_model_mapping.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_base",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_loader",
|
|
srcs = ["cp_model_loader.cc"],
|
|
hdrs = ["cp_model_loader.h"],
|
|
deps = [
|
|
":2d_distances_propagator",
|
|
":all_different",
|
|
":circuit",
|
|
":clause",
|
|
":cp_constraints",
|
|
":cp_model_cc_proto",
|
|
":cp_model_mapping",
|
|
":cp_model_utils",
|
|
":cumulative",
|
|
":diffn",
|
|
":disjunctive",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":linear_relaxation",
|
|
":model",
|
|
":pb_constraint",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":symmetry",
|
|
":table",
|
|
":timetable",
|
|
":util",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:types",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_test_utils",
|
|
srcs = ["cp_model_test_utils.cc"],
|
|
hdrs = ["cp_model_test_utils.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
"@abseil-cpp//absl/random",
|
|
],
|
|
)
|
|
|
|
proto_library(
|
|
name = "boolean_problem_proto",
|
|
srcs = ["boolean_problem.proto"],
|
|
)
|
|
|
|
cc_proto_library(
|
|
name = "boolean_problem_cc_proto",
|
|
deps = [":boolean_problem_proto"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "presolve_util",
|
|
srcs = ["presolve_util.cc"],
|
|
hdrs = ["presolve_util.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "presolve_util_test",
|
|
size = "small",
|
|
srcs = ["presolve_util_test.cc"],
|
|
deps = [
|
|
":cp_model",
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":presolve_util",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "presolve_context",
|
|
srcs = ["presolve_context.cc"],
|
|
hdrs = ["presolve_context.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_loader",
|
|
":cp_model_mapping",
|
|
":cp_model_utils",
|
|
":integer",
|
|
":lp_utils",
|
|
":model",
|
|
":presolve_util",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":solution_crush",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:affine_relation",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "presolve_context_test",
|
|
size = "small",
|
|
srcs = ["presolve_context_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":model",
|
|
":presolve_context",
|
|
":solution_crush",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:affine_relation",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "solution_crush",
|
|
srcs = [
|
|
"solution_crush.cc",
|
|
],
|
|
hdrs = ["solution_crush.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":diffn_util",
|
|
":sat_parameters_cc_proto",
|
|
":symmetry_util",
|
|
":util",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_table",
|
|
srcs = ["cp_model_table.cc"],
|
|
hdrs = ["cp_model_table.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":presolve_context",
|
|
"//ortools/base:stl_util",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_table_test",
|
|
size = "small",
|
|
srcs = ["cp_model_table_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_table",
|
|
":model",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_presolve",
|
|
srcs = [
|
|
"cp_model_presolve.cc",
|
|
],
|
|
hdrs = ["cp_model_presolve.h"],
|
|
deps = [
|
|
":2d_rectangle_presolve",
|
|
":circuit",
|
|
":clause",
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_expand",
|
|
":cp_model_mapping",
|
|
":cp_model_symmetries",
|
|
":cp_model_table",
|
|
":cp_model_utils",
|
|
":diffn_util",
|
|
":diophantine",
|
|
":inclusion",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":precedences",
|
|
":presolve_context",
|
|
":presolve_util",
|
|
":probing",
|
|
":sat_base",
|
|
":sat_inprocessing",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":simplification",
|
|
":solution_crush",
|
|
":util",
|
|
":var_domination",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:protobuf_util",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/graph:topologicalsorter",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:affine_relation",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/hash",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/status:statusor",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_presolve_test",
|
|
size = "small",
|
|
srcs = ["cp_model_presolve_test.cc"],
|
|
tags = ["noautofuzz"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_presolve",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":lp_utils",
|
|
":model",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/linear_solver:linear_solver_cc_proto",
|
|
"//ortools/lp_data",
|
|
"//ortools/lp_data:lp_parser",
|
|
"//ortools/lp_data:proto_utils",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_presolve_random_test",
|
|
size = "medium",
|
|
srcs = ["cp_model_presolve_random_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:path",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_postsolve",
|
|
srcs = [
|
|
"cp_model_postsolve.cc",
|
|
],
|
|
hdrs = ["cp_model_postsolve.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
"//ortools/base",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/base:log_severity",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_postsolve_test",
|
|
size = "small",
|
|
srcs = ["cp_model_postsolve_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_postsolve",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_expand",
|
|
srcs = ["cp_model_expand.cc"],
|
|
hdrs = ["cp_model_expand.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_table",
|
|
":cp_model_utils",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
":solution_crush",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_expand_test",
|
|
size = "small",
|
|
srcs = ["cp_model_expand_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_expand",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":model",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:container_logging",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "sat_base",
|
|
hdrs = ["sat_base.h"],
|
|
deps = [
|
|
":model",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:types",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "sat_base_test",
|
|
size = "small",
|
|
srcs = ["sat_base_test.cc"],
|
|
deps = [
|
|
":sat_base",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
# Enable a warning to check for floating point to integer conversions.
|
|
# In GCC-4.8, this was "-Wreal-conversion", but was removed in 4.9
|
|
# In Clang, this warning is "-Wfloat-conversion"
|
|
W_FLOAT_CONVERSION = "-Wfloat-conversion"
|
|
|
|
cc_library(
|
|
name = "sat_solver",
|
|
srcs = [
|
|
"sat_solver.cc",
|
|
],
|
|
hdrs = ["sat_solver.h"],
|
|
deps = [
|
|
":clause",
|
|
":drat_proof_handler",
|
|
":model",
|
|
":pb_constraint",
|
|
":restart",
|
|
":sat_base",
|
|
":sat_decision",
|
|
":sat_parameters_cc_proto",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:timer",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/port:sysinfo",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:stats",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "restart",
|
|
srcs = ["restart.cc"],
|
|
hdrs = ["restart.h"],
|
|
deps = [
|
|
":model",
|
|
":sat_decision",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:running_stat",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "restart_test",
|
|
size = "small",
|
|
srcs = ["restart_test.cc"],
|
|
deps = [
|
|
":model",
|
|
":restart",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "probing",
|
|
srcs = ["probing.cc"],
|
|
hdrs = ["probing.h"],
|
|
deps = [
|
|
":clause",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "probing_test",
|
|
size = "small",
|
|
srcs = ["probing_test.cc"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":probing",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "sat_inprocessing",
|
|
srcs = ["sat_inprocessing.cc"],
|
|
hdrs = ["sat_inprocessing.h"],
|
|
deps = [
|
|
":clause",
|
|
":drat_checker",
|
|
":linear_programming_constraint",
|
|
":model",
|
|
":probing",
|
|
":sat_base",
|
|
":sat_decision",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:integer_pq",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "sat_inprocessing_test",
|
|
size = "small",
|
|
srcs = ["sat_inprocessing_test.cc"],
|
|
deps = [
|
|
":clause",
|
|
":model",
|
|
":sat_base",
|
|
":sat_inprocessing",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "sat_decision",
|
|
srcs = ["sat_decision.cc"],
|
|
hdrs = ["sat_decision.h"],
|
|
deps = [
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:integer_pq",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "sat_decision_test",
|
|
size = "small",
|
|
srcs = ["sat_decision_test.cc"],
|
|
deps = [
|
|
":model",
|
|
":sat_base",
|
|
":sat_decision",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/random",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "clause",
|
|
srcs = ["clause.cc"],
|
|
hdrs = ["clause.h"],
|
|
deps = [
|
|
":drat_proof_handler",
|
|
":inclusion",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/graph:cliques",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:stats",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/functional:any_invocable",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "clause_test",
|
|
size = "small",
|
|
srcs = ["clause_test.cc"],
|
|
deps = [
|
|
":clause",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "simplification",
|
|
srcs = ["simplification.cc"],
|
|
hdrs = ["simplification.h"],
|
|
deps = [
|
|
":drat_proof_handler",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/algorithms:dynamic_partition",
|
|
"//ortools/base",
|
|
"//ortools/base:adjustable_priority_queue",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "pb_constraint",
|
|
srcs = ["pb_constraint.cc"],
|
|
hdrs = ["pb_constraint.h"],
|
|
deps = [
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:stats",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/hash",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "pb_constraint_test",
|
|
size = "small",
|
|
srcs = ["pb_constraint_test.cc"],
|
|
deps = [
|
|
":model",
|
|
":pb_constraint",
|
|
":sat_base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "symmetry",
|
|
srcs = ["symmetry.cc"],
|
|
hdrs = ["symmetry.h"],
|
|
deps = [
|
|
":sat_base",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:stats",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "symmetry_test",
|
|
size = "small",
|
|
srcs = ["symmetry_test.cc"],
|
|
deps = [
|
|
":sat_base",
|
|
":symmetry",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "symmetry_util",
|
|
srcs = ["symmetry_util.cc"],
|
|
hdrs = ["symmetry_util.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
"//ortools/algorithms:dynamic_partition",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "symmetry_util_test",
|
|
size = "small",
|
|
srcs = ["symmetry_util_test.cc"],
|
|
deps = [
|
|
":symmetry_util",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "var_domination",
|
|
srcs = ["var_domination.cc"],
|
|
hdrs = ["var_domination.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":integer_base",
|
|
":presolve_context",
|
|
":presolve_util",
|
|
":solution_crush",
|
|
":util",
|
|
"//ortools/algorithms:dynamic_partition",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:affine_relation",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "var_domination_test",
|
|
size = "small",
|
|
srcs = ["var_domination_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":integer_base",
|
|
":model",
|
|
":presolve_context",
|
|
":var_domination",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "integer_base",
|
|
srcs = ["integer_base.cc"],
|
|
hdrs = ["integer_base.h"],
|
|
deps = [
|
|
":sat_base",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "integer_base_test",
|
|
size = "small",
|
|
srcs = ["integer_base_test.cc"],
|
|
deps = [
|
|
":integer_base",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "integer",
|
|
srcs = ["integer.cc"],
|
|
hdrs = ["integer.h"],
|
|
deps = [
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:rev",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "integer_search",
|
|
srcs = ["integer_search.cc"],
|
|
hdrs = ["integer_search.h"],
|
|
deps = [
|
|
":clause",
|
|
":cp_model_cc_proto",
|
|
":cp_model_mapping",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":linear_constraint_manager",
|
|
":linear_programming_constraint",
|
|
":model",
|
|
":probing",
|
|
":pseudo_costs",
|
|
":restart",
|
|
":rins",
|
|
":sat_base",
|
|
":sat_decision",
|
|
":sat_inprocessing",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":scheduling_helpers",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "integer_search_test",
|
|
size = "small",
|
|
srcs = ["integer_search_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_mapping",
|
|
":cp_model_solver",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:random_engine",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "lb_tree_search",
|
|
srcs = ["lb_tree_search.cc"],
|
|
hdrs = ["lb_tree_search.h"],
|
|
deps = [
|
|
":cp_model_mapping",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":integer_search",
|
|
":linear_programming_constraint",
|
|
":model",
|
|
":pseudo_costs",
|
|
":sat_base",
|
|
":sat_decision",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/glop:variables_info",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "lb_tree_search_test",
|
|
size = "small",
|
|
srcs = ["lb_tree_search_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":cp_model_test_utils",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "pseudo_costs",
|
|
srcs = ["pseudo_costs.cc"],
|
|
hdrs = ["pseudo_costs.h"],
|
|
deps = [
|
|
":cp_model_mapping",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint_manager",
|
|
":linear_programming_constraint",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "pseudo_costs_test",
|
|
size = "small",
|
|
srcs = ["pseudo_costs_test.cc"],
|
|
deps = [
|
|
":cp_model_mapping",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":pseudo_costs",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:strong_integers",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "intervals",
|
|
srcs = ["intervals.cc"],
|
|
hdrs = ["intervals.h"],
|
|
deps = [
|
|
":clause",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":linear_constraint",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_solver",
|
|
":scheduling_helpers",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "intervals_test",
|
|
size = "small",
|
|
srcs = ["intervals_test.cc"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":model",
|
|
":sat_base",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "scheduling_helpers",
|
|
srcs = ["scheduling_helpers.cc"],
|
|
hdrs = ["scheduling_helpers.h"],
|
|
deps = [
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":linear_constraint",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:sort",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "no_overlap_2d_helper",
|
|
srcs = ["no_overlap_2d_helper.cc"],
|
|
hdrs = ["no_overlap_2d_helper.h"],
|
|
deps = [
|
|
":2d_rectangle_presolve",
|
|
":diffn_util",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
":scheduling_helpers",
|
|
":util",
|
|
"@abseil-cpp//absl/base:log_severity",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "scheduling_helpers_test",
|
|
size = "small",
|
|
srcs = ["scheduling_helpers_test.cc"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
":scheduling_helpers",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "precedences",
|
|
srcs = ["precedences.cc"],
|
|
hdrs = ["precedences.h"],
|
|
deps = [
|
|
":clause",
|
|
":cp_constraints",
|
|
":cp_model_mapping",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/graph",
|
|
"//ortools/graph:topologicalsorter",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:rev",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "precedences_test",
|
|
size = "small",
|
|
srcs = ["precedences_test.cc"],
|
|
deps = [
|
|
":cp_model_mapping",
|
|
":cp_model_solver_helpers",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "integer_test",
|
|
size = "small",
|
|
srcs = ["integer_test.cc"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@google_benchmark//:benchmark",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "integer_expr",
|
|
srcs = ["integer_expr.cc"],
|
|
hdrs = ["integer_expr.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":linear_propagation",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "integer_expr_test",
|
|
size = "medium",
|
|
srcs = ["integer_expr_test.cc"],
|
|
deps = [
|
|
"cp_model_checker",
|
|
"cp_model_solver",
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "linear_propagation",
|
|
srcs = ["linear_propagation.cc"],
|
|
hdrs = ["linear_propagation.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:rev",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/base:log_severity",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "linear_propagation_test",
|
|
size = "small",
|
|
srcs = ["linear_propagation_test.cc"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":linear_propagation",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "all_different",
|
|
srcs = ["all_different.cc"],
|
|
hdrs = ["all_different.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:sort",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "all_different_test",
|
|
srcs = ["all_different_test.cc"],
|
|
deps = [
|
|
":all_different",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":model",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "disjunctive",
|
|
srcs = ["disjunctive.cc"],
|
|
hdrs = ["disjunctive.h"],
|
|
deps = [
|
|
":all_different",
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":linear_propagation",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":synchronization",
|
|
":timetable",
|
|
":util",
|
|
"//ortools/util:scheduling",
|
|
"//ortools/util:sort",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "disjunctive_test",
|
|
size = "small",
|
|
srcs = ["disjunctive_test.cc"],
|
|
deps = [
|
|
":disjunctive",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":integer_search",
|
|
":intervals",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "timetable",
|
|
srcs = ["timetable.cc"],
|
|
hdrs = ["timetable.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":model",
|
|
":sat_base",
|
|
":scheduling_helpers",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "timetable_test",
|
|
size = "medium",
|
|
srcs = ["timetable_test.cc"],
|
|
deps = [
|
|
":all_different",
|
|
":cumulative",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":intervals",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_solver",
|
|
":scheduling_helpers",
|
|
":timetable",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "timetable_edgefinding",
|
|
srcs = ["timetable_edgefinding.cc"],
|
|
hdrs = ["timetable_edgefinding.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":model",
|
|
":scheduling_helpers",
|
|
"//ortools/base:iterator_adaptors",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cumulative",
|
|
srcs = ["cumulative.cc"],
|
|
hdrs = ["cumulative.h"],
|
|
deps = [
|
|
":cumulative_energy",
|
|
":disjunctive",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":model",
|
|
":pb_constraint",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":timetable",
|
|
":timetable_edgefinding",
|
|
"//ortools/base",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cumulative_test",
|
|
size = "large",
|
|
srcs = ["cumulative_test.cc"],
|
|
shard_count = 32,
|
|
deps = [
|
|
":cumulative",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":intervals",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cumulative_energy",
|
|
srcs = ["cumulative_energy.cc"],
|
|
hdrs = ["cumulative_energy.h"],
|
|
deps = [
|
|
":2d_orthogonal_packing",
|
|
":diffn_util",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":scheduling_helpers",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base:iterator_adaptors",
|
|
"//ortools/util:scheduling",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cumulative_energy_test",
|
|
size = "medium",
|
|
srcs = ["cumulative_energy_test.cc"],
|
|
deps = [
|
|
":2d_orthogonal_packing_testing",
|
|
":cp_model_solver",
|
|
":cumulative",
|
|
":cumulative_energy",
|
|
":diffn_util",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":scheduling_helpers",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "boolean_problem",
|
|
srcs = ["boolean_problem.cc"],
|
|
hdrs = ["boolean_problem.h"],
|
|
deps = [
|
|
":boolean_problem_cc_proto",
|
|
":cp_model_cc_proto",
|
|
":pb_constraint",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":simplification",
|
|
"//ortools/algorithms:find_graph_symmetries",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base",
|
|
"//ortools/base:hash",
|
|
"//ortools/base:status_macros",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/graph",
|
|
"//ortools/graph:io",
|
|
"//ortools/graph:util",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/status",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "linear_relaxation",
|
|
srcs = ["linear_relaxation.cc"],
|
|
hdrs = ["linear_relaxation.h"],
|
|
deps = [
|
|
":circuit",
|
|
":clause",
|
|
":cp_model_cc_proto",
|
|
":cp_model_mapping",
|
|
":cp_model_utils",
|
|
":cuts",
|
|
":diffn_cuts",
|
|
":diffn_util",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
":precedences",
|
|
":presolve_util",
|
|
":routing_cuts",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":scheduling_cuts",
|
|
":scheduling_helpers",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "linear_relaxation_test",
|
|
srcs = ["linear_relaxation_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_loader",
|
|
":cp_model_mapping",
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":linear_relaxation",
|
|
":model",
|
|
":sat_base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "linear_constraint",
|
|
srcs = ["linear_constraint.cc"],
|
|
hdrs = ["linear_constraint.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "linear_constraint_test",
|
|
srcs = ["linear_constraint_test.cc"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "linear_programming_constraint",
|
|
srcs = ["linear_programming_constraint.cc"],
|
|
hdrs = ["linear_programming_constraint.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_mapping",
|
|
":cuts",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":linear_propagation",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
":zero_half_cuts",
|
|
"//ortools/algorithms:binary_search",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/glop:parameters_cc_proto",
|
|
"//ortools/glop:revised_simplex",
|
|
"//ortools/glop:status",
|
|
"//ortools/glop:variables_info",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/lp_data:lp_data_utils",
|
|
"//ortools/lp_data:scattered_vector",
|
|
"//ortools/lp_data:sparse",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:rev",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "linear_programming_constraint_test",
|
|
srcs = ["linear_programming_constraint_test.cc"],
|
|
deps = [
|
|
":cp_model_solver",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":linear_programming_constraint",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "linear_constraint_manager",
|
|
srcs = ["linear_constraint_manager.cc"],
|
|
hdrs = ["linear_constraint_manager.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:hash",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/glop:variables_info",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "linear_constraint_manager_test",
|
|
srcs = ["linear_constraint_manager_test.cc"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/glop:variables_info",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:strong_integers",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cuts",
|
|
srcs = ["cuts.cc"],
|
|
hdrs = ["cuts.h"],
|
|
deps = [
|
|
":clause",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":sat_base",
|
|
":synchronization",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/functional:any_invocable",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cuts_test",
|
|
srcs = ["cuts_test.cc"],
|
|
deps = [
|
|
":cuts",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:fp_utils",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
proto_library(
|
|
name = "routes_support_graph_proto",
|
|
srcs = ["routes_support_graph.proto"],
|
|
)
|
|
|
|
cc_proto_library(
|
|
name = "routes_support_graph_cc_proto",
|
|
deps = [":routes_support_graph_proto"],
|
|
)
|
|
|
|
cc_library(
|
|
name = "routing_cuts",
|
|
srcs = ["routing_cuts.cc"],
|
|
hdrs = ["routing_cuts.h"],
|
|
deps = [
|
|
":clause",
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":cuts",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":precedences",
|
|
":routes_support_graph_cc_proto",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/graph",
|
|
"//ortools/graph:connected_components",
|
|
"//ortools/graph:max_flow",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/numeric:bits",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "routing_cuts_test",
|
|
srcs = ["routing_cuts_test.cc"],
|
|
deps = [
|
|
":clause",
|
|
":cp_model",
|
|
":cuts",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":precedences",
|
|
":routing_cuts",
|
|
":sat_base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/graph:max_flow",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "scheduling_cuts",
|
|
srcs = ["scheduling_cuts.cc"],
|
|
hdrs = ["scheduling_cuts.h"],
|
|
deps = [
|
|
":cuts",
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_solver",
|
|
":scheduling_helpers",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "scheduling_cuts_test",
|
|
srcs = ["scheduling_cuts_test.cc"],
|
|
deps = [
|
|
":cp_model",
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":cuts",
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":sat_base",
|
|
":scheduling_cuts",
|
|
":scheduling_helpers",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/base:log_severity",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "diffn_cuts",
|
|
srcs = ["diffn_cuts.cc"],
|
|
hdrs = ["diffn_cuts.h"],
|
|
deps = [
|
|
":cuts",
|
|
":diffn_util",
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":intervals",
|
|
":linear_constraint",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
":sat_base",
|
|
":scheduling_helpers",
|
|
":util",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "zero_half_cuts",
|
|
srcs = ["zero_half_cuts.cc"],
|
|
hdrs = ["zero_half_cuts.h"],
|
|
deps = [
|
|
":integer_base",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "zero_half_cuts_test",
|
|
srcs = ["zero_half_cuts_test.cc"],
|
|
deps = [
|
|
":integer_base",
|
|
":zero_half_cuts",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/lp_data:base",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "lp_utils",
|
|
srcs = ["lp_utils.cc"],
|
|
hdrs = ["lp_utils.h"],
|
|
deps = [
|
|
":boolean_problem",
|
|
":boolean_problem_cc_proto",
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
":integer_base",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/glop:lp_solver",
|
|
"//ortools/glop:parameters_cc_proto",
|
|
"//ortools/linear_solver:linear_solver_cc_proto",
|
|
"//ortools/lp_data",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:fp_utils",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "optimization",
|
|
srcs = ["optimization.cc"],
|
|
hdrs = ["optimization.h"],
|
|
deps = [
|
|
":boolean_problem_cc_proto",
|
|
":clause",
|
|
":encoding",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":integer_search",
|
|
":model",
|
|
":pb_constraint",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "max_hs",
|
|
srcs = ["max_hs.cc"],
|
|
hdrs = ["max_hs.h"],
|
|
deps = [
|
|
":boolean_problem",
|
|
":cp_model_cc_proto",
|
|
":cp_model_mapping",
|
|
":cp_model_utils",
|
|
":encoding",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":integer_search",
|
|
":linear_constraint",
|
|
":linear_relaxation",
|
|
":model",
|
|
":optimization",
|
|
":pb_constraint",
|
|
":presolve_util",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/base:timer",
|
|
"//ortools/linear_solver:linear_solver_cc_proto",
|
|
"//ortools/port:proto_utils",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/cleanup",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "optimization_test",
|
|
srcs = ["optimization_test.cc"],
|
|
deps = [
|
|
":boolean_problem_cc_proto",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":model",
|
|
":optimization",
|
|
":pb_constraint",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "util",
|
|
srcs = ["util.cc"],
|
|
hdrs = ["util.h"],
|
|
deps = [
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/util:random_engine",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:log_streamer",
|
|
"@abseil-cpp//absl/numeric:bits",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "util_test",
|
|
srcs = ["util_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:mathutil",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/util:random_engine",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/numeric:bits",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@google_benchmark//:benchmark",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "stat_tables",
|
|
srcs = ["stat_tables.cc"],
|
|
hdrs = ["stat_tables.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":linear_programming_constraint",
|
|
":model",
|
|
":sat_solver",
|
|
":subsolver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:logging",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/synchronization",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "table",
|
|
srcs = ["table.cc"],
|
|
hdrs = ["table.h"],
|
|
deps = [
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "table_test",
|
|
srcs = ["table_test.cc"],
|
|
deps = [
|
|
":cp_model",
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":integer",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":table",
|
|
"//ortools/base",
|
|
"//ortools/base:container_logging",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_constraints",
|
|
srcs = ["cp_constraints.cc"],
|
|
hdrs = ["cp_constraints.h"],
|
|
deps = [
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
"//ortools/base",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_constraints_test",
|
|
srcs = ["cp_constraints_test.cc"],
|
|
deps = [
|
|
":cp_constraints",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":model",
|
|
":precedences",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "diffn_util",
|
|
srcs = ["diffn_util.cc"],
|
|
hdrs = ["diffn_util.h"],
|
|
deps = [
|
|
":integer_base",
|
|
":scheduling_helpers",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/graph:connected_components",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/util:fixed_shape_binary_tree",
|
|
"//ortools/util:integer_pq",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:optional",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "2d_orthogonal_packing",
|
|
srcs = ["2d_orthogonal_packing.cc"],
|
|
hdrs = ["2d_orthogonal_packing.h"],
|
|
deps = [
|
|
":2d_packing_brute_force",
|
|
":integer_base",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base:constant_divisor",
|
|
"//ortools/util:bitset",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/numeric:bits",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "2d_packing_brute_force",
|
|
srcs = ["2d_packing_brute_force.cc"],
|
|
hdrs = ["2d_packing_brute_force.h"],
|
|
deps = [
|
|
":diffn_util",
|
|
":integer_base",
|
|
":util",
|
|
"//ortools/util:bitset",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "2d_packing_brute_force_test",
|
|
srcs = ["2d_packing_brute_force_test.cc"],
|
|
deps = [
|
|
":2d_packing_brute_force",
|
|
":cp_model",
|
|
":cp_model_solver",
|
|
":diffn_util",
|
|
":integer_base",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@google_benchmark//:benchmark",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "2d_rectangle_presolve",
|
|
srcs = ["2d_rectangle_presolve.cc"],
|
|
hdrs = ["2d_rectangle_presolve.h"],
|
|
deps = [
|
|
":diffn_util",
|
|
":integer_base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/graph:minimum_vertex_cover",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@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/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "2d_rectangle_presolve_test",
|
|
srcs = ["2d_rectangle_presolve_test.cc"],
|
|
deps = [
|
|
":2d_orthogonal_packing_testing",
|
|
":2d_rectangle_presolve",
|
|
":diffn_util",
|
|
":integer_base",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "2d_orthogonal_packing_testing",
|
|
testonly = 1,
|
|
srcs = ["2d_orthogonal_packing_testing.cc"],
|
|
hdrs = ["2d_orthogonal_packing_testing.h"],
|
|
deps = [
|
|
":diffn_util",
|
|
":integer_base",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "2d_orthogonal_packing_test",
|
|
srcs = ["2d_orthogonal_packing_test.cc"],
|
|
deps = [
|
|
":2d_orthogonal_packing",
|
|
":2d_orthogonal_packing_testing",
|
|
":diffn_util",
|
|
":integer_base",
|
|
":synchronization",
|
|
"//ortools/algorithms:binary_search",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@google_benchmark//:benchmark",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "2d_try_edge_propagator",
|
|
srcs = ["2d_try_edge_propagator.cc"],
|
|
hdrs = ["2d_try_edge_propagator.h"],
|
|
deps = [
|
|
":diffn_util",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/set_cover:base_types",
|
|
"//ortools/set_cover:set_cover_heuristics",
|
|
"//ortools/set_cover:set_cover_invariant",
|
|
"//ortools/set_cover:set_cover_model",
|
|
"//ortools/util:bitset",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "2d_try_edge_propagator_test",
|
|
srcs = ["2d_try_edge_propagator_test.cc"],
|
|
deps = [
|
|
":2d_orthogonal_packing_testing",
|
|
":2d_try_edge_propagator",
|
|
":diffn_util",
|
|
":integer_base",
|
|
":intervals",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "diffn_util_test",
|
|
size = "small",
|
|
srcs = ["diffn_util_test.cc"],
|
|
deps = [
|
|
":2d_orthogonal_packing_testing",
|
|
":diffn_util",
|
|
":integer_base",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock",
|
|
"//ortools/graph:connected_components",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@fuzztest//fuzztest:fuzztest_gtest_main",
|
|
"@google_benchmark//:benchmark",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "diffn",
|
|
srcs = ["diffn.cc"],
|
|
hdrs = ["diffn.h"],
|
|
deps = [
|
|
":2d_distances_propagator",
|
|
":2d_mandatory_overlap_propagator",
|
|
":2d_orthogonal_packing",
|
|
":2d_try_edge_propagator",
|
|
":clause",
|
|
":cumulative_energy",
|
|
":diffn_util",
|
|
":disjunctive",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_expr",
|
|
":intervals",
|
|
":model",
|
|
":no_overlap_2d_helper",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":scheduling_helpers",
|
|
":synchronization",
|
|
":timetable",
|
|
":util",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:inlined_vector",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/numeric:bits",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "diffn_test",
|
|
size = "small",
|
|
srcs = ["diffn_test.cc"],
|
|
deps = [
|
|
":cp_model",
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":diffn",
|
|
":diffn_util",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":intervals",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "circuit",
|
|
srcs = ["circuit.cc"],
|
|
hdrs = ["circuit.h"],
|
|
deps = [
|
|
":all_different",
|
|
":clause",
|
|
":integer",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"//ortools/util:rev",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "circuit_test",
|
|
srcs = ["circuit_test.cc"],
|
|
deps = [
|
|
":circuit",
|
|
":integer",
|
|
":integer_search",
|
|
":model",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/graph:strongly_connected_components",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "encoding",
|
|
srcs = ["encoding.cc"],
|
|
hdrs = ["encoding.h"],
|
|
deps = [
|
|
":boolean_problem_cc_proto",
|
|
":clause",
|
|
":model",
|
|
":pb_constraint",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "encoding_test",
|
|
srcs = ["encoding_test.cc"],
|
|
deps = [
|
|
":encoding",
|
|
":pb_constraint",
|
|
":sat_base",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_lns",
|
|
srcs = ["cp_model_lns.cc"],
|
|
hdrs = ["cp_model_lns.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_copy",
|
|
":cp_model_mapping",
|
|
":cp_model_solver_helpers",
|
|
":cp_model_utils",
|
|
":diffn_util",
|
|
":integer_base",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":presolve_context",
|
|
":rins",
|
|
":sat_parameters_cc_proto",
|
|
":subsolver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/graph:connected_components",
|
|
"//ortools/util:adaptative_parameter_value",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:integer_pq",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@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",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_lns_test",
|
|
size = "small",
|
|
srcs = ["cp_model_lns_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_lns",
|
|
":cp_model_solver",
|
|
":cp_model_solver_helpers",
|
|
":cp_model_test_utils",
|
|
":cp_model_utils",
|
|
":integer_base",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:random_engine",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "feasibility_pump",
|
|
srcs = ["feasibility_pump.cc"],
|
|
hdrs = ["feasibility_pump.h"],
|
|
deps = [
|
|
":cp_model_mapping",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/glop:parameters_cc_proto",
|
|
"//ortools/glop:revised_simplex",
|
|
"//ortools/glop:status",
|
|
"//ortools/lp_data",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/lp_data:lp_data_utils",
|
|
"//ortools/lp_data:sparse_column",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "feasibility_pump_test",
|
|
size = "small",
|
|
srcs = ["feasibility_pump_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_loader",
|
|
":cp_model_mapping",
|
|
":feasibility_pump",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "rins",
|
|
srcs = ["rins.cc"],
|
|
hdrs = ["rins.h"],
|
|
deps = [
|
|
":cp_model_mapping",
|
|
":integer_base",
|
|
":linear_constraint_manager",
|
|
":model",
|
|
":synchronization",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/random:bit_gen_ref",
|
|
"@abseil-cpp//absl/random:distributions",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "rins_test",
|
|
size = "small",
|
|
srcs = ["rins_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_loader",
|
|
":model",
|
|
":rins",
|
|
":synchronization",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:random_engine",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "subsolver",
|
|
srcs = ["subsolver.cc"],
|
|
hdrs = ["subsolver.h"],
|
|
deps = [
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/base:threadpool",
|
|
"//ortools/base:timer",
|
|
"//ortools/base:types",
|
|
"//ortools/util:stats",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/time",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "subsolver_test",
|
|
size = "small",
|
|
srcs = ["subsolver_test.cc"],
|
|
deps = [
|
|
":model",
|
|
":subsolver",
|
|
":util",
|
|
"//ortools/base:gmock_main",
|
|
"@abseil-cpp//absl/synchronization",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "drat_proof_handler",
|
|
srcs = ["drat_proof_handler.cc"],
|
|
hdrs = ["drat_proof_handler.h"],
|
|
deps = [
|
|
":drat_checker",
|
|
":drat_writer",
|
|
":sat_base",
|
|
"//ortools/base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "drat_checker",
|
|
srcs = ["drat_checker.cc"],
|
|
hdrs = ["drat_checker.h"],
|
|
deps = [
|
|
":sat_base",
|
|
"//ortools/base",
|
|
"//ortools/base:hash",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/time",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "drat_checker_test",
|
|
srcs = ["drat_checker_test.cc"],
|
|
deps = [
|
|
":drat_checker",
|
|
":sat_base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:path",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "drat_writer",
|
|
srcs = ["drat_writer.cc"],
|
|
hdrs = ["drat_writer.h"],
|
|
deps = [
|
|
":sat_base",
|
|
"//ortools/base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:status_macros",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/status",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "opb_reader",
|
|
hdrs = ["opb_reader.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_utils",
|
|
"//ortools/base",
|
|
"//ortools/base:stl_util",
|
|
"//ortools/util:filelineiter",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "opb_reader_test",
|
|
size = "small",
|
|
srcs = [
|
|
"opb_reader_test.cc",
|
|
],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_symmetries",
|
|
":opb_reader",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:path",
|
|
"//ortools/util:filelineiter",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_binary(
|
|
name = "sat_runner",
|
|
srcs = [
|
|
"sat_runner.cc",
|
|
],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":model",
|
|
":opb_reader",
|
|
":sat_cnf_reader",
|
|
":sat_parameters_cc_proto",
|
|
":synchronization",
|
|
"//ortools/base",
|
|
"//ortools/base:file",
|
|
"//ortools/base:path",
|
|
"//ortools/util:file_util",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sigint",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:flags",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "sat_cnf_reader",
|
|
hdrs = ["sat_cnf_reader.h"],
|
|
deps = [
|
|
":boolean_problem_cc_proto",
|
|
":cp_model_cc_proto",
|
|
"//ortools/base",
|
|
"//ortools/util:filelineiter",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/flags:flag",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "sat_cnf_reader_test",
|
|
size = "small",
|
|
srcs = [
|
|
"sat_cnf_reader_test.cc",
|
|
],
|
|
deps = [
|
|
":boolean_problem",
|
|
":boolean_problem_cc_proto",
|
|
":sat_cnf_reader",
|
|
"//ortools/base:file",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:path",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:string_view",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "cp_model_symmetries",
|
|
srcs = ["cp_model_symmetries.cc"],
|
|
hdrs = ["cp_model_symmetries.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_mapping",
|
|
":cp_model_utils",
|
|
":model",
|
|
":presolve_context",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":solution_crush",
|
|
":symmetry_util",
|
|
":util",
|
|
"//ortools/algorithms:binary_search",
|
|
"//ortools/algorithms:find_graph_symmetries",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base",
|
|
"//ortools/base:hash",
|
|
"//ortools/graph",
|
|
"//ortools/util:affine_relation",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:saturated_arithmetic",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/algorithm:container",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/status",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
"@protobuf",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "cp_model_symmetries_test",
|
|
srcs = ["cp_model_symmetries_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_symmetries",
|
|
":model",
|
|
":presolve_context",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/algorithms:sparse_permutation",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "swig_helper",
|
|
srcs = ["swig_helper.cc"],
|
|
hdrs = ["swig_helper.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_solver",
|
|
":cp_model_utils",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
":util",
|
|
"//ortools/util:logging",
|
|
"//ortools/util:sorted_interval_list",
|
|
"@abseil-cpp//absl/log:check",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "implied_bounds",
|
|
srcs = ["implied_bounds.cc"],
|
|
hdrs = ["implied_bounds.h"],
|
|
deps = [
|
|
"linear_constraint",
|
|
":clause",
|
|
":integer",
|
|
":integer_base",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":synchronization",
|
|
"//ortools/base",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:sorted_interval_list",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:btree",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/log:vlog_is_on",
|
|
"@abseil-cpp//absl/meta:type_traits",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "implied_bounds_test",
|
|
size = "small",
|
|
srcs = ["implied_bounds_test.cc"],
|
|
deps = [
|
|
":implied_bounds",
|
|
":integer",
|
|
":integer_base",
|
|
":linear_constraint",
|
|
":model",
|
|
":sat_base",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:strong_vector",
|
|
"//ortools/lp_data:base",
|
|
"//ortools/util:strong_integers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "inclusion",
|
|
hdrs = ["inclusion.h"],
|
|
deps = [
|
|
":util",
|
|
"//ortools/base",
|
|
"//ortools/util:bitset",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "diophantine",
|
|
srcs = ["diophantine.cc"],
|
|
hdrs = ["diophantine.h"],
|
|
deps = [
|
|
":util",
|
|
"//ortools/base:mathutil",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "combine_solutions",
|
|
srcs = ["combine_solutions.cc"],
|
|
hdrs = ["combine_solutions.h"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":model",
|
|
":synchronization",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "combine_solutions_test",
|
|
srcs = ["combine_solutions_test.cc"],
|
|
deps = [
|
|
":combine_solutions",
|
|
":model",
|
|
":synchronization",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "work_assignment",
|
|
srcs = ["work_assignment.cc"],
|
|
hdrs = ["work_assignment.h"],
|
|
deps = [
|
|
":cp_model_mapping",
|
|
":cp_model_utils",
|
|
":integer",
|
|
":integer_base",
|
|
":integer_search",
|
|
":model",
|
|
":restart",
|
|
":sat_base",
|
|
":sat_decision",
|
|
":sat_parameters_cc_proto",
|
|
":sat_solver",
|
|
":synchronization",
|
|
":util",
|
|
"//ortools/util:running_stat",
|
|
"//ortools/util:strong_integers",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/base:core_headers",
|
|
"@abseil-cpp//absl/container:flat_hash_map",
|
|
"@abseil-cpp//absl/container:flat_hash_set",
|
|
"@abseil-cpp//absl/container:node_hash_map",
|
|
"@abseil-cpp//absl/log",
|
|
"@abseil-cpp//absl/log:check",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/synchronization",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "work_assignment_test",
|
|
srcs = ["work_assignment_test.cc"],
|
|
deps = [
|
|
":cp_model",
|
|
":cp_model_cc_proto",
|
|
":cp_model_checker",
|
|
":cp_model_loader",
|
|
":cp_model_solver",
|
|
":model",
|
|
":sat_parameters_cc_proto",
|
|
":synchronization",
|
|
":work_assignment",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_text_proto",
|
|
"@abseil-cpp//absl/strings:string_view",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "diophantine_test",
|
|
srcs = ["diophantine_test.cc"],
|
|
deps = [
|
|
":diophantine",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:mathutil",
|
|
"@abseil-cpp//absl/base:log_severity",
|
|
"@abseil-cpp//absl/numeric:int128",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/strings",
|
|
"@abseil-cpp//absl/strings:str_format",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "inclusion_test",
|
|
size = "small",
|
|
srcs = ["inclusion_test.cc"],
|
|
deps = [
|
|
":inclusion",
|
|
":util",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/util:time_limit",
|
|
"@abseil-cpp//absl/random",
|
|
"@abseil-cpp//absl/types:span",
|
|
],
|
|
)
|
|
|
|
cc_test(
|
|
name = "flaky_models_test",
|
|
size = "small",
|
|
srcs = ["flaky_models_test.cc"],
|
|
deps = [
|
|
":cp_model_cc_proto",
|
|
":cp_model_solver",
|
|
":sat_parameters_cc_proto",
|
|
"//ortools/base:gmock_main",
|
|
"//ortools/base:parse_test_proto",
|
|
],
|
|
)
|