[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