Explain the intuition for the tol paramer in scipy differential evolution

拟墨画扇 提交于 2021-02-19 06:45:05

问题


I am using the differential evolution optimizer in scipy and I don't understand the intuition behind the tol argument. Specifically is say in the documentation:

tol: float, optional

When the mean of the population energies, multiplied by tol, divided by the standard deviation of the population energies is greater than 1 the solving process terminates:
convergence = mean(pop) * tol / stdev(pop) > 1

What does setting tol represent from a user perspective?


回答1:


Maybe the formula in the documentation is easier to understand in the following form (see lines 508 and 526 in the code):

std(population_energies) / mean(population_energies) < tol

It means that convergence is reached when the standard deviation of the energies for each individual in the population, normed by the average, is smaller than the given tolerance value.

The optimization algorithm is iterative. At every iteration a better solution is found. The tolerance parameters is used to define a stopping condition. The stopping condition is actually that all the individuals (parameter sets) have approximately the same energy, i.e. the same cost function value. Then, the parameter set giving the lowest energy is returned as a solution.

It also implies that all the individuals are relatively close to each other in the parameter space. So, no better solution can be expected on the following generations.



来源:https://stackoverflow.com/questions/52142965/explain-the-intuition-for-the-tol-paramer-in-scipy-differential-evolution

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!