It would be useful to have an `OptimizationProblem` type that encodes the function and original box, dimension etc.