scipy.optimize.minimize中公差测量的变量是什么?

xkftehaa  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(208)

我的理解是,在对minimize的方法调用中,tol表示完成优化所需的代价函数中的最小差值(即,fun(方法调用中的第一个参数)返回的任何值的差值)。

scipy.optimize.minimize(fun, x0, args=(),
 method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(),
 tol=None, callback=None, options=None)

然而,我显然错了,因为当我设置tol = 1E-3,并在每次迭代时打印fun的值时,我看到了以下内容:

0.3078
0.3074
...

tol代表什么?
特定的优化算法还具有另一个称为xtol的参数,其为
xtol:float收敛可接受的解xopt中的平均相对误差。
例如,请参见:
http://docs.scipy.org/doc/scipy/reference/optimize.minimize-newtoncg.html#minimize-method-newton-cg
那么xtoltol代表什么呢?它们有什么区别呢?

mzaanser

mzaanser1#

很晚了,但放弃了一个答案,希望它能帮助别人以后。
在任何优化调用过程中,都可以定义(控制)多个公差。Tol、ftol、xtol、catol和其他多个公差。通常,您可以从这些变量中推断出以下内容:

  • ftol* =目标函数容差。检查以确保最大化/最小化任务的精度。
  • xtol* =每个步长的容差。对于少数算法,步长是信赖域、导数或搜索空间相对于初始猜测的函数。这意味着您可能会看到可变步长,理想情况下是从大到小。xtol提供了一个精确控制,根据步长变得有多小,求解器何时应该终止。
  • catol* =约束公差。提供优化任务中约束(如果有)的一般界限。
  • gtol* =如果解算器/方法使用“梯度”,则此选项用于控制梯度。

根据您正在解决的问题和所涉及的目标/约束条件,每个问题都有其重要性。

相关问题