activeREMBO: Random Embedding Bayesian Optimization

View source: R/activeREMBO.R

activeREMBOR Documentation

Random Embedding Bayesian Optimization

Description

REMBO for unconstrained problems, with changing embedding

Usage

activeREMBO(
  par,
  fn,
  lower,
  upper,
  budget,
  ...,
  highDimGP,
  useAScrit = FALSE,
  ASalternative = FALSE,
  homcontrol = list(beta0 = 0, covtype = "Matern5_2", g = sqrt(.Machine$double.eps)),
  kmcontrol = list(covtype = "matern5_2", iso = TRUE, covreestim = TRUE, formula = ~1),
  control = list(Atype = "isotropic", reverse = TRUE, bxsize = NULL, testU = TRUE,
    standard = FALSE, maxitOptA = 100, lightreturn = FALSE, warping = "Psi", designtype =
    "unif", tcheckP = 1e-04, roll = F, returnAS = TRUE, plotting = FALSE, inneroptim =
    "pso", popsize = 80, gen = 40),
  init = NULL
)

Arguments

par

vector whose length is used to define the initial DoE or just the low dimension

fn

function to be minimized over

lower, upper

bounds for optimization

budget

total number of calls to the objective function

...

additional parameters of fn

highDimGP

should the GP use true design values?

useAScrit

should an optimization on a sequential active subspace identification criterion be performed in the orthogonal?

ASalternative

alternate between AS criterion and EI

kmcontrol

an optional list of control parameters to be passed to the km model: iso, covtype, formula. In addition, boolean codereestim is passed to update.km

control

an optional list of control parameters. See "Details"

init

optional list with elements Amat to provide a random matrix, low_dim_design for an initial design in the low-dimensional space and fvalues for the corresponding response. When passing initial response values, care should be taken that the mapping with Amat of the design actually correspond to high-dimensional designs giving fvalues.

Details

Options available from control are:

  • Atype see selectA;

  • reverse if TRUE, use the new mapping from the zonotope, otherwise the original mapping with convex projection;

  • bxsize scalar controling the box size in the low-dimensional space;

  • testU with the regular mapping, set to TRUE to check that points are in U (to avoid non-injectivity);

  • standard for using settings of the original REMBO method;

  • maxitOptA if Atype is optimized, number of optimization iterations;

  • lightreturn only returns par and value;

  • warping either "standard" for kY, "kX" or "Psi";

  • designtype one of "LHS", "maximin" and "unif", see designZ or designU;

  • tcheckP minimal distance to an existing solution, see checkPredict

  • roll to alternate between optimization methods;

  • inneroptim optimization method for EI

  • popsize, gen population size and number of optimization generations of EI

Author(s)

Mickael Binois

References

O. Roustant, D. Ginsbourger & Y. Deville, DiceKriging, DiceOptim: Two R Packages for the Analysis of Computer Experiments by Kriging-Based Metamodeling and Optimization Journal of Statistical Software, 2012, 51, 1-55

Z. Wang, F. Hutter, M. Zoghi, D. Matheson, N. de Freitas (2016), Bayesian Optimization in a Billion Dimensions via Random Embeddings, JAIR.

M. Binois, D. Ginsbourger, O. Roustant (2015), A Warped Kernel Improving Robustness in Bayesian Optimization Via Random Embeddings, Learning and Intelligent Optimization, Springer

M. Binois, D. Ginsbourger, O. Roustant (2018), On the choice of the low-dimensional domain for global optimization via random embeddings, arXiv:1704.05318

M. Binois (2015), Uncertainty quantification on Pareto fronts and high-dimensional strategies in Bayesian optimization, with applications in multi-objective automotive design, PhD thesis, Mines Saint-Etienne.

Examples

## Not run: 
set.seed(42)
library(rgl)
library(DiceKriging)

lowd <- 2
highD <- 25

ntest <- 50
maxEval <- 100

res <- rep(0, ntest)
for(i in 1:ntest){
  #ii <- sample(1:highD, 2)
  ii <- c(1,2)
  branin_mod2 <- function(X){
    if(is.null(nrow(X))) X <- matrix(X, nrow = 1)
    X <- X[, c(ii[1], ii[2]), drop = FALSE]
    return(apply(X, 1, branin))
  }
  sol <- activeREMBO(par = rep(NA, lowd), branin_mod2, lower = rep(0, highD),
                   upper = rep(1, highD), budget = maxEval, highDimGP = TRUE)
  res[i] <- sol$value
  cat(sol$value, " ", i, "\n")
}

plot(res - 0.397887, type = "b")
boxplot(res - 0.397887)

## End(Not run)

mbinois/RRembo documentation built on Sept. 16, 2023, 10:15 p.m.