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