139 : random_(random), shared_stats_(shared_stats) {}
144 absl::Span<const IntegerValue> sizes_x,
145 absl::Span<const IntegerValue> sizes_y,
146 std::pair<IntegerValue, IntegerValue> bounding_box_size,
150 bool RelaxConflictWithBruteForce(
152 std::pair<IntegerValue, IntegerValue> bounding_box_size,
153 int brute_force_threshold);
156 absl::Span<const IntegerValue> sizes_x,
157 absl::Span<const IntegerValue> sizes_y,
158 std::pair<IntegerValue, IntegerValue> bounding_box_size,
162 absl::Span<const IntegerValue> sizes_x,
163 absl::Span<const IntegerValue> sizes_y,
164 absl::Span<const int> index_by_decreasing_x_size,
165 absl::Span<const IntegerValue> g_x, IntegerValue g_max,
166 IntegerValue x_bb_size, IntegerValue total_energy, IntegerValue bb_area,
167 IntegerValue* best_k);
175 void GetAllCandidatesForKForDff2(absl::Span<const IntegerValue> sizes,
176 IntegerValue bb_size,
177 IntegerValue sqrt_bb_size,
181 absl::Span<const IntegerValue> sizes_x,
182 absl::Span<const IntegerValue> sizes_y,
183 absl::Span<const int> index_by_decreasing_x_size, IntegerValue x_bb_size,
184 IntegerValue y_bb_size,
int max_number_of_parameters_to_check);
187 std::vector<int> index_by_decreasing_x_size_;
188 std::vector<int> index_by_decreasing_y_size_;
189 std::vector<std::pair<IntegerValue, IntegerValue>> scheduling_profile_;
190 std::vector<std::pair<IntegerValue, IntegerValue>> new_scheduling_profile_;
192 int64_t num_calls_ = 0;
193 int64_t num_conflicts_ = 0;
194 int64_t num_conflicts_two_items_ = 0;
195 int64_t num_trivial_conflicts_ = 0;
196 int64_t num_conflicts_dff2_ = 0;
197 int64_t num_conflicts_dff0_ = 0;
198 int64_t num_scheduling_possible_ = 0;
199 int64_t num_brute_force_calls_ = 0;
200 int64_t num_brute_force_conflicts_ = 0;
201 int64_t num_brute_force_relaxation_ = 0;
203 absl::BitGenRef random_;