pythonoptimizationscipyscipy-optimizedifferential-evolution

What are 'population energies'?


In scipy.optimize.differential_evolution, the convergence criteria are that:

the solving stops when
np.std(population_energies) <= 
atol + tol * np.abs(np.mean(population_energies))

where atol and tol are the 
absolute and relative tolerance respectively.

This begs the question, what are 'population energies' please?

This could be a follow up question to: Explain the intuition for the tol paramer in scipy differential evolution

I tried looking in the code, but I got:

self.population_energies = np.ones(popsize * parameter_count) * np.inf
self.population_energies[index] = self.func(parameters,*self.args)

So a follow up question would be what does that do please?


Solution

  • As you wrote in a comment, it is really just a function evaluation for each population vector. The word energy most likely comes from the term "energy minimization". This term is quite popular in machine learning and basically means any function minimization where you map scalar energy (a measure of compatibility) to each variable's configurations. You can read further about this on stats.stackexchange.