48 orthogonal_packing_checker_(*random_, shared_stats_) {}
58 std::vector<RectangleInRange> items_for_opp;
62 std::optional<Conflict> FindConflict(
63 std::vector<RectangleInRange> active_box_ranges);
65 std::vector<RectangleInRange> GeneralizeExplanation(
const Conflict& conflict);
67 bool BuildAndReportEnergyTooLarge(absl::Span<const RectangleInRange> ranges);
69 NoOverlap2DConstraintHelper& helper_;
70 ModelRandomGenerator* random_;
71 SharedStatistics* shared_stats_;
72 OrthogonalPackingInfeasibilityDetector orthogonal_packing_checker_;
74 int64_t num_calls_ = 0;
75 int64_t num_conflicts_ = 0;
76 int64_t num_conflicts_two_boxes_ = 0;
77 int64_t num_refined_conflicts_ = 0;
78 int64_t num_conflicts_with_slack_ = 0;
157 params_(model->GetOrCreate<SatParameters>()) {}
170 bool FindRestrictionsAndPropagateConflict(
174 bool FindRestrictionsAndPropagateConflict(
183 const SatParameters* params_;
185 int64_t num_calls_ = 0;
186 int64_t num_pairwise_conflicts_ = 0;
187 int64_t num_pairwise_propagations_ = 0;