138 : random_(random), shared_stats_(shared_stats) {}
143 absl::Span<const IntegerValue> sizes_x,
144 absl::Span<const IntegerValue> sizes_y,
145 std::pair<IntegerValue, IntegerValue> bounding_box_size,
149 bool RelaxConflictWithBruteForce(
151 std::pair<IntegerValue, IntegerValue> bounding_box_size,
152 int brute_force_threshold);
155 absl::Span<const IntegerValue> sizes_x,
156 absl::Span<const IntegerValue> sizes_y,
157 std::pair<IntegerValue, IntegerValue> bounding_box_size,
161 absl::Span<const IntegerValue> sizes_x,
162 absl::Span<const IntegerValue> sizes_y,
163 absl::Span<const int> index_by_decreasing_x_size,
164 absl::Span<const IntegerValue> g_x, IntegerValue g_max,
165 IntegerValue x_bb_size, IntegerValue total_energy, IntegerValue bb_area,
166 IntegerValue* best_k);
174 void GetAllCandidatesForKForDff2(absl::Span<const IntegerValue> sizes,
175 IntegerValue bb_size,
176 IntegerValue sqrt_bb_size,
180 absl::Span<const IntegerValue> sizes_x,
181 absl::Span<const IntegerValue> sizes_y,
182 absl::Span<const int> index_by_decreasing_x_size, IntegerValue x_bb_size,
183 IntegerValue y_bb_size,
int max_number_of_parameters_to_check);
186 std::vector<int> index_by_decreasing_x_size_;
187 std::vector<int> index_by_decreasing_y_size_;
188 std::vector<std::pair<IntegerValue, IntegerValue>> scheduling_profile_;
189 std::vector<std::pair<IntegerValue, IntegerValue>> new_scheduling_profile_;
191 int64_t num_calls_ = 0;
192 int64_t num_conflicts_ = 0;
193 int64_t num_conflicts_two_items_ = 0;
194 int64_t num_trivial_conflicts_ = 0;
195 int64_t num_conflicts_dff2_ = 0;
196 int64_t num_conflicts_dff0_ = 0;
197 int64_t num_scheduling_possible_ = 0;
198 int64_t num_brute_force_calls_ = 0;
199 int64_t num_brute_force_conflicts_ = 0;
200 int64_t num_brute_force_relaxation_ = 0;
202 absl::BitGenRef random_;