This README contains all required information to reproduce the computational experiments presented in "An open-source heuristic to reboot 2D nesting research".
The final solutions and logs for all experiments that comprise the performance comparison in the paper (Table 2) are stored in the benchmark_runs folder.
The best solutions ever produced by sparrow for every instance (Table 3) are stored in records folder.
Each file is both a visual and an exact representation of a solution, more information about the format can be found in the here.
The experiments were performed via GitHub Actions, on a self-hosted runner. This system was running Ubuntu 20.04 LTS under WSL2 on Windows 11 and was equipped with an AMD Ryzen 9 7950X CPU and 64GB DDR5 at 5600MT/s. The exact commands to run a benchmark are defined in single_bench.yml.
For every entry in benchmark_runs the log file contains all the information required for exact reproduction:
[BENCH] git commit hash: 4d70ca7f468957a046a74bbb614b896f0ad463e3
[BENCH] system time: 2025-03-28T19:13:40.628237341Z
[BENCH] no seed provided, using: 12552852848582794543
[BENCH] starting bench for swim (13x8 runs across 16 cores, 1200s timelimit)
...
Steps to reproduce the benchmark run above:
- Ensure the Rust toolchain (nightly) matches the one that was the most recent at the day of the experiment.
rustup override set nightly-2025-03-28
- Ensure the repo is checked out at the same commit:
git checkout 4d70ca7f468957a046a74bbb614b896f0ad463e3).
- Ensure, the seed in config.rs is set to the randomly chosen one:
pub const RNG_SEED: Option<usize> = Some(12552852848582794543);
- Ensure
sparrowis built and executed exactly as single_bench.yml defines.-
export RUSTFLAGS='-C target-cpu=native' cargo run --profile release --features=only_final_svg,simd --bin bench -- data/input/swim.json 1200 100
-