Skip to content

Julia implementations of Natural Evolutionary Strategies and CMA-ES, based on Cambrian

License

Notifications You must be signed in to change notification settings

d9w/EvolutionaryStrategies.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EvolutionaryStrategies.jl

Build Status Coverage Status codecov

Julia implementations of Natural Evolutionary Strategies and CMA-ES for the Cambrian.jl framework.

Installation

EvolutionaryStrategies.jl can be installed through the Julia package manager:

pkg> add EvolutionaryStrategies

Tests are also provided:

pkg> test EvolutionaryStrategies

Algorithms

EvolutionaryStrategies implements the Exponential and Separable Natural Evolutionary Strategies, as described in:

Wierstra, D., Schaul, T., Glasmachers, T., Sun, Y., Peters, J., & Schmidhuber, J. (2014). Natural evolution strategies. The Journal of Machine Learning Research, 15(1), 949-980. pdf

and the Covariance Matrix Adaptation Evolutionary Strategy (CMA-ES), as described in:

Hansen, N., & Ostermeier, A. (2001). Completely derandomized self-adaptation in evolution strategies. Evolutionary computation, 9(2), 159-195. pdf

with additional implementation details based on pycma.

Usage

The function to optimize must first be defined:

fitness(i::Individual) = -sum(i.genes .^ 2)

Note that Cambrian by default maximizes objective fitness, which is common in neuroevolution and genetic programming. Evolutionary Strategies often minimize objective functions, but for coherence with Cambrian, EvolutionaryStrategies.jl maximizes. For objective function definitions, you must negate fitness if aiming to minimize, as demonstrated above.

Then, create and run the desired ES:

cfg = get_config("cfg/cma-es.yaml")
es = CMAES(cfg, fitness)
run!(es)

Examples can be found in the scripts/ directory.

Similar packages

Other Evolutionary Strategies resources, notably other Julia packages:

Development

Next steps (pull requests are greatly appreciated):

  • Separable NES
  • CMA-ES
  • Multi-objective
  • Constraints/boundaries
  • Generalization to other types besides Float64

About

Julia implementations of Natural Evolutionary Strategies and CMA-ES, based on Cambrian

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages