From 6f45c3c5f0fc6d211f77ecb32eb8a08d8702e922 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Wed, 9 Aug 2023 20:54:52 -0700 Subject: [PATCH] more tests for examples/cpp --- examples/cpp/BUILD.bazel | 270 +++++++++++++++++- examples/cpp/multi_knapsack_sat.cc | 4 +- examples/cpp/vector_bin_packing_solver.cc | 2 +- .../1D__bpp_scholl__bin2data.N2W2B1R0.vbp | 59 ++++ ortools/packing/testdata/BUILD.bazel | 1 + 5 files changed, 330 insertions(+), 6 deletions(-) create mode 100644 ortools/packing/testdata/1D__bpp_scholl__bin2data.N2W2B1R0.vbp diff --git a/examples/cpp/BUILD.bazel b/examples/cpp/BUILD.bazel index f56cfa3854d..aa2473a5072 100644 --- a/examples/cpp/BUILD.bazel +++ b/examples/cpp/BUILD.bazel @@ -14,10 +14,10 @@ exports_files( [ "shift_minimization.dat", + "wt40.txt", ], ) - # Constraint solver examples. cc_binary( name = "binpacking_2d_sat", @@ -61,6 +61,16 @@ cc_binary( ], ) +cc_test( + name = "constraint_programming_cp-test", + size = "small", + srcs = ["constraint_programming_cp.cc"], + deps = [ + "//ortools/base", + "//ortools/constraint_solver:cp", + ], +) + cc_binary( name = "costas_array_sat", srcs = ["costas_array_sat.cc"], @@ -75,6 +85,60 @@ cc_binary( ], ) +cc_test( + name = "costas_array_sat_model1_test", + size = "medium", + srcs = ["costas_array_sat.cc"], + args = [ + "--minsize=6 --maxsize=6 --model=1", + ], + deps = [ + "//ortools/base", + "//ortools/sat:cp_model", + "//ortools/sat:model", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/flags:parse", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/strings:str_format", + ], +) + +cc_test( + name = "costas_array_sat_model2_test", + size = "medium", + srcs = ["costas_array_sat.cc"], + args = [ + "--minsize=6 --maxsize=6 --model=2", + ], + deps = [ + "//ortools/base", + "//ortools/sat:cp_model", + "//ortools/sat:model", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/flags:parse", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/strings:str_format", + ], +) + +cc_test( + name = "costas_array_sat_model3_test", + size = "medium", + srcs = ["costas_array_sat.cc"], + args = [ + "--minsize=6 --maxsize=6 --model=3", + ], + deps = [ + "//ortools/base", + "//ortools/sat:cp_model", + "//ortools/sat:model", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/flags:parse", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/strings:str_format", + ], +) + cc_binary( name = "cryptarithm_sat", srcs = ["cryptarithm_sat.cc"], @@ -84,6 +148,16 @@ cc_binary( ], ) +cc_test( + name = "cryptarithm_sat_test", + size = "small", + srcs = ["cryptarithm_sat.cc"], + deps = [ + "//ortools/sat:cp_model", + "//ortools/sat:model", + ], +) + cc_binary( name = "dobble_ls", srcs = ["dobble_ls.cc"], @@ -99,8 +173,8 @@ cc_binary( cc_test( name = "dobble_ls_test", - srcs = ["dobble_ls.cc"], size = "medium", + srcs = ["dobble_ls.cc"], args = ["--time_limit_in_ms=10000"], deps = [ "//ortools/base", @@ -158,6 +232,24 @@ cc_binary( ], ) +cc_test( + name = "knapsack_2d_sat_class01_instance2_test", + size = "medium", + srcs = [ + "knapsack_2d_sat.cc", + ], + args = ["--input $(rootpath //ortools/packing/testdata:Class_01.2bp) --instance 2"], + data = ["//ortools/packing/testdata:Class_01.2bp"], + deps = [ + "//ortools/base", + "//ortools/packing:binpacking_2d_parser", + "//ortools/packing:multiple_dimensions_bin_packing_cc_proto", + "//ortools/sat:cp_model", + "@com_google_absl//absl/flags:flag", + "@com_google_protobuf//:protobuf", + ], +) + cc_binary( name = "jobshop_sat", srcs = [ @@ -179,10 +271,10 @@ cc_binary( cc_test( name = "jobshop_sat_ft06", + size = "small", srcs = [ "jobshop_sat.cc", ], - size = "small", args = ["--input $(rootpath //ortools/scheduling/testdata:ft06)"], data = ["//ortools/scheduling/testdata:ft06"], deps = [ @@ -212,6 +304,20 @@ cc_binary( ], ) +cc_test( + name = "magic_sequence_sat_test", + size = "medium", + srcs = ["magic_sequence_sat.cc"], + deps = [ + "//ortools/base", + "//ortools/sat:cp_model", + "//ortools/sat:model", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/flags:parse", + "@com_google_absl//absl/strings:str_format", + ], +) + cc_binary( name = "multi_knapsack_sat", srcs = [ @@ -224,6 +330,19 @@ cc_binary( ], ) +cc_test( + name = "multi_knapsack_sat_test", + size = "medium", + srcs = [ + "multi_knapsack_sat.cc", + ], + deps = [ + "//ortools/base", + "//ortools/sat:cp_model", + "@com_google_absl//absl/flags:flag", + ], +) + cc_binary( name = "shift_minimization_sat", srcs = [ @@ -243,10 +362,10 @@ cc_binary( cc_test( name = "shift_minimization_sat_test", + size = "medium", srcs = [ "shift_minimization_sat.cc", ], - size = "medium", args = ["--input $(rootpath //examples/cpp:shift_minimization.dat)"], data = ["//examples/cpp:shift_minimization.dat"], deps = [ @@ -286,6 +405,34 @@ cc_binary( ], ) +cc_test( + name = "weighted_tardiness_sat_test", + size = "medium", + srcs = [ + "weighted_tardiness_sat.cc", + ], + args = ["--input $(rootpath //examples/cpp:wt40.txt)"], + data = ["//examples/cpp:wt40.txt"], + deps = [ + "//ortools/base", + "//ortools/base:file", + "//ortools/sat:cp_model", + "//ortools/sat:cp_model_solver", + "//ortools/sat:disjunctive", + "//ortools/sat:integer", + "//ortools/sat:integer_expr", + "//ortools/sat:intervals", + "//ortools/sat:model", + "//ortools/sat:optimization", + "//ortools/sat:precedences", + "//ortools/sat:sat_solver", + "//ortools/util:filelineiter", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/strings", + "@com_google_protobuf//:protobuf", + ], +) + cc_binary( name = "magic_square_sat", srcs = ["magic_square_sat.cc"], @@ -300,6 +447,21 @@ cc_binary( ], ) +cc_test( + name = "magic_square_sat_test", + size = "medium", + srcs = ["magic_square_sat.cc"], + deps = [ + "//ortools/base", + "//ortools/sat:cp_model", + "//ortools/sat:model", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/flags:parse", + "@com_google_absl//absl/strings", + "@com_google_absl//absl/strings:str_format", + ], +) + cc_binary( name = "network_routing_sat", srcs = ["network_routing_sat.cc"], @@ -354,6 +516,18 @@ cc_binary( ], ) +cc_test( + name = "nqueens_test", + srcs = ["nqueens.cc"], + deps = [ + "//ortools/base", + "//ortools/base:map_util", + "//ortools/constraint_solver:cp", + "@com_google_absl//absl/container:flat_hash_map", + "@com_google_absl//absl/strings:str_format", + ], +) + cc_binary( name = "sports_scheduling_sat", srcs = ["sports_scheduling_sat.cc"], @@ -399,6 +573,27 @@ cc_binary( ], ) +cc_test( + name = "vector_bin_packing_solver_test", + size = "medium", + srcs = [ + "vector_bin_packing_solver.cc", + ], + args = ["--input $(rootpath //ortools/packing/testdata:1D__bpp_scholl__bin2data.N2W2B1R0.vbp)"], + data = ["//ortools/packing/testdata:1D__bpp_scholl__bin2data.N2W2B1R0.vbp"], + deps = [ + "//ortools/base", + "//ortools/base:file", + "//ortools/packing:arc_flow_builder", + "//ortools/packing:arc_flow_solver", + "//ortools/packing:vector_bin_packing_cc_proto", + "//ortools/packing:vector_bin_packing_parser", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/status", + "@com_google_absl//absl/strings", + ], +) + # Routing examples. cc_binary( name = "random_tsp", @@ -520,6 +715,17 @@ cc_binary( ], ) +cc_test( + name = "integer_programming_test", + size = "small", + srcs = ["integer_programming.cc"], + deps = [ + "//ortools/base", + "//ortools/linear_solver", + "@com_google_absl//absl/strings", + ], +) + cc_binary( name = "linear_programming", srcs = ["linear_programming.cc"], @@ -532,6 +738,19 @@ cc_binary( ], ) +cc_test( + name = "linear_programming_test", + size = "small", + srcs = ["linear_programming.cc"], + deps = [ + "//ortools/base", + "//ortools/linear_solver", + "//ortools/linear_solver:linear_solver_cc_proto", + "@com_google_absl//absl/flags:flag", + "@com_google_absl//absl/strings", + ], +) + cc_binary( name = "linear_solver_protocol_buffers", srcs = ["linear_solver_protocol_buffers.cc"], @@ -646,6 +865,17 @@ cc_binary( ], ) +cc_test( + name = "linear_assignment_api_test", + size = "small", + srcs = ["linear_assignment_api.cc"], + deps = [ + "//ortools/base", + "//ortools/graph:ebert_graph", + "//ortools/graph:linear_assignment", + ], +) + # Flow C++ Example cc_binary( name = "flow_api", @@ -658,6 +888,18 @@ cc_binary( ], ) +cc_test( + name = "flow_api_test", + size = "small", + srcs = ["flow_api.cc"], + deps = [ + "//ortools/base", + "//ortools/graph:ebert_graph", + "//ortools/graph:max_flow", + "//ortools/graph:min_cost_flow", + ], +) + cc_binary( name = "max_flow", srcs = ["max_flow.cc"], @@ -667,6 +909,16 @@ cc_binary( ], ) +cc_test( + name = "max_flow_test", + size = "small", + srcs = ["max_flow.cc"], + deps = [ + "//ortools/base", + "//ortools/graph:max_flow", + ], +) + cc_binary( name = "min_cost_flow", srcs = ["min_cost_flow.cc"], @@ -676,6 +928,16 @@ cc_binary( ], ) +cc_test( + name = "min_cost_flow_test", + size = "small", + srcs = ["min_cost_flow.cc"], + deps = [ + "//ortools/base", + "//ortools/graph:min_cost_flow", + ], +) + # Frequency Assignment Problem cc_library( name = "fap_parser", diff --git a/examples/cpp/multi_knapsack_sat.cc b/examples/cpp/multi_knapsack_sat.cc index 9d6aa7c625b..2dc6dcffd24 100644 --- a/examples/cpp/multi_knapsack_sat.cc +++ b/examples/cpp/multi_knapsack_sat.cc @@ -30,7 +30,9 @@ #include "ortools/sat/cp_model.h" ABSL_FLAG(int, size, 16, "scaling factor of the model"); -ABSL_FLAG(std::string, params, "", "Sat parameters"); +ABSL_FLAG(std::string, params, + "num_workers:8,log_search_progress:true,max_time_in_seconds:10.0", + "Sat parameters"); namespace operations_research { namespace sat { diff --git a/examples/cpp/vector_bin_packing_solver.cc b/examples/cpp/vector_bin_packing_solver.cc index f2c864e9b5c..57013af560e 100644 --- a/examples/cpp/vector_bin_packing_solver.cc +++ b/examples/cpp/vector_bin_packing_solver.cc @@ -32,7 +32,7 @@ #include "ortools/packing/vector_bin_packing_parser.h" ABSL_FLAG(std::string, input, "", "Vector Bin Packing (.vpb) data file name."); -ABSL_FLAG(std::string, params, "", +ABSL_FLAG(std::string, params, "num_workers:16,max_time_in_seconds:10", "Parameters in solver specific text format."); ABSL_FLAG(std::string, solver, "sat", "Solver to use: sat, scip"); ABSL_FLAG(double, time_limit, 900.0, "Time limit in seconds"); diff --git a/ortools/packing/testdata/1D__bpp_scholl__bin2data.N2W2B1R0.vbp b/ortools/packing/testdata/1D__bpp_scholl__bin2data.N2W2B1R0.vbp new file mode 100644 index 00000000000..23a16906280 --- /dev/null +++ b/ortools/packing/testdata/1D__bpp_scholl__bin2data.N2W2B1R0.vbp @@ -0,0 +1,59 @@ +1 +1000 +56 +162 1 +163 2 +164 1 +166 2 +167 2 +168 2 +169 1 +170 2 +171 1 +172 2 +175 3 +176 3 +177 4 +178 1 +179 1 +181 1 +182 1 +183 2 +186 2 +187 1 +188 3 +191 2 +193 4 +195 1 +196 1 +197 2 +198 2 +199 3 +200 1 +203 1 +204 2 +205 2 +206 4 +208 3 +209 1 +210 1 +211 1 +212 2 +213 1 +214 2 +216 2 +217 5 +218 1 +219 1 +222 1 +226 1 +227 1 +228 3 +229 1 +230 1 +231 4 +232 1 +235 1 +238 1 +239 1 +240 1 diff --git a/ortools/packing/testdata/BUILD.bazel b/ortools/packing/testdata/BUILD.bazel index bcfc43afc50..a59d025ded0 100644 --- a/ortools/packing/testdata/BUILD.bazel +++ b/ortools/packing/testdata/BUILD.bazel @@ -15,6 +15,7 @@ package(default_visibility = ["//visibility:public"]) exports_files( [ + "1D__bpp_scholl__bin2data.N2W2B1R0.vbp", "Class_01.2bp", ], )