在通过trust-constr方法使用scipy.optimize.minimize时,我得到了以下UserWarning:
scipy\optimize\_hessian_update_strategy.py:187: UserWarning: delta_grad == 0.0. Check if the approximated function is linear. If the function is linear better results can be obtained by defining the Hessian as zero instead of using quasi-Newton approximations. 'approximations.', UserWarning)
我有一个线性函数,所以我想尝试将hessian设置为零。但这如何工作?我尝试使用“ hess = None”作为参数的最简单方法。好吧,不好尝试。
这是调用求解器的行:
solution = scopt.minimize(minimizeFunction,initialGuess ,method='trust-constr', constraints=cons,options={'disp':True,'verbose':3},bounds=bnds)
最佳答案
定义约束时,要设置
hess = lambda x, v: numpy.zeros((n, n))
这里的
n
是数组的维数。请注意,您也可以使用LinearConstraint object关于python - 将Hessian定义为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56310261/