scipy.optimize.fmin_ncg

scipy.optimize.fmin_ncg(f, x0, fprime, fhess_p=None, fhess=None, args=(), avextol=1e-05, epsilon=1.4901161193847656e-08, maxiter=None, full_output=0, disp=1, retall=0, callback=None)[源代码]

使用牛顿-CG方法的函数的无约束最小化。

参数
f :可调用 f(x, *args)可调用

要最小化的目标函数。

x0ndarray

初步猜测是这样的。

fPrime :可调用 f'(x, *args)可调用

f的梯度。

fhess_p :可调用 fhess_p(x, p, *args) ,可选可调用

计算f乘以任意向量p的海森的函数。

FHESS :可调用 fhess(x, *args) ,可选可调用

函数来计算f的Hessian矩阵。

args元组,可选

传递给f、fPrime、fhess_p和fhess的额外参数(向所有这些函数提供同一组额外参数)。

epsilon浮动或ndarray,可选

如果FHESS是近似值,请使用此值作为步长。

callback可调用,可选

用户提供的可选函数,在每次迭代后调用。调用为callback(Xk),其中xk是当前参数向量。

avextol浮动,可选

当最小化器中的平均相对误差低于此值时,假定收敛。

maxiter整型,可选

要执行的最大迭代次数。

full_output布尔值,可选

如果为True,则返回可选输出。

disp布尔值,可选

如果为True,则打印收敛消息。

retall布尔值,可选

如果为True,则在每次迭代时返回结果列表。

退货
xoptndarray

最小化f的参数,即, f(xopt) == fopt

fopt浮动

xopt处函数的值,即, fopt = f(xopt)

fcalls集成

进行的函数调用数。

gcalls集成

进行的渐变调用数。

hcalls集成

发出的黑森语呼叫数。

warnflag集成

由算法生成的警告。1:超过最大迭代次数。2:线路搜索失败(精度损失)。3:遇到NaN结果。

allvecs列表

如果Retall为True,则每次迭代的结果为True(见下文)。

参见

minimize

与多变量函数的最小化算法的接口。看“牛顿-CG” method 尤其是。

注意事项

只有一个 fhess_pfhess 需要给予。如果 fhess 被提供,则 fhess_p 将被忽略。如果两者都不是 fhess 也不是 fhess_p ,则将使用上的有限差分来近似Hessian乘积。 fprimefhess_p 必须计算任意向量的赫辛乘积。如果未给出,则有限差分在 fprime 都是用来计算的。

牛顿-CG法又称截断牛顿法。此函数与scipy.Optimize.fmin_tnc不同,因为

  1. scipy.Optimize.fmin_ncg是使用NumPy纯Python编写的

    和scipy,而scipy.Optimize.fmin_tnc调用C函数。

  2. scipy.Optimize.fmin_ncg仅用于无约束最小化

    而scipy.Optimize.fmin_tnc用于无约束最小化或框约束最小化。(框约束分别给出每个变量的下限和上限。)

参考文献

Wright&Nocedal,“数值优化”,1999年,第140页。