I have a fairly complex function f(x) that I want to optimize and I am using the fmin_bfgs function from the scipy.optimize module from Scipy. It forces me to give the function to minimize and the function of the gradient f'(x) separately, which is a pity because some of the computations for the gradient can be done when evaluating the function f(x).
Is there a way of combining both functions? I was considering saving the intermediate values required for both functions, but I don’t know if the fmin_bfgs function guarantees that f(x) is evaluated before than f'(x).
Thank you
You could use memoization to cache the intermediate values. Regardless of which function is called first, the second will be able to take advantage of the memoized value.