# 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. load("@rules_cc//cc:cc_binary.bzl", "cc_binary") load("@rules_cc//cc:cc_library.bzl", "cc_library") load("//tools/testing:bintest.bzl", "bintest") # Description: # C++ examples for operations_research. package(default_visibility = ["//visibility:public"]) cc_binary( name = "binpacking_2d_sat", srcs = ["binpacking_2d_sat.cc"], deps = [ "//ortools/base", "//ortools/base:mathutil", "//ortools/base:path", "//ortools/packing:binpacking_2d_parser", "//ortools/packing:multiple_dimensions_bin_packing_cc_proto", "//ortools/sat:cp_model", "//ortools/sat:cp_model_cc_proto", "//ortools/sat:cp_model_solver", "//ortools/sat:sat_parameters_cc_proto", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/types:span", "@protobuf", ], ) bintest( name = "binpacking_2d_sat_class01_instance2_test", size = "medium", srcs = [":binpacking_2d_sat_class01_instance2_test.bintest"], named_data = { "binpacking_2d_sat": ":binpacking_2d_sat", "Class_01.2bp": "//ortools/packing/testdata:Class_01.2bp", }, ) cc_library( name = "cgc", srcs = ["cgc.cc"], hdrs = [ "cgc.h", "cgc_data.h", ], deps = [ "//ortools/base", "//ortools/base:file", "//ortools/constraint_solver:cp", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/time", "@abseil-cpp//absl/types:span", "@re2", ], ) cc_binary( name = "cgc_main", srcs = ["cgc_main.cc"], deps = [ ":cgc", "//ortools/base", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/time", ], ) bintest( name = "cgc_test_solution", size = "small", srcs = [":cgc_test_solution.bintest"], named_data = { "cgc_main": ":cgc_main", "1.in": "testdata/cgc/1.in", "2.in": "testdata/cgc/2.in", "3.in": "testdata/cgc/3.in", "cgcut1.in": "testdata/cgc/cgcut1.in", "cgcut2.in": "testdata/cgc/cgcut2.in", "cgcut3.in": "testdata/cgc/cgcut3.in", }, ) cc_binary( name = "constraint_programming_cp", srcs = ["constraint_programming_cp.cc"], deps = [ "//ortools/base", "//ortools/constraint_solver:cp", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", ], ) bintest( name = "constraint_programming_cp_test", size = "small", srcs = [":constraint_programming_cp_test.bintest"], named_data = {"constraint_programming_cp": ":constraint_programming_cp"}, ) cc_binary( name = "costas_array_sat", srcs = ["costas_array_sat.cc"], deps = [ "//ortools/base", "//ortools/base:types", "//ortools/sat:cp_model", "//ortools/sat:model", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/types:span", ], ) bintest( name = "costas_array_sat_model1_test", size = "medium", srcs = [":costas_array_sat_model1_test.bintest"], named_data = {"costas_array_sat": ":costas_array_sat"}, ) bintest( name = "costas_array_sat_model2_test", size = "medium", srcs = [":costas_array_sat_model2_test.bintest"], named_data = {"costas_array_sat": ":costas_array_sat"}, ) bintest( name = "costas_array_sat_model3_test", size = "medium", srcs = [":costas_array_sat_model3_test.bintest"], named_data = {"costas_array_sat": ":costas_array_sat"}, ) cc_binary( name = "cryptarithm_sat", srcs = ["cryptarithm_sat.cc"], deps = ["//ortools/sat:cp_model"], ) bintest( name = "cryptarithm_sat_test", size = "small", srcs = [":cryptarithm_sat_test.bintest"], named_data = {"cryptarithm_sat": ":cryptarithm_sat"}, ) cc_binary( name = "dobble_ls", srcs = ["dobble_ls.cc"], deps = [ "//ortools/base", "//ortools/base:map_util", "//ortools/base:types", "//ortools/constraint_solver:cp", "//ortools/util:bitset", "@abseil-cpp//absl/random", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/types:span", ], ) bintest( name = "dobble_ls_test", size = "medium", srcs = [":dobble_ls_test.bintest"], named_data = {"dobble_ls": ":dobble_ls"}, ) cc_binary( name = "golomb_sat", srcs = ["golomb_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "//ortools/sat:model", "//ortools/util:sorted_interval_list", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings:str_format", "@protobuf", ], ) bintest( name = "golomb_sat_test", size = "medium", srcs = [":golomb_sat_test.bintest"], named_data = {"golomb_sat": ":golomb_sat"}, ) cc_binary( name = "knapsack_2d_sat", srcs = ["knapsack_2d_sat.cc"], deps = [ "//ortools/base", "//ortools/packing:binpacking_2d_parser", "//ortools/packing:multiple_dimensions_bin_packing_cc_proto", "//ortools/sat:cp_model", "//ortools/sat:cp_model_solver", "//ortools/util:sorted_interval_list", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/types:span", "@protobuf", ], ) bintest( name = "knapsack_2d_sat_class01_instance2_test", size = "medium", srcs = [":knapsack_2d_sat_class01_instance2_test.bintest"], named_data = { "knapsack_2d_sat": ":knapsack_2d_sat", "Class_01.2bp": "//ortools/packing/testdata:Class_01.2bp", }, ) cc_binary( name = "jobshop_sat", srcs = ["jobshop_sat.cc"], deps = [ "//ortools/base", "//ortools/graph:connected_components", "//ortools/sat:cp_model", "//ortools/sat:cp_model_cc_proto", "//ortools/sat:cp_model_solver", "//ortools/sat:sat_parameters_cc_proto", "//ortools/scheduling:jobshop_scheduling_cc_proto", "//ortools/scheduling:jobshop_scheduling_parser", "//ortools/util:sorted_interval_list", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/container:flat_hash_map", "@abseil-cpp//absl/container:flat_hash_set", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/types:span", "@protobuf", "@protobuf//:wrappers_cc_proto", ], ) bintest( name = "jobshop_sat_ft06", size = "small", srcs = [":jobshop_sat_ft06.bintest"], named_data = { "jobshop_sat": ":jobshop_sat", "ft06": "//ortools/scheduling/testdata:ft06", }, ) cc_binary( name = "magic_sequence_sat", srcs = ["magic_sequence_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings:str_format", ], ) bintest( name = "magic_sequence_sat_test", size = "medium", srcs = [":magic_sequence_sat_test.bintest"], named_data = {"magic_sequence_sat": ":magic_sequence_sat"}, ) cc_binary( name = "multi_knapsack_sat", srcs = ["multi_knapsack_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", ], ) bintest( name = "multi_knapsack_sat_test", size = "medium", srcs = [":multi_knapsack_sat_test.bintest"], named_data = {"multi_knapsack_sat": ":multi_knapsack_sat"}, ) cc_binary( name = "shift_minimization_sat", srcs = ["shift_minimization_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "//ortools/sat:model", "//ortools/util:filelineiter", "//ortools/util:sorted_interval_list", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", ], ) bintest( name = "shift_minimization_sat_test", size = "medium", srcs = [":shift_minimization_sat_test.bintest"], named_data = { "shift_minimization_sat": ":shift_minimization_sat", "shift_minimization.dat": "testdata/shift_minimization.dat", }, ) cc_binary( name = "weighted_tardiness_sat", srcs = ["weighted_tardiness_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "//ortools/sat:cp_model_cc_proto", "//ortools/sat:cp_model_solver", "//ortools/sat:model", "//ortools/sat:sat_parameters_cc_proto", "//ortools/util:filelineiter", "//ortools/util:sorted_interval_list", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/types:span", ], ) bintest( name = "weighted_tardiness_sat_test", size = "medium", srcs = [":weighted_tardiness_sat_test.bintest"], named_data = { "weighted_tardiness_sat": ":weighted_tardiness_sat", "wt40.txt": "testdata/wt40.txt", }, ) cc_binary( name = "magic_square_sat", srcs = ["magic_square_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "//ortools/sat:model", "//ortools/util:sorted_interval_list", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings:str_format", ], ) bintest( name = "magic_square_sat_test", size = "medium", srcs = [":magic_square_sat_test.bintest"], named_data = {"magic_square_sat": ":magic_square_sat"}, ) cc_binary( name = "network_routing_sat", srcs = ["network_routing_sat.cc"], deps = [ "//ortools/base", "//ortools/graph", "//ortools/graph:shortest_paths", "//ortools/sat:cp_model", "//ortools/sat:model", "//ortools/util:sorted_interval_list", "//ortools/util:time_limit", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/container:flat_hash_map", "@abseil-cpp//absl/container:flat_hash_set", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/random:distributions", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/strings:string_view", ], ) bintest( name = "network_routing_sat_test", size = "medium", srcs = [":network_routing_sat_test.bintest"], named_data = {"network_routing_sat": ":network_routing_sat"}, ) cc_binary( name = "nqueens", srcs = ["nqueens.cc"], deps = [ "//ortools/base", "//ortools/base:map_util", "//ortools/base:types", "//ortools/constraint_solver:cp", "@abseil-cpp//absl/container:flat_hash_map", "@abseil-cpp//absl/strings:str_format", ], ) bintest( name = "nqueens_test", size = "small", srcs = [":nqueens_test.bintest"], named_data = {"nqueens": ":nqueens"}, ) cc_binary( name = "sports_scheduling_sat", srcs = ["sports_scheduling_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "//ortools/sat:cp_model_cc_proto", "//ortools/sat:model", "//ortools/util:sorted_interval_list", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", ], ) bintest( name = "sports_scheduling_sat_test", size = "medium", srcs = [":sports_scheduling_sat_test.bintest"], named_data = {"sports_scheduling_sat": ":sports_scheduling_sat"}, ) cc_binary( name = "pdptw", srcs = ["pdptw.cc"], deps = [ "//ortools/base", "//ortools/base:mathutil", "//ortools/base:timer", "//ortools/constraint_solver:cp", "//ortools/constraint_solver:routing", "//ortools/routing/parsers:lilim_parser", "//ortools/routing/parsers:simple_graph", "@abseil-cpp//absl/algorithm:container", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", "@protobuf", ], ) bintest( name = "pdptw_test", size = "medium", srcs = [":pdptw_test.bintest"], named_data = { "pdptw": ":pdptw", "lc102.txt": "testdata/lc102.txt", }, ) bintest( name = "pdptw_non_homogenous_fleet_test", size = "medium", srcs = [":pdptw_non_homogenous_fleet_test.bintest"], named_data = { "pdptw": ":pdptw", "lc102.txt": "testdata/lc102.txt", }, ) # Routing examples. cc_binary( name = "random_tsp", srcs = ["random_tsp.cc"], deps = [ "//ortools/constraint_solver:cp", "//ortools/constraint_solver:routing", "//ortools/util:random_engine", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/flags:parse", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/log:initialize", "@abseil-cpp//absl/random", "@abseil-cpp//absl/strings", "@protobuf", ], ) # Linear and integer programming examples. cc_binary( name = "integer_programming", srcs = ["integer_programming.cc"], deps = [ "//ortools/base", "//ortools/linear_solver", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", ], ) bintest( name = "integer_programming_test", size = "small", srcs = [":integer_programming_test.bintest"], named_data = {"integer_programming": ":integer_programming"}, ) cc_binary( name = "linear_programming", srcs = ["linear_programming.cc"], deps = [ "//ortools/base", "//ortools/linear_solver", "//ortools/linear_solver:linear_solver_cc_proto", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", ], ) bintest( name = "linear_programming_test", size = "small", srcs = [":linear_programming_test.bintest"], named_data = {"linear_programming": ":linear_programming"}, ) cc_binary( name = "linear_solver_protocol_buffers", srcs = ["linear_solver_protocol_buffers.cc"], deps = [ "//ortools/base", "//ortools/linear_solver:linear_solver_cc_proto", "//ortools/linear_solver:solve_mp_model", ], ) bintest( name = "linear_solver_protocol_buffers_test", size = "small", srcs = [":linear_solver_protocol_buffers_test.bintest"], named_data = {"linear_solver_protocol_buffers": ":linear_solver_protocol_buffers"}, ) cc_binary( name = "strawberry_fields_with_column_generation", srcs = ["strawberry_fields_with_column_generation.cc"], deps = [ "//ortools/base", "//ortools/linear_solver", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/types:span", ], ) bintest( name = "strawberry_fields_with_column_generation_test", size = "large", srcs = [":strawberry_fields_with_column_generation_test.bintest"], named_data = {"strawberry_fields_with_column_generation": ":strawberry_fields_with_column_generation"}, ) # Dimacs assignment problems cc_library( name = "print_dimacs_assignment", hdrs = ["print_dimacs_assignment.h"], deps = [ "//ortools/base", "//ortools/base:file", "//ortools/graph:linear_assignment", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", ], ) cc_library( name = "parse_dimacs_assignment", hdrs = ["parse_dimacs_assignment.h"], deps = [ "//ortools/graph:linear_assignment", "//ortools/util:filelineiter", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/strings", ], ) cc_binary( name = "dimacs_assignment", srcs = ["dimacs_assignment.cc"], deps = [ ":parse_dimacs_assignment", ":print_dimacs_assignment", "//ortools/algorithms:hungarian", "//ortools/base", "//ortools/base:timer", "//ortools/graph", "//ortools/graph:linear_assignment", "@abseil-cpp//absl/container:flat_hash_map", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/strings:string_view", ], ) bintest( name = "dimacs_assignment_min_cost_test", size = "small", srcs = [":dimacs_assignment_min_cost_test.bintest"], named_data = { "dimacs_assignment": ":dimacs_assignment", "dimacs_example.txt": "testdata/dimacs_example.txt", }, ) bintest( name = "dimacs_assignment_max_cost_test", size = "small", srcs = [":dimacs_assignment_max_cost_test.bintest"], named_data = { "dimacs_assignment": ":dimacs_assignment", "dimacs_example.txt": "testdata/dimacs_example.txt", }, ) # MPS driver for LP and MIP. cc_binary( name = "mps_driver", srcs = ["mps_driver.cc"], copts = ["-Wfloat-conversion"], deps = [ "//ortools/base", "//ortools/base:file", "//ortools/base:timer", "//ortools/glop:lp_solver", "//ortools/glop:parameters_cc_proto", "//ortools/lp_data", "//ortools/lp_data:base", "//ortools/lp_data:mps_reader", "//ortools/lp_data:proto_utils", "//ortools/util:file_util", "//ortools/util:proto_tools", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/status", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", "@protobuf", ], ) bintest( name = "mps_driver_test", size = "small", srcs = [":mps_driver_test.bintest"], named_data = { "mps_driver": ":mps_driver", "maximization.mps": "//ortools/linear_solver/testdata:maximization.mps", }, ) # Linear Assignment C++ Example cc_binary( name = "linear_assignment_api", srcs = ["linear_assignment_api.cc"], deps = [ "//ortools/base", "//ortools/graph", "//ortools/graph:linear_assignment", ], ) bintest( name = "linear_assignment_api_test", size = "small", srcs = [":linear_assignment_api_test.bintest"], named_data = {"linear_assignment_api": ":linear_assignment_api"}, ) # Flow C++ Example cc_binary( name = "flow_api", srcs = ["flow_api.cc"], deps = [ "//ortools/base", "//ortools/graph", "//ortools/graph:generic_max_flow", "//ortools/graph:min_cost_flow", ], ) bintest( name = "flow_api_test", size = "small", srcs = [":flow_api_test.bintest"], named_data = {"flow_api": ":flow_api"}, ) cc_binary( name = "max_flow", srcs = ["max_flow.cc"], deps = [ "//ortools/base", "//ortools/graph", "//ortools/graph:generic_max_flow", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", ], ) bintest( name = "max_flow_test", size = "small", srcs = [":max_flow_test.bintest"], named_data = {"max_flow": ":max_flow"}, ) cc_binary( name = "min_cost_flow", srcs = ["min_cost_flow.cc"], deps = [ "//ortools/base", "//ortools/graph:min_cost_flow", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:globals", ], ) bintest( name = "min_cost_flow_test", size = "small", srcs = [":min_cost_flow_test.bintest"], named_data = {"min_cost_flow": ":min_cost_flow"}, ) # Frequency Assignment Problem cc_library( name = "fap_parser", srcs = ["fap_parser.cc"], hdrs = ["fap_parser.h"], deps = [ "//ortools/base:file", "//ortools/base:map_util", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/container:flat_hash_map", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/types:span", ], ) cc_library( name = "fap_model_printer", srcs = ["fap_model_printer.cc"], hdrs = ["fap_model_printer.h"], deps = [ ":fap_parser", "//ortools/base:logging", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/strings:str_format", ], ) cc_library( name = "fap_utilities", srcs = ["fap_utilities.cc"], hdrs = ["fap_utilities.h"], deps = [ ":fap_parser", "//ortools/base", "//ortools/base:map_util", "//ortools/constraint_solver:cp", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/types:span", ], ) cc_binary( name = "frequency_assignment_problem", srcs = ["frequency_assignment_problem.cc"], deps = [ ":fap_model_printer", ":fap_parser", ":fap_utilities", "//ortools/base", "//ortools/base:map_util", "//ortools/constraint_solver:cp", "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/strings", "@abseil-cpp//absl/types:span", ], ) # Quadratic assignment problem. cc_binary( name = "qap_sat", srcs = ["qap_sat.cc"], deps = [ "//ortools/base", "//ortools/sat:cp_model", "//ortools/sat:sat_parameters_cc_proto", "//ortools/util:qap_reader", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/strings", "@protobuf", ], ) cc_binary( name = "slitherlink_sat", srcs = ["slitherlink_sat.cc"], deps = [ "//ortools/sat:cp_model", "//ortools/sat:cp_model_cc_proto", "//ortools/sat:cp_model_solver", "@abseil-cpp//absl/flags:parse", "@abseil-cpp//absl/log", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/strings:str_format", "@abseil-cpp//absl/types:span", ], ) bintest( name = "slitherlink_sat_test", size = "small", srcs = [":slitherlink_sat_test.bintest"], named_data = {"slitherlink_sat": ":slitherlink_sat"}, ) cc_binary( name = "uncapacitated_facility_location", srcs = ["uncapacitated_facility_location.cc"], deps = [ "//ortools/base", "//ortools/linear_solver", "//ortools/util:random_engine", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/flags:parse", "@abseil-cpp//absl/flags:usage", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/log:initialize", "@abseil-cpp//absl/random", ], ) cc_binary( name = "variable_intervals_sat", srcs = ["variable_intervals_sat.cc"], deps = [ "//ortools/sat:cp_model", "//ortools/sat:cp_model_solver", "//ortools/sat:sat_parameters_cc_proto", "//ortools/util:time_limit", "@abseil-cpp//absl/log", ], ) bintest( name = "variable_intervals_sat_test", size = "small", srcs = [":variable_intervals_sat_test.bintest"], named_data = {"variable_intervals_sat": ":variable_intervals_sat"}, ) cc_binary( name = "pdlp_solve", srcs = ["pdlp_solve.cc"], deps = [ "//ortools/base", "//ortools/base:file", "//ortools/pdlp:iteration_stats", "//ortools/pdlp:primal_dual_hybrid_gradient", "//ortools/pdlp:quadratic_program", "//ortools/pdlp:quadratic_program_io", "//ortools/pdlp:solve_log_cc_proto", "//ortools/pdlp:solvers_cc_proto", "//ortools/port:proto_utils", "//ortools/util:file_util", "//ortools/util:fp_roundtrip_conv", "//ortools/util:sigint", "@abseil-cpp//absl/base:log_severity", "@abseil-cpp//absl/flags:flag", "@abseil-cpp//absl/log:check", "@abseil-cpp//absl/log:flags", "@abseil-cpp//absl/log:globals", "@abseil-cpp//absl/strings", ], )