Generic MultiDimFitness algorithms use std::ranges::begin, std::ranges::end, and std::ranges::size instead of .begin(), .end(), and .size().
This keeps the implementation aligned with the concept: MultiDimFitness requires a sized range of scalar fitness values, not necessarily a container exposing member iterator functions.