What about using a neural network as an optimizer, such that the input is the sampled neighborhood of a random starting point, and the output is the next point to evaluate. That neural network could be trained on billions of generated input functions. You could then use that optimizer to optimize the training of the optimizer itself !