fmin_ncg#
- scipy.optimize.fmin_ncg(f, x0, fprime, fhess_p=None, fhess=None, args=(), avextol=1e-05, epsilon=np.float64(1.4901161193847656e-08), maxiter=None, full_output=0, disp=1, retall=0, callback=None, c1=0.0001, c2=0.9)[源代码]#
使用 Newton-CG 方法的函数无约束最小化。
- 参数:
- f可调用
f(x, *args)
要最小化的目标函数。
- x0ndarray
初始猜测。
- fprime可调用
f'(x, *args)
f 的梯度。
- fhess_p可调用
fhess_p(x, p, *args)
,可选 计算 f 的 Hessian 乘以任意向量 p 的函数。
- fhess可调用
fhess(x, *args)
,可选 计算 f 的 Hessian 矩阵的函数。
- args元组,可选
传递给 f、fprime、fhess_p 和 fhess 的额外参数(为所有这些函数提供相同的额外参数集)。
- epsilonfloat 或 ndarray,可选
如果要近似 fhess,请对这个值使用步长。
- callbackcallable,可选
每次迭代后调用提供的可选用户函数。作为 callback(xk) 调用,其中 xk 是当前参数向量。
- avextolfloat,可选
当最小化函数中的平均相对误差低于此数量时,假定会收敛。
- maxiterint,可选
执行的最大迭代次数。
- full_outputbool,可选
如果为 True,则返回可选的输出。
- dispbool,可选
如果为 True,则打印收敛消息。
- retallbool,可选
如果为 True,则返回每次迭代的结果列表。
- c1float,默认值:1e-4
Armijo 条件规则的参数。
- c2float,默认值:0.9
曲率条件规则的参数
- f可调用
- 返回:
- xoptndarray
使 f 最小的参数,即,
f(xopt) == fopt
。- foptfloat
在 xopt 处函数的值,即,
fopt = f(xopt)
。- fcallsint
进行的函数调用次数。
- gcallsint
进行的梯度调用次数。
- hcallsint
进行的 Hessian 调用次数。
- warnflagint
算法生成的警告。1:超出最大迭代次数。2:线搜索失败(精度损失)。3:遇到 NaN 结果。
- allvecslist
如果是 True,则每次迭代的结果(参见下方)。
另请参见
minimize
多变量函数最小化算法接口。特别是,请参见“Newton-CG”方法。
注意
只需要提供 fhess_p 或 fhess 之一。如果提供了 fhess,则会忽略 fhess_p。如果没有提供 fhess 或 fhess_p,则会使用 fprime 上的有限差分近似 Hessian 乘积。fhess_p 必须计算任意向量乘以 Hessian 的结果。如果没有提供,则使用 fprime 上的有限差分进行计算。
Newton-CG 方法也称为截断牛顿方法。由于以下原因,此函数与 scipy.optimize.fmin_tnc 不同
- scipy.optimize.fmin_ncg 是使用 NumPy 完全以 Python 编写的
而 scipy 则调用 C 函数,而 scipy.optimize.fmin_tnc 是使用 NumPy 完全以 Python 编写的
- scipy.optimize.fmin_ncg 仅用于无约束最小化
而 scipy.optimize.fmin_tnc 则用于无约束最小化或有界最小化。(有界约束为每个变量分别给出上下界。)
参数 c1 和 c2 必须满足
0 < c1 < c2 < 1
。参考资料
Wright & Nocedal,‘数值优化’,1999 年,第 140 页。