SurrogateModelOptim.jl

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

SurrogateModelOptim

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.

Installation

The package is registered and can be installed with Pkg.add.

julia> Pkg.add("SurrogateModelOptim")

Optimization

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.

Documentation

  • STABLEtagged version of the documentation.

Author

Citation

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

Used By Packages

No packages found.