在使用 scipy.optimize.minimize 和 trust-constr 方法时,我得到了这个 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)
我有一个线性函数,所以我想尝试将粗麻布设置为零。但这是如何运作的呢?我尝试了最简单的方法,以“hess = None”作为参数。好吧,一次糟糕的尝试。
这是调用求解器的行:
solution = scopt.minimize(minimizeFunction,initialGuess ,method='trust-constr', constraints=cons,options={'disp':True,'verbose':3},bounds=bnds)
当您定义约束时,您需要设置
hess = lambda x: numpy.zeros((n, n))
Here n
是数组的维数。请注意,您还可以使用线性约束对象 https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.LinearConstraint.html#scipy.optimize.LinearConstraint
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)