Subclass for grid search tuning.
The grid is constructed as a Cartesian product over discretized values per parameter,
see paradox::generate_design_grid()
.
The points of the grid are evaluated in a random order.
In order to support general termination criteria and parallelization,
we evaluate points in a batch-fashion of size batch_size
.
Larger batches mean we can parallelize more, smaller batches imply a more fine-grained checking
of termination criteria.