@@ -94,6 +94,22 @@ proto_library(
9494 srcs = ["cp_model.proto" ],
9595)
9696
97+ cc_library (
98+ name = "2d_mandatory_overlap_propagator" ,
99+ srcs = ["2d_mandatory_overlap_propagator.cc" ],
100+ hdrs = ["2d_mandatory_overlap_propagator.h" ],
101+ deps = [
102+ ":diffn_util" ,
103+ ":integer" ,
104+ ":model" ,
105+ ":no_overlap_2d_helper" ,
106+ ":scheduling_helpers" ,
107+ ":synchronization" ,
108+ "@com_google_absl//absl/log" ,
109+ "@com_google_absl//absl/types:span" ,
110+ ],
111+ )
112+
97113cc_proto_library (
98114 name = "cp_model_cc_proto" ,
99115 deps = [":cp_model_proto" ],
@@ -765,6 +781,7 @@ cc_library(
765781 ":presolve_util" ,
766782 ":sat_parameters_cc_proto" ,
767783 ":sat_solver" ,
784+ ":solution_crush" ,
768785 ":util" ,
769786 "//ortools/algorithms:sparse_permutation" ,
770787 "//ortools/base" ,
@@ -798,16 +815,34 @@ cc_test(
798815 ":cp_model_utils" ,
799816 ":model" ,
800817 ":presolve_context" ,
818+ ":solution_crush" ,
801819 "//ortools/base:gmock_main" ,
802820 "//ortools/base:parse_test_proto" ,
803- "//ortools/base:types" ,
804821 "//ortools/util:affine_relation" ,
805822 "//ortools/util:sorted_interval_list" ,
806823 "@com_google_absl//absl/container:flat_hash_set" ,
807824 "@com_google_absl//absl/types:span" ,
808825 ],
809826)
810827
828+ cc_library (
829+ name = "solution_crush" ,
830+ srcs = [
831+ "solution_crush.cc" ,
832+ ],
833+ hdrs = ["solution_crush.h" ],
834+ deps = [
835+ ":cp_model_cc_proto" ,
836+ ":cp_model_utils" ,
837+ ":sat_parameters_cc_proto" ,
838+ "//ortools/algorithms:sparse_permutation" ,
839+ "//ortools/util:sorted_interval_list" ,
840+ "@com_google_absl//absl/container:flat_hash_map" ,
841+ "@com_google_absl//absl/log:check" ,
842+ "@com_google_absl//absl/types:span" ,
843+ ],
844+ )
845+
811846cc_library (
812847 name = "cp_model_table" ,
813848 srcs = ["cp_model_table.cc" ],
@@ -873,6 +908,7 @@ cc_library(
873908 ":sat_parameters_cc_proto" ,
874909 ":sat_solver" ,
875910 ":simplification" ,
911+ ":solution_crush" ,
876912 ":util" ,
877913 ":var_domination" ,
878914 "//ortools/base" ,
@@ -975,6 +1011,7 @@ cc_library(
9751011 ":cp_model_utils" ,
9761012 ":presolve_context" ,
9771013 ":sat_parameters_cc_proto" ,
1014+ ":solution_crush" ,
9781015 ":util" ,
9791016 "//ortools/base" ,
9801017 "//ortools/base:stl_util" ,
@@ -1436,6 +1473,7 @@ cc_library(
14361473 ":integer_base" ,
14371474 ":presolve_context" ,
14381475 ":presolve_util" ,
1476+ ":solution_crush" ,
14391477 ":util" ,
14401478 "//ortools/algorithms:dynamic_partition" ,
14411479 "//ortools/base" ,
@@ -1723,7 +1761,9 @@ cc_library(
17231761 ":sat_base" ,
17241762 ":scheduling_helpers" ,
17251763 ":util" ,
1764+ "@com_google_absl//absl/base:log_severity" ,
17261765 "@com_google_absl//absl/log" ,
1766+ "@com_google_absl//absl/log:check" ,
17271767 "@com_google_absl//absl/types:span" ,
17281768 ],
17291769)
@@ -2283,13 +2323,15 @@ cc_library(
22832323 ":intervals" ,
22842324 ":linear_constraint" ,
22852325 ":model" ,
2326+ ":no_overlap_2d_helper" ,
22862327 ":precedences" ,
22872328 ":presolve_util" ,
22882329 ":routing_cuts" ,
22892330 ":sat_base" ,
22902331 ":sat_parameters_cc_proto" ,
22912332 ":sat_solver" ,
22922333 ":scheduling_cuts" ,
2334+ ":scheduling_helpers" ,
22932335 ":util" ,
22942336 "//ortools/base" ,
22952337 "//ortools/base:mathutil" ,
@@ -2665,6 +2707,7 @@ cc_library(
26652707 ":linear_constraint" ,
26662708 ":linear_constraint_manager" ,
26672709 ":model" ,
2710+ ":no_overlap_2d_helper" ,
26682711 ":sat_base" ,
26692712 ":scheduling_helpers" ,
26702713 ":util" ,
@@ -3204,6 +3247,7 @@ cc_library(
32043247 srcs = ["diffn.cc" ],
32053248 hdrs = ["diffn.h" ],
32063249 deps = [
3250+ ":2d_mandatory_overlap_propagator" ,
32073251 ":2d_orthogonal_packing" ,
32083252 ":2d_try_edge_propagator" ,
32093253 ":cumulative_energy" ,
@@ -3632,6 +3676,7 @@ cc_library(
36323676 ":sat_base" ,
36333677 ":sat_parameters_cc_proto" ,
36343678 ":sat_solver" ,
3679+ ":solution_crush" ,
36353680 ":symmetry_util" ,
36363681 ":util" ,
36373682 "//ortools/algorithms:binary_search" ,
0 commit comments