Evolutionary.jl

The package Evolutionary aims to provide a library for evolutionary optimization. It provides implementation of $(\mu/\rho \; \stackrel{+}{,} \;\lambda)$-Evolution Strategy, $(\mu/\mu_I, \;\lambda)$-Covariance Matrix Adaptation Evolution Strategy, Genetic Algorithm, and Differential Evolution as well as a rich set of mutation, recombination, crossover and selection functions.

Getting started

To install the package just type

] add Evolutionary

A simple example of using the GA algorithm to find minimum of the Sphere function.

julia> using Evolutionary

julia> result = Evolutionary.optimize(
             x -> sum(x.^2), ones(3),
             GA(populationSize = 100, selection = susinv,
                crossover = DC, mutation = PLM()))

 * Status: success

 * Candidate solution
    Minimizer:  [0.05574036648954539, 0.04420536751612103, -0.008522846214264357]
    Minimum:    0.005133741881216163
    Iterations: 44

 * Found with
    Algorithm: GA[P=100,x=0.8,μ=0.1,ɛ=0]

 * Convergence measures
    |f(x) - f(x')| = 0.0 ≤ 1.0e-12

 * Work counters
    Seconds run:   0.2194 (vs limit Inf)
    Iterations:    44
    f(x) calls:    4500