2

我在 scipy 中使用差分进化优化器,但我不理解 tol 参数背后的直觉。具体在文档中说:

tol:浮动,可选

当总体能量的平均值乘以 tol 除以总体能量的标准差大于 1 时,求解过程终止:
convergence = mean(pop) * tol / stdev(pop) > 1

从用户的角度来看,设置 tol 代表什么?

4

1 回答 1

3

也许文档中的公式更容易理解为以下形式(参见代码中的第 508 和 526 行):

std(population_energies) / mean(population_energies) < tol

这意味着当群体中每个个体的能量标准偏差(由平均值规范)小于给定的容差值时,就会达到收敛。

优化算法是迭代的。每次迭代都会找到更好的解决方案。容差参数用于定义停止条件。停止条件实际上是所有个体(参数集)具有大致相同的能量,即相同的成本函数值。然后,给出最低能量的参数集作为解返回。

这也意味着所有个体在参数空间中都相对接近。因此,在接下来的几代人中,不能指望有更好的解决方案。

于 2018-09-03T11:42:37.117 回答