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