Документация Engee

Evolutionary.jl

Страница в процессе перевода.

Evolutionary — это пакет Julia, в котором реализованы различные эволюционные и генетические алгоритмы.

Установка: OptimizationEvolutionary.jl

Чтобы использовать этот пакет, установите пакет OptimizationEvolutionary:

import Pkg;
Pkg.add("OptimizationEvolutionary");

Глобальный оптимизатор

Без уравнений ограничений

Методы в Evolutionary выполняют глобальную оптимизацию задач без уравнений ограничений. Эти методы работают как с нижними и верхними ограничениями, заданными в lb и ub в OptimizationProblem, так и без них.

Алгоритм Evolutionary вызывается одним из следующих способов:

  • Evolutionary.GA(): оптимизатор на основе генетического алгоритма

  • Evolutionary.DE(): оптимизатор на основе дифференциальной эволюции

  • Evolutionary.ES(): алгоритм эволюционной стратегии

  • Evolutionary.CMAES(): алгоритм эволюционной стратегии с адаптацией ковариационной матрицы

Относящиеся к алгоритму параметры определяются как kwargs. Дополнительные сведения см. в соответствующей документации.

Пример

Функцию Розенброка можно оптимизировать с помощью Evolutionary.CMAES() следующим образом:

using Optimization, OptimizationEvolutionary
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))
retcode: Success
u: 2-element Vector{Float64}:
 1.0
 1.0