minimize(method='BFGS')#
- scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
使用 BFGS 算法最小化一个或多个变量的标量函数。
另请参阅
有关其余参数的文档,请参阅
scipy.optimize.minimize
- 选项:
- ——-
- dispbool
设置为 True 以打印收敛消息。
- maxiterint
要执行的最大迭代次数。
- gtolfloat
如果梯度范数小于 gtol,则成功终止。
- normfloat
范数的阶数(Inf 为最大值,-Inf 为最小值)。
- epsfloat 或 ndarray
如果 jac is None,则使用绝对步长通过前向差分来数值逼近雅可比矩阵。
- return_allbool, 可选
设置为 True 以返回每次迭代的最佳解决方案列表。
- finite_diff_rel_stepNone 或 array_like, 可选
如果
jac in ['2-point', '3-point', 'cs']
,则用于数值逼近雅可比矩阵的相对步长。绝对步长计算为h = rel_step * sign(x) * max(1, abs(x))
,可能会调整以适应边界。对于jac='3-point'
,h 的符号将被忽略。如果为 None(默认值),则自动选择步长。- xrtolfloat,默认值:0
x 的相对容差。如果步长小于
xk * xrtol
,则成功终止,其中xk
是当前参数向量。- c1float,默认值:1e-4
Armijo 条件规则的参数。
- c2float,默认值:0.9
曲率条件规则的参数。
- hess_inv0None 或 ndarray,可选
初始逆 Hessian 估计,形状 (n, n)。如果为 None(默认值),则使用单位矩阵。
注意
参数 c1 和 c2 必须满足
0 < c1 < c2 < 1
。如果最小化未成功完成,并出现错误消息
Desired error not necessarily achieved due to precision loss
,则考虑将 gtol 设置为更高的值。当(有限差分)数值微分无法提供足够的精度来满足 gtol 终止标准时,通常会发生此精度损失。当在单精度下工作并且未提供可调用的 jac 时,可能会发生这种情况。对于单精度问题,gtol 为 1e-3 似乎有效。