POO: Parallel Optimistic Optimization

View source: R/POO.R

POOR Documentation

Parallel Optimistic Optimization

Description

Global optimization of a blackbox function given a finite budget of noisy evaluations, via the Parallel Optimistic Optimization algorithm. The knowledge of the function's smoothness is not required.

Usage

POO(f, horizon = 100, noise.level, rhomax = 20, nu = 1)

Arguments

f

function to maximize.

horizon

maximum number of function evaluations.

noise.level

scalar bound on the noise value.

rhomax

number of equidistant rho values in [0,1], that are used by the corresponding HOO subroutines, see Details.

nu

scalar (> 0) assessing the complexity of the function, along with rho (see the near optimality definition in the reference below).

Details

Only 1-dimensional functions defined on [0, 1] are handled so far. POO uses Hierarchical Optimistic Optimisation (HOO) as a subroutine, whose number is set by rhomax. POO handles more difficult functions than StoSOO.

Value

Random point evaluated by the best HOO, in the form of a list with elements:

  • par parameter value at this point,

  • value noisy value at par,

  • best_rho best rho value.

Author(s)

M. Binois (translation in R code), J.-B. Grill, M. Valko and R. Munos (Python code)

References

J.-B. Grill, M. Valko and R. Munos (2015), Black-box optimization of noisy functions with unknown smoothness, NIPS, 667-675 https://inria.hal.science/hal-01222915. Python code: https://team.inria.fr/sequel/software/POO/.

Examples

## Not run: 
#------------------------------------------------------------
# Maximization with POO
#------------------------------------------------------------
set.seed(10)
noise.level <- 0.05

## Define and display objective
ftest <- function(x){return(double_sine(x) + runif(1, min = -noise.level, max = noise.level))}
xgrid <- seq(0, 1, length.out = 1000)
plot(xgrid, sapply(xgrid, double_sine), type = 'l', ylab = "double_sine(x)", xlab = 'x')

## Optimization
Sol <- POO(ftest, horizon = 1000, noise.level = noise.level)

## Display result
abline(v = Sol$par)

## End(Not run)

OOR documentation built on Aug. 23, 2023, 1:08 a.m.

Related to POO in OOR...