[SciPy-Dev] Github code for Differential Evolution reevaluations

Andrew Nelson andyfaff at gmail.com
Wed Apr 1 19:11:09 EDT 2015


On 1 April 2015 at 03:29, James Phillips <zunzun at zunzun.com> wrote:

> I have just reviewed the Differential Evolution code in github.  It is is
> particularly well coded and most algorithmically thorough, my professional
> compliments.
>

Thank you, the community (me at least) appreciates that.


> I noticed in the older DE code I use there is a possible performance
> improvement, and this seems to be the case in the github code as well.  Not
> every population vector changes within a generation, yet my older code
> reevaluates the unchanged vectors.  Of course this does not change the
> final results, but is a point of potential savings in total computation
> time.
>

I'm not convinced that re-evaluating unchanged members of the population
(within a generation) improves performance.  There are two performance
factors to be considered here:
1) Does the change result in a lower energy at the end?
2) Does the change lead to faster termination/convergence?
By re-evaluating members that haven't changed until they do change I think
one is reducing genetic diversity.  That unchanged vector might in fact
create a better solution in the next generation if it were allowed to
remain.  So I don't think it produces a lower energy at the end.
However, sometimes 'outliers' do prevent the solving process from
terminating.  The scipy implentation stops when the variance of the
population energies falls below a certain level.  If there is one outlier
that persists this can cause the solving process to continue for a little
while longer, but not too much.

In the end the proof is in the pudding.  There is a PR in progress at
https://github.com/scipy/scipy/pull/4191.  This PR adds many multivariate
functions to benchmark global optimizers.  If your suggestions improve
performance, as measured against those benchmarks, then perhaps we could
consider it as an option.

A.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20150402/64b45238/attachment.html>


More information about the SciPy-Dev mailing list