Reuse the starting solution to find the boundaries in all dimensions, instead of throwing a new dart for each dimension
Use an incremental solver to find the boundaries
Don't need to explicitly AND boundaryConstraint with the problem constraint, since the incremental solver already does this
Move the boundary finding to its own method