BlackBoxOptim.jl
BlackBoxOptim is a Julia package implementing (Meta-)heuristic/stochastic algorithms that do not require differentiability.
Installation: OptimizationBBO.jl
To use this package, install the OptimizationBBO package:
import Pkg;
Pkg.add("OptimizationBBO");Global Optimizers
Without Constraint Equations
The algorithms in BlackBoxOptim are performing global optimization on problems without constraint equations. However, lower and upper constraints set by lb and ub in the OptimizationProblem are required.
A BlackBoxOptim algorithm is called by BBO_ prefix followed by the algorithm name:
Natural Evolution Strategies:
- Separable NES:
BBO_separable_nes() - Exponential NES:
BBO_xnes() - Distance-weighted Exponential NES:
BBO_dxnes()
- Separable NES:
Differential Evolution optimizers, 5 different:
- Adaptive DE/rand/1/bin:
BBO_adaptive_de_rand_1_bin() - Adaptive DE/rand/1/bin with radius limited sampling:
BBO_adaptive_de_rand_1_bin_radiuslimited() - DE/rand/1/bin:
BBO_de_rand_1_bin() - DE/rand/1/bin with radius limited sampling (a type of trivial geography):
BBO_de_rand_1_bin_radiuslimited() - DE/rand/2/bin:
de_rand_2_bin() - DE/rand/2/bin with radius limited sampling (a type of trivial geography):
BBO_de_rand_2_bin_radiuslimited()
- Adaptive DE/rand/1/bin:
Direct search:
- Generating set search:
- Compass/coordinate search:
BBO_generating_set_search() - Direct search through probabilistic descent:
BBO_probabilistic_descent()
- Compass/coordinate search:
- Generating set search:
Resampling Memetic Searchers:
- Resampling Memetic Search (RS):
BBO_resampling_memetic_search() - Resampling Inheritance Memetic Search (RIS):
BBO_resampling_inheritance_memetic_search()
- Resampling Memetic Search (RS):
Stochastic Approximation:
- Simultaneous Perturbation Stochastic Approximation (SPSA):
BBO_simultaneous_perturbation_stochastic_approximation()
- Simultaneous Perturbation Stochastic Approximation (SPSA):
RandomSearch (to compare to):
BBO_random_search()
The recommended optimizer is BBO_adaptive_de_rand_1_bin_radiuslimited()
The currently available algorithms are listed here
OptimizationBBO.BBO_separable_nes — Type
BBO_separable_nes()BlackBoxOptim global optimizer wrapper for the separable_nes method.
OptimizationBBO.BBO_xnes — Type
BBO_xnes()BlackBoxOptim global optimizer wrapper for the xnes method.
OptimizationBBO.BBO_dxnes — Type
BBO_dxnes()BlackBoxOptim global optimizer wrapper for the dxnes method.
OptimizationBBO.BBO_adaptive_de_rand_1_bin — Type
BBO_adaptive_de_rand_1_bin()BlackBoxOptim global optimizer wrapper for the adaptive_de_rand_1_bin method.
OptimizationBBO.BBO_adaptive_de_rand_1_bin_radiuslimited — Type
BBO_adaptive_de_rand_1_bin_radiuslimited()BlackBoxOptim global optimizer wrapper for the adaptive_de_rand_1_bin_radiuslimited method.
OptimizationBBO.BBO_de_rand_1_bin — Type
BBO_de_rand_1_bin()BlackBoxOptim global optimizer wrapper for the de_rand_1_bin method.
OptimizationBBO.BBO_de_rand_1_bin_radiuslimited — Type
BBO_de_rand_1_bin_radiuslimited()BlackBoxOptim global optimizer wrapper for the de_rand_1_bin_radiuslimited method.
OptimizationBBO.BBO_de_rand_2_bin — Type
BBO_de_rand_2_bin()BlackBoxOptim global optimizer wrapper for the de_rand_2_bin method.
OptimizationBBO.BBO_de_rand_2_bin_radiuslimited — Type
BBO_de_rand_2_bin_radiuslimited()BlackBoxOptim global optimizer wrapper for the de_rand_2_bin_radiuslimited method.
OptimizationBBO.BBO_generating_set_search — Type
BBO_generating_set_search()BlackBoxOptim global optimizer wrapper for the generating_set_search method.
OptimizationBBO.BBO_probabilistic_descent — Type
BBO_probabilistic_descent()BlackBoxOptim global optimizer wrapper for the probabilistic_descent method.
OptimizationBBO.BBO_resampling_memetic_search — Type
BBO_resampling_memetic_search()BlackBoxOptim global optimizer wrapper for the resampling_memetic_search method.
OptimizationBBO.BBO_resampling_inheritance_memetic_search — Type
BBO_resampling_inheritance_memetic_search()BlackBoxOptim global optimizer wrapper for the resampling_inheritance_memetic_search method.
OptimizationBBO.BBO_simultaneous_perturbation_stochastic_approximation — Type
BBO_simultaneous_perturbation_stochastic_approximation()BlackBoxOptim global optimizer wrapper for the simultaneous_perturbation_stochastic_approximation method.
OptimizationBBO.BBO_random_search — Type
BBO_random_search()BlackBoxOptim global optimizer wrapper for the random_search method.
OptimizationBBO.BBO_borg_moea — Type
BBO_borg_moea()BlackBoxOptim multi-objective global optimizer wrapper using the borg_moea method.
Example
The Rosenbrock function can be optimized using the BBO_adaptive_de_rand_1_bin_radiuslimited() as follows:
using OptimizationBase, 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 = 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