gpt4 book ai didi

scipy - xtol 和 ftol 使用 scipy.optimize 的 fmin() 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 23:27:47 29 4
gpt4 key购买 nike

我开始使用函数 fmin 和一个非常简单的例子,并尝试获取最小化乘法值的向量的值:

def prueba(x,y):
print "valor1:",x[0],"\n"
print "valor2:",x[1],"\n"
print "valor3:",x[2],"\n"
print "valor4:",x[3],"\n"
min=x[0]*x[1]*x[2]*x[3]
print min
return min

sal = fmin(prueba,x0=array([1, 2, 3,4]),args="1",retall=1,xtol=0.5,ftol=0.5)#maxfun=1,maxiter=1,retall=1,args="1")

但如果我不定义 xtol 和 ftol 出现:
"Warning: Maximum number of function evaluations has been exceeded."

为此,我使用参数 xtol 定义了算法的收敛性。和 ftol ,但我仍然不明白它们之间有什么区别,我看起来一样,但是如果我删除两者之一,我会再次收到警告。
xtol到底有什么区别和 ftol ?,在这种情况下应该使用哪个?。

我已阅读文档:

OtherParameters

xtol : number
acceptable relative error in xopt for convergence.
ftol : number
acceptable relative error in func(xopt) for convergence.



我还是不明白

最佳答案

这是我的理解。它类似于 mathworks 函数 fminsearch .他们定义了这些值:

TolFun:函数值的终止容差
TolX:x 上的端接容差

随着搜索以迭代方式进行。 x值的差异从一次迭代到另一次迭代变得越来越小,直到它不再重要并且您还不如完成。功能容差也是如此。在您的示例中,prueba被评估,并且它从迭代到迭代的返回值之间的差异越来越小,直到它也无关紧要。你问你应该使用哪个。这可能有点像实验方法。过去我经常使用:

xtol = 1e-6;
ftol = 1e-6;

它似乎可以很好地解决许多问题,并且是一个很好的起点。您可能会发现,如果需要调整,这将是显而易见的。就像可怕的收敛时间。数据拟合度差等。希望这会有所帮助。

关于scipy - xtol 和 ftol 使用 scipy.optimize 的 fmin() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9667514/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com