Surrogate modeling package in Julia using radial basis functions for use in optimisation.
Author MrUrq
17 Stars
Updated Last
8 Months Ago
Started In
December 2018


Stable Build Status Codecov Project Status: Active – The project has reached a stable, usable state and is being actively developed.

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;
                    num_interpolants=N*x, #Where N is an integer number

num_interpolants=10 meaning that the surrogate model ensemble contains 10 RBF interpolants has shown good performance for a variety of functions.


  • STABLEtagged version of the documentation.



	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},