当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy optimize.fmin用法及代码示例


本文简要介绍 python 语言中 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)

要最小化的目标函数。

x0 ndarray

初步猜测。

args 元组,可选

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

xtol 浮点数,可选

迭代之间 xopt 中的绝对误差对于收敛是可以接受的。

ftol 编号,可选

迭代之间的 func(xopt) 中的绝对误差对于收敛是可以接受的。

maxiter 整数,可选

要执行的最大迭代次数。

maxfun 编号,可选

要进行的函数评估的最大数量。

full_output 布尔型,可选

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

disp 布尔型,可选

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

retall 布尔型,可选

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

callback 可调用的,可选的

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

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

初始单纯形。如果给定,则覆盖x0.initial_simplex[j,:]应包含第 j 个顶点的坐标N+1单纯形中的顶点,其中N是维度。

返回

xopt ndarray

最小化函数的参数。

fopt 浮点数

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

iter int

执行的迭代次数。

funcalls int

进行的函数调用次数。

warnflag int

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

allvecs 列表

每次迭代的解决方案。

注意

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

该算法在应用程序中的成功使用历史悠久。但它通常比使用一阶或二阶导数信息的算法慢。在实践中,它在高维问题上的表现可能很差,并且对于最小化复杂函数的鲁棒性不强。此外,目前还没有完整的理论来说明算法何时会成功收敛到最小值,或者如果收敛会多快。必须满足 ftol 和 xtol 标准才能收敛。

参考

[1]

内尔德,J.A.和 Mead, R. (1965),“函数最小化的单纯形法”,计算机杂志,7,第 308-313 页

[2]

赖特,M.H. (1996),“直接搜索方法:曾经被蔑视,现在受人尊敬”,《数值分析 1995》,1995 年邓迪数值分析双年会论文集,D.F.格里菲斯和 G.A. Watson(编辑),Addison Wesley Longman,哈洛,英国,第 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

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.fmin。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。