我正在使用差异进化 https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.optimize.differential_evolution.htmlscipy 中的优化器,我不明白 tol 参数背后的直觉。具体是文档中说的:
tol:浮动,可选
当总体能量的平均值乘以 tol,除以
总体能量的标准差大于 1
求解过程终止:
convergence = mean(pop) * tol / stdev(pop) > 1
从用户角度来看,设置 tol 代表什么?
也许文档中的公式以下面的形式更容易理解(参见第 508 行和 526 行)the code https://github.com/scipy/scipy/blob/v0.15.1/scipy/optimize/_differentialevolution.py#L508):
std(population_energies) / mean(population_energies) < tol
这意味着当群体中每个个体的能量标准差(以平均值为范数)小于给定的容差值时,就达到了收敛。
优化算法是迭代的。每次迭代都会找到更好的解决方案。容差参数用于定义停止条件。停止条件实际上是所有个体(参数集)具有大致相同的能量,即相同的成本函数值。然后,返回给出最低能量的参数集作为解。
它还意味着所有个体在参数空间中彼此相对接近。因此,对于下一代来说,不能指望有更好的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)