Experimenting with multistart optimization methods in Julia.
WORK IN PROGRESS. Expect API changes, but SemVer 2 will of course be respected.
Documentation is very much WIP.
-
Define a minimization problem with the objective, lower- and upper bounds,
-
pick a local method for each multistart point (currently methods in NLopt.jl are supported),
-
pick a multistart method (currently we have TikTak from Arnoud, Guvenen, and Kleineberg (2019)).
Example:
using MultistartOptimization, NLopt
P = MinimizationProblem(x -> sum(abs2, x), -ones(10), ones(10))
local_method = NLoptLocalMethod(NLopt.LN_BOBYQA)
multistart_method = TikTak(100)
p = multistart_minimization(multistart_method, local_method, P)
p.location, p.value
Number of function evaluations for
TikTak
with 100 Sobol initial points,- dimension
10
, - local search terminating with absolute tolerance
1e-8
in the position
ShiftedQuadratic | Griewank | LevyMontalvo2 | Rastrigin | Rosenbrock | |
---|---|---|---|---|---|
LN_BOBYQA |
569 | 2633 | 4235 | FAIL | 10995 |
LN_NELDERMEAD |
15750 | 17108 | 33088 | FAIL | 42785 |
LN_NEWUOA_BOUND |
580 | 2088 | 2253 | FAIL | 13409 |
LN_SBPLX |
12329 | 11806 | 11447 | FAIL | 7020038 |
LN_COBYLA |
16943 | 37414 | 32792 | FAIL | 985676 |
LN_PRAXIS |
1850 | 9886 | 8548 | FAIL | 15436 |