Model infill

New design locations can be found with

SurrogateModelOptim.model_infillFunction
model_infill(search_range::Vector{Tuple{Float64,Float64}},plan::AbstractArray{T,2},
samples::AbstractArray{T,2},sm_interpolant; options::Options=Options()) where T

Infill function that calculates the location of new samples based on the supplied options. The returned options are updated to facilitate cycling through the infill objective functions.

...

Arguments

  • search_range::Vector{Tuple{Float64,Float64}: a vector of tuples containing the lower and upper limits for each dimension. length(search_range) is equal to number of dimensions.
  • plan::AbstractArray{T,2}: sample locations where each column corresponds to the location of one point. size(plan) = (num_dimensions,num_samples).
  • samples::AbstractArray{T,2}: function value at each sample location. each column contains one value from the corresponding plan location. size(samples) = (1,num_samples).
  • options=Options(): all options available to customize the surrogate infill.

...

source

The infill criteria is optimized based on the supplied options. Custom criteria can be implemented and solved for by using the surrogate_model with your favourite optimization library.

In the case where several infill points are requested, each infill criteria is used cyclically. If the number of requested infill points exceeds the number of infill criteria, a point from the pareto front of the infill objectives is selected. The selected points is the point which maximizes the distance to the already sampled points to explore the search space. In the case where the requested infill points can't be found without duplicates, a random point is added. This happens very rarely. Duplicates are never added. The infill type can be seen during run time with trace=:verbose, alternatively the returned results contain all the infill criteria used.

Example

The package supplied model infill can be used as

julia> infill_plan, infill_type, infill_prediction, options = model_infill(search_range,plan,samples,sm_interpolant; options=SurrogateModelOptim.Options())
Note

The options are updated to cycle through the infill_type.