Learn R Programming

DiceOptim (version 2.0)

qEGO.nsteps: Sequential multipoint Expected improvement (qEI) maximizations and model re-estimation

Description

Executes nsteps iterations of the multipoint EGO method to an object of class km. At each step, a kriging model (including covariance parameters) is re-estimated based on the initial design points plus the points visited during all previous iterations; then a new batch of points is obtained by maximizing the multipoint Expected Improvement criterion (qEI).

Usage

qEGO.nsteps(fun, model, npoints, nsteps, lower = rep(0, model@d), upper = rep(1, model@d), crit = "exact", minimization = TRUE, optimcontrol = NULL, cov.reestim = TRUE, ...)

Arguments

fun
the objective function to be optimized,
model
an object of class km ,
npoints
an integer repesenting the desired batchsize,
nsteps
an integer representing the desired number of iterations,
lower
vector of lower bounds for the variables to be optimized over,
upper
vector of upper bounds for the variables to be optimized over,
crit
"exact", "CL" : a string specifying the criterion used. "exact" triggers the maximization of the multipoint expected improvement at each iteration (see max_qEI), "CL" applies the Constant Liar heuristic,
minimization
logical specifying if we want to minimize or maximize fun,
optimcontrol
an optional list of control parameters for the qEI optimization (see details or max_qEI),
cov.reestim
optional boolean specifying if the kriging hyperparameters should be re-estimated at each iteration,
...
optional arguments for fun.

Value

A list with components:

Details

The parameters of list optimcontrol are :

- optimcontrol$method : "BFGS" (default), "genoud" ; a string specifying the method used to maximize the criterion (irrelevant when crit is "CL" because this method always uses genoud),

- when crit="CL" :

+ optimcontrol$parinit : optional matrix of initial values (must have model@d columns, the number of rows is not constrained),

+ optimcontrol$L : "max", "min", "mean" or a scalar value specifying the liar ; "min" takes model@min, "max" takes model@max, "mean" takes the prediction of the model ; When L is NULL, "min" is taken if minimization==TRUE, else it is "max".

+ The parameters of function genoud. Main parameters are : "pop.size" (default : [N=3*2^model@d for dim<6 and="" n="32*model@d" otherwise]),="" "max.generations" (default : 12), "wait.generations" (default : 2) and "BFGSburnin" (default : 2).

- when optimcontrol$method = "BFGS" :

+ optimcontrol$nStarts (default : 4),

+ optimcontrol$fastCompute : if TRUE (default), a fast approximation method based on a semi-analytic formula is used, see [Marmin 2014] for details,

+ optimcontrol$samplingFun : a function which sample a batch of starting point (default : sampleFromEI),

+ optimcontrol$parinit : optional 3d-array of initial (or candidate) batches (for all k, parinit[,,k] is a matrix of size npoints*model@d representing one batch). The number of initial batches (length(parinit[1,1,])) is not contrained and does not have to be equal to nStarts. If there is too few initial batches for nStarts, missing batches are drawn with samplingFun (default : NULL),

- when optimcontrol$method = "genoud" :

+ optimcontrol$fastCompute : if TRUE (default), a fast approximation method based on a semi-analytic formula is used, see [Marmin 2014] for details,

+ optimcontrol$parinit : optional matrix of candidate starting points (one row corresponds to one point),

+ The parameters of the genoud function. Main parameters are "pop.size" (default : [50*(model@d)*(npoints)]), "max.generations" (default : 5), "wait.generations" (default : 2), "BFGSburnin" (default : 2).

References

C. Chevalier and D. Ginsbourger (2013), Fast computation of the multi-points expected improvement with applications in batch selection. In G. Nicosia and P. Pardalos (Eds.) Learning and Intelligent Optimization, Lecture Notes in Computer Science, pp 59-69, Springer.

D. Ginsbourger, R. Le Riche, L. Carraro (2007), A Multipoint Criterion for Deterministic Parallel Global Optimization based on Kriging. The International Conference on Non Convex Programming, 2007.

D. Ginsbourger, R. Le Riche, and L. Carraro. Kriging is well-suited to parallelize optimization (2010), In Lim Meng Hiot, Yew Soon Ong, Yoel Tenne, and Chi-Keong Goh, editors, Computational Intelligence in Expensive Optimization Problems, Adaptation Learning and Optimization, pages 131-162. Springer Berlin Heidelberg.

S. Marmin, C. Chevalier and D. Ginsbourger (2015), Differentiating the multipoint Expected Improvement for optimal batch design. In P. Pardalos et al. (Eds.) Machine Learning, Optimization, and Big Data, Lecture Notes in Computer Science 9432, pp 37-48.

J. Mockus (1988), Bayesian Approach to Global Optimization. Kluwer academic publishers.

M. Schonlau (1997), Computer experiments and global optimization, Ph.D. thesis, University of Waterloo.

See Also

qEI, max_qEI, qEI.grad

Examples

Run this code
## Not run: 
# set.seed(123)
# #####################################################
# ### 4 ITERATIONS OF EGO ON THE BRANIN FUNCTION,   ###
# ### STARTING FROM A 9-POINTS FACTORIAL DESIGN     ###
# #####################################################
# 
# # a 9-points factorial design, and the corresponding response
# d <- 2
# n <- 9
# design.fact <- expand.grid(seq(0,1,length=3), seq(0,1,length=3))
# names(design.fact)<-c("x1", "x2")
# design.fact <- data.frame(design.fact)
# names(design.fact)<-c("x1", "x2")
# response.branin <- apply(design.fact, 1, branin)
# response.branin <- data.frame(response.branin)
# names(response.branin) <- "y"
# 
# # model identification
# fitted.model1 <- km(~1, design=design.fact, response=response.branin,
# covtype="gauss", control=list(pop.size=50,trace=FALSE), parinit=c(0.5, 0.5))
# 
# # EGO n steps
# library(rgenoud)
# nsteps <- 4 # Was 10, reduced to 4 for speeding up execution
# lower <- rep(0,d)
# upper <- rep(1,d)
# npoints <- 3 # The batchsize
# oEGO <- qEGO.nsteps(model = fitted.model1, branin, npoints = npoints, nsteps = nsteps,
# crit="exact", lower, upper, optimcontrol = NULL)
# print(oEGO$par)
# print(oEGO$value)
# plot(c(1:nsteps),oEGO$history,xlab='step',ylab='Current known minimum')
# 
# # graphics
# n.grid <- 15 # Was 20, reduced to 15 for speeding up compilation
# x.grid <- y.grid <- seq(0,1,length=n.grid)
# design.grid <- expand.grid(x.grid, y.grid)
# response.grid <- apply(design.grid, 1, branin)
# z.grid <- matrix(response.grid, n.grid, n.grid)
# contour(x.grid, y.grid, z.grid, 40)
# title("Branin function")
# points(design.fact[,1], design.fact[,2], pch=17, col="blue")
# points(oEGO$par, pch=19, col="red")
# text(oEGO$par[,1], oEGO$par[,2], labels=c(tcrossprod(rep(1,npoints),1:nsteps)), pos=3)
# ## End(Not run)

Run the code above in your browser using DataLab