68 std::size_t max_attempts,
72 : use_preset_matrix_{false}, max_attempts_{max_attempts}, seed_{seed}, shuffle_strategy_{shuffle_strategy},
95 [[nodiscard]] std::string
name()
const override
97 return "Overload-And-Remove";
101 bool use_preset_matrix_ =
true;
102 std::size_t max_attempts_ = 20;
103 std::uint64_t seed_ = 42;
123 std::size_t max_attempts,
124 std::uint64_t seed)
const;
A result type that maintains a chainable sequence of errors for debugging and error reporting.
Packing strategy that assigns tiles to palettes using overload-and-remove with multi-start.
OverloadAndRemoveStrategy(std::size_t max_attempts, std::uint64_t seed, ShuffleStrategy shuffle_strategy, const UserDiagnostics *diag=nullptr)
Constructs with explicit parameters for single-configuration mode.
ChainableResult< PackingOutput > pack(const PackingInput &input) const override
Packs tiles into palettes using the Overload-And-Remove algorithm with multi-start.
OverloadAndRemoveStrategy(gsl::not_null< const UserDiagnostics * > diag)
Constructs in preset matrix mode with diagnostics support.
OverloadAndRemoveStrategy()=default
std::string name() const override
Returns the name of this strategy.
Abstract interface for palette packing algorithms.
Abstract class for structured error reporting and diagnostic output.
ShuffleStrategy
Controls how tile orderings are generated during multi-start packing.
@ noisy_ffd
FFD first, then perturbed FFD orderings that preserve the large-first property.