Skip to content

Surrogate modeling package in Julia using radial basis functions for use in optimisation.

License

Notifications You must be signed in to change notification settings

eljungsk/SurrogateModelOptim.jl

 
 

Repository files navigation

SurrogateModelOptim

Stable Latest 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.

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. 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 in an alternating fashion between the predicted minimum and the largest standard deviation of the surrogate predictions.

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

TBD

About

Surrogate modeling package in Julia using radial basis functions for use in optimisation.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Julia 100.0%