Evolutionary is a Julia package implementing various evolutionary and genetic algorithm.

Installation: OptimizationEvolutionary.jl

To use this package, install the OptimizationEvolutionary package:

import Pkg; Pkg.add("OptimizationEvolutionary")

Global Optimizer

Without Constraint Equations

The methods in Evolutionary are performing global optimization on problems without constraint equations. These methods work both with and without lower and upper constraints set by lb and ub in the OptimizationProblem.

A Evolutionary algorithm is called by one of the following:

Algorithm specific options are defined as kwargs. See the respective documentation for more detail.


The Rosenbrock function can optimized using the Evolutionary.CMAES() as follows:

rosenbrock(x, p) =  (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
x0 = zeros(2)
p  = [1.0, 100.0]
f = OptimizationFunction(rosenbrock)
prob = Optimization.OptimizationProblem(f, x0, p, lb = [-1.0,-1.0], ub = [1.0,1.0])
sol = solve(prob, Evolutionary.CMAES(μ =40 , λ = 100))