- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
minimize(method=’Nelder-Mead’) 的文档读取:收敛可接受的迭代之间 xopt 的绝对误差。这到底是什么意思?是否有示例说明如何使用它?
最佳答案
简答:就绝对误差而言,它是您希望结果的准确度。如果xatol
是 0.01,该方法将最小值的位置返回为 [1.23, 4.56]
,那么就有希望(但不确定)实际最小值的坐标在 1.22 - 1.24 和 4.55 - 4.57 之间。
长答案。Nelder-Mead method使用单形(二维三角形、三维四面体等)进行操作。维基百科页面说明了这个单纯形如何向最小值移动,同时改变大小和形状(它在接近最小值时变小)。如果满足两个条件,则认为搜索成功:
xatol
(此方法不推荐使用选项 xtol
;建议使用 xatol
)fatol
. 通俗地说,这意味着单纯形变小并且目标函数在其顶点处的值几乎相同。正式地,this is the stopping condition :
if (numpy.max(numpy.ravel(numpy.abs(sim[1:] - sim[0]))) <= xatol and
numpy.max(numpy.abs(fsim[0] - fsim[1:])) <= fatol):
break
在这里sim[0]
是单纯形的第一个顶点,sim[1:]
是其余的顶点。该条件要求每个顶点的每个坐标都在 xatol
内sim[0]
的对应坐标.数组 fsim
保存这些顶点的函数值;这里的要求是 |fsim[k] - fsim[0]| <= fatol
对于所有 k。
默认值xatol
是 0.0001。当搜索成功时,最终的单纯形会覆盖一个最小值点;因此,单纯形的大小是我们知道最小值位置的精度。较小 xatol
可用于更精确地查明最小值,但代价是运行时间更长。
寻找(x^2+y^2)的最小值,当然是在点(0, 0)。使用默认设置,答案会偏离大约 3e-5。
>>> from scipy.optimize import minimize
>>> minimize(lambda x: x[0]**2+x[1]**2, [1, 2], method='Nelder-Mead').x
array([ -3.62769110e-05, -3.03662006e-05])
较小的xatol
(1e-6 而不是默认的 1e-4),结果准确度提高了大约 100 倍,误差约为 3e-7。
>>> minimize(lambda x: x[0]**2+x[1]**2, [1, 2], method='Nelder-Mead', options={'xatol': 1e-6}).x
array([ 3.12645001e-07, -2.53507540e-07])
关于python - xtol 在 minimize(method='Nelder-Mead') 中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43644797/
我正在尝试使用 Nelder-Mead 方法优化某个函数,并且我需要帮助理解一些参数。我对数值优化领域相当陌生,所以请原谅我对更有经验的用户可能显而易见的事情的无知。我注意到我已经看过 minimiz
我读过 Nelder Mead 算法正在为无约束优化工作。 http://www.scholarpedia.org/article/Nelder-Mead_algorithm 我认为在 Matlab
我正在使用scipy.optimize.minimize,使用默认方法(“Neldear-Mead”)。我尝试最小化的函数并不是严格凸的。它在一些重要区域保持相同的值。 我遇到的问题是算法采取的步骤太
我想知道初始顶点 x0 的选择以及用于计算其他顶点的步骤如何影响 Nelder-Mead 算法给出的最终结果。这是否容易在 x0 附近产生局部最优? 最佳答案 是的,起点 x0 的选择会影响最小化的结
我正在尝试使用 Nelder-Mead 算法最小化函数 mymodel 以适应我的数据。这是通过 scipy 的 optimize.fmin 在 myfit 函数中完成的。我想我已经很接近了,但我一定
我想知道 Nelder-Mead 算法是否在 c++ boost 库中实现,例如 toms748_solve。我在文档中找不到它,在我自己实现代码之前我会问你。非常感谢。 最佳答案 我发现变形虫(Ne
我正在尝试使用 scipy Nelder-Mead 单纯形搜索函数来查找非线性函数的最小值。看来我的单纯形被卡住了,因为它从一个太小的初始单纯形开始。不幸的是,我在 scipy 中看不到可以更改某些单
我写了一个脚本,我相信它应该在 Python 和 R 中产生相同的结果,但它们产生的答案却截然不同。每个尝试通过使用 Nelder-Mead 最小化偏差来将模型拟合到模拟数据。总的来说,R 中的 op
minimize(method=’Nelder-Mead’) 的文档读取:收敛可接受的迭代之间 xopt 的绝对误差。这到底是什么意思?是否有示例说明如何使用它? 最佳答案 简答:就绝对误差而言,它是
我是一名优秀的程序员,十分优秀!