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

BlackBoxOptim.jl

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

BlackBoxOptim — это пакет Julia, реализующий (мета-)эвристические/стохастические алгоритмы, не требующие дифференцируемости.

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

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

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

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

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

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

Алгоритм BlackBoxOptim вызывается префиксом BBO_, за которым следует имя алгоритма:

  • Естественные эволюционные стратегии:

    • Разделяемая естественная эволюционная стратегия: BBO_separable_nes()

    • Экспоненциальная естественная эволюционная стратегия: BBO_xnes()

    • Экспоненциальная естественная эволюционная стратегия со взвешенными расстояниями: BBO_dxnes()

  • Оптимизаторы методом дифференциальной эволюции (пять различных):

    • Адаптивный оптимизатор по схеме DE/rand/1/bin: BBO_adaptive_de_rand_1_bin()

    • Адаптивный оптимизатор по схеме DE/rand/1/bin с ограниченным радиусом выборки: BBO_adaptive_de_rand_1_bin_radiuslimited()

    • Оптимизатор по схеме DE/rand/1/bin: BBO_de_rand_1_bin()

    • Оптимизатор по схеме DE/rand/1/bin с ограниченным радиусом выборки (тип тривиальной географии): BBO_de_rand_1_bin_radiuslimited()

    • Оптимизатор по схеме DE/rand/2/bin: de_rand_2_bin()

    • Оптимизатор по схеме DE/rand/2/bin с ограниченным радиусом выборки (тип тривиальной географии): BBO_de_rand_2_bin_radiuslimited()

  • Прямой поиск:

    • Поиск порождающих множеств:

      • Поиск по компасу / поиск координат: BBO_generating_set_search()

      • Прямой поиск через вероятностный спуск: BBO_probabilistic_descent()

  • Меметический поиск с повторной выборкой:

    • Меметический поиск с повторной выборкой (RS): BBO_resampling_memetic_search()

    • Меметический поиск с наследованием повторной выборки (RIS): BBO_resampling_inheritance_memetic_search()

  • Стохастическая аппроксимация:

    • Стохастическая аппроксимация с одновременным возмущением (SPSA): BBO_simultaneous_perturbation_stochastic_approximation()

  • RandomSearch (для сравнения): BBO_random_search()

Рекомендуемый оптимизатор — BBO_adaptive_de_rand_1_bin_radiuslimited()

Доступные в настоящее время алгоритмы перечислены здесь

Пример

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

using Optimization, OptimizationBBO
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, BBO_adaptive_de_rand_1_bin_radiuslimited(), maxiters = 100000,
    maxtime = 1000.0)
retcode: Default
u: 2-element Vector{Float64}:
 1.0
 1.0