I want to minimize a scalar function (energy) of a 1D array of variables (atomic coordinates). The function and gradient are computed by an external program. My problem is that the scipy function is taking big steps in X, causing f(X) to fail. Is there a way to restrain the size of the steps? Even better, is there a way to get minimize() to avoid broken values of X?
result = scipy.optimize.minimize(qmgrad_wrap, X0, args=args, method='BFGS', jac=True, options=options)
print(result)