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

GCMAES.jl

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

GCMAES — это пакет Julia, в котором реализована градиентная эволюционная стратегия с адаптацией ковариационной матрицы, которая может использовать информацию о градиенте для ускорения оптимизации.

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

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

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

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

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

Алгоритм GCMAES вызывается с помощью функции GCMAESOpt(), а начальная дисперсия поиска задается в именованном аргументе σ0 (по умолчанию σ0 = 0.2)

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

Пример

Функцию Розенброка можно оптимизировать с помощью GCMAESOpt() без использования информации о градиенте следующим образом:

using Optimization, OptimizationGCMAES
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, GCMAESOpt())
retcode: Success
u: 2-element Vector{Float64}:
 1.0000000125066852
 1.0000000254521708

Можно также использовать информацию о градиенте задачи оптимизации с целью облегчения оптимизации следующим образом:

f = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff())
prob = Optimization.OptimizationProblem(f, x0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0])
sol = solve(prob, GCMAESOpt())
retcode: Success
u: 2-element Vector{Float64}:
 1.000000036854553
 1.0000000668734104