DEAP / deap

Distributed Evolutionary Algorithms in Python
http://deap.readthedocs.org/
GNU Lesser General Public License v3.0
5.7k stars 1.11k forks source link

What implementation of CMA-ES is deap using? #132

Closed mgab closed 8 years ago

mgab commented 8 years ago

The documentation is not providing any reference neither for deap.cma.Strategy or deap.cma.StrategyOnePlusLambda implementations.

Looking for CMA-ES bibliography, I found other implementations of the algorithm. I can imagine that all of them are doing essentially the same, but I wonder if the implementation present in the deap is based on any source.

Thanks!

cmd-ntrf commented 8 years ago

The implementation of cma.Strategy is based on the Matlab code available on Hansen's website : https://www.lri.fr/~hansen/cmaes_inmatlab.html. This effectively implement the article to which you are referring in this PR.

However, cma.StrategyOnePlusLambda is based on a more recent paper by Christian Igel that describes an implementation of CMA-ES for multiobjective optimization, here is the reference

Evol Comput. 2007 Spring;15(1):1-28.
Covariance matrix adaptation for multi-objective optimization.
Igel C., Hansen N., Roth S.
mgab commented 8 years ago

Great, thanks!

I updated the pull request with the correct reference for the cma.StragetyOnePlusLambda. I tried to format the reference style to match the other one.

I didn't mention Hansen's website matlab code, though. Shall I add it? Something like:

A strategy that will keep track of the basic parameters of the CMA-ES
algorithm. The code is based on this `matlab implementation`_ of the
algorithm described in [Hansen2001]_.

[...]

.. _matlab implementation: https://www.lri.fr/~hansen/cmaes_inmatlab.html
.. [Hansen2001] Hansen and Ostermeier, 2001. Completely Derandomized
   Self-Adaptation in Evolution Strategies. *Evolutionary Computation*