scipy.optimize.

fmin#

scipy.optimize.fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None, initial_simplex=None)[源代码][源代码]#

使用下坡单纯形算法最小化一个函数。

该算法仅使用函数值,不使用导数或二阶导数。

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

要最小化的目标函数。

x0ndarray

初始猜测。

参数tuple, 可选

传递给 func 的额外参数,即 f(x,*args)

xtolfloat, 可选

在迭代之间,xopt 的绝对误差在收敛时是可以接受的。

ftol数字,可选

在迭代之间,func(xopt) 的绝对误差在收敛时可接受的范围。

maxiterint, 可选

要执行的最大迭代次数。

maxfun数字,可选

最大函数评估次数。

完整输出bool, 可选

如果需要 fopt 和 warnflag 输出,请设置为 True。

dispbool, 可选

设置为 True 以打印收敛消息。

retallbool, 可选

设置为 True 以在每次迭代时返回解决方案列表。

回调可调用,可选

在每次迭代后调用,作为回调函数 callback(xk),其中 xk 是当前的参数向量。

初始单纯形形状为 (N + 1, N) 的类数组对象,可选

初始单纯形。如果给出,将覆盖 x0initial_simplex[j,:] 应包含单纯形中第 j 个顶点的坐标,其中 N 是维度。

返回:
xoptndarray

最小化函数的参数。

fopt浮动

函数在最小值处的值:fopt = func(xopt)

iter整数

执行的迭代次数。

函数调用整数

函数调用的次数。

警告标志整数

1 : 函数评估的最大次数。2 : 达到的最大迭代次数。

allvecs列表

每次迭代的解决方案。

参见

minimize

用于多变量函数最小化算法的接口。特别参见 ‘Nelder-Mead’ 方法

注释

使用Nelder-Mead单纯形算法来寻找一个或多个变量函数的最小值。

该算法在应用中有着悠久且成功的使用历史。但它通常会比使用一阶或二阶导数信息的算法慢。在实践中,它在高维问题中可能表现不佳,并且对于最小化复杂函数不够稳健。此外,目前还没有完整的理论来描述该算法何时会成功收敛到最小值,或者如果收敛的话,它的速度如何。收敛必须同时满足ftol和xtol标准。

参考文献

[1]

Nelder, J.A. 和 Mead, R. (1965), “函数最小化的单纯形方法”, 《计算机杂志》, 7, pp. 308-313

[2]

Wright, M.H. (1996), “直接搜索方法:曾经被轻视,现在受到尊重”, 在数值分析1995中,1995年邓迪数值分析双年会议论文集,D.F. Griffiths 和 G.A. Watson (编), Addison Wesley Longman, 英国哈洛, pp. 191-208.

示例

>>> def f(x):
...     return x**2
>>> from scipy import optimize
>>> minimum = optimize.fmin(f, 1)
Optimization terminated successfully.
         Current function value: 0.000000
         Iterations: 17
         Function evaluations: 34
>>> minimum[0]
-8.8817841970012523e-16