Giter Club home page Giter Club logo

evolutionarystrategies.jl's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.