SurrogateModelOptim is a Julia package for the optimisation of expensive functions. The surrogate model is based on an ensemble of Radial Basis Function interpolants with adaptive axis scaling. For more details, see our paper.
The package is registered and can be installed with Pkg.add
.
julia> Pkg.add("SurrogateModelOptim")
This package is intended to be used for functions which are expensive. Expensive is in this case considered a function that evaluates in several minutes to days. The simplest form of usage is as follows.
julia> using SurrogateModelOptim
julia> rosenbrock_2D(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2
julia> search_range=[(-5.0,5.0),(-5.0,5.0)]
julia> smoptimize(rosenbrock_2D, search_range)
There are many options accessible through the options interface. Note that the default options may be updated between minor versions for performance reasons. The target is to minimize the function value. The model is created from a Latin Hypercube sampling plan. Several Radial Basis Function surrogate models are fitted to the data where the ensemble of surrogates is used to predict new design locations. New designs are added which exploits the surrogate model as well as explores the design space.
Due to the high cost of creating several surrogates it is highly advisable to create
the surrogate model in parallel. Start julia in parallel with > julia -p x
where x
is the number of available cores. The previous example can then be run as
julia> result = smoptimize(rosenbrock_2D, search_range;
options=SurrogateModelOptim.Options(
iterations=25,
num_interpolants=N*x, #Where N is an integer number
num_start_samples=5,
));
num_interpolants=10
meaning that the surrogate model ensemble contains 10 RBF interpolants
has shown good performance for a variety of functions.
- STABLE — tagged version of the documentation.
- Magnus Urquhart - @MrUrq
@article{urquhart_surrogate-based_2020,
title = {Surrogate-based optimisation using adaptively scaled radial basis functions},
volume = {88},
issn = {1568-4946},
doi = {10.1016/j.asoc.2019.106050},
journal = {Applied Soft Computing},
author = {Urquhart, Magnus and Ljungskog, Emil and Sebben, Simone},
year = {2020},
}