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

初步猜测是这样的。

args元组,可选

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

xtol浮动,可选

迭代之间的xopt绝对误差为收敛可接受。

ftol数字,可选

迭代之间可接受的函数绝对误差(Xopt)。

maxiter整型,可选

要执行的最大迭代次数。

maxfun数字,可选

要进行的函数求值的最大数量。

full_output布尔值,可选

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

disp布尔值,可选

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

retall布尔值,可选

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

callback可调用,可选

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

initial_simplex形状(N+1,N)的类似数组,可选

初始单纯形。如果给定,则重写 x0initial_simplex[j,:] 对象的第j个顶点的坐标。 N+1 单纯形中的顶点,其中 N 是维度。

退货
xoptndarray

最小化函数的参数。

fopt浮动

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

iter集成

执行的迭代次数。

funcalls集成

进行的函数调用数。

warnflag集成

1:函数求值的最大次数。2:已达到最大迭代次数。

allvecs列表

每次迭代时的解。

参见

minimize

与多变量函数的最小化算法的接口。看“老头子-米德” method 尤其是。

注意事项

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

该算法在实际应用中已有很长的成功历史。但它通常比使用一阶或二阶导数信息的算法慢。在实际应用中,该算法在处理高维问题时性能较差,对复杂函数最小化的鲁棒性也不强。此外,目前还没有完整的理论来描述算法何时会成功收敛到最小,或者如果成功收敛到最小,它会以多快的速度收敛。必须同时满足ftol和xtol标准才能收敛。

参考文献

1

奈尔德,J.A.,Mead,R.(1965),“函数极小化的单纯形法”,计算机学报,7,第308-313页

2

Wright,M.H.(1996),“直接搜索方法:曾经被鄙视,现在很受尊敬”,载于“数值分析1995,1995年邓迪数值分析双年会议论文集”,D.F.Griffiths和G.A.Watson(编辑),Addison Wesley Longman,Harlow,UK,第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