# 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.003806818751507013, 0.0010760143922343701, 0.02543210654050765]
Minimum: 0.0006624417190668529
Iterations: 50
* 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.1928 (vs limit Inf)
Iterations: 50
f(x) calls: 5100
```