qEI.grad {DiceOptim}R Documentation

Gradient of the multipoint expected improvement (qEI) criterion


Computes an exact or approximate gradient of the multipoint expected improvement criterion


  plugin = NULL,
  type = "UK",
  minimization = TRUE,
  fastCompute = TRUE,
  eps = 10^(-6),
  envir = NULL



a matrix representing the set of input points (one row corresponds to one point) where to evaluate the gradient,


an object of class km,


optional scalar: if provided, it replaces the minimum of the current observations,


"SK" or "UK" (by default), depending whether uncertainty related to trend estimation has to be taken into account,


logical specifying if EI is used in minimiziation or in maximization,


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


the value of epsilon of the fast computation trick. Relevant only if fastComputation is TRUE,


an optional environment specifying where to get intermediate values calculated in qEI.


The gradient of the multipoint expected improvement criterion with respect to x. A 0-matrix is returned if the batch of input points contains twice the same point or a point from the design experiment of the km object (the gradient does not exist in these cases).


Sebastien Marmin

Clement Chevalier

David Ginsbourger


C. Chevalier and D. Ginsbourger (2014) Learning and Intelligent Optimization - 7th International Conference, Lion 7, Catania, Italy, January 7-11, 2013, Revised Selected Papers, chapter Fast computation of the multipoint Expected Improvement with applications in batch selection, pages 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. Developpements pour l'evaluation et la maximisation du critere d'amelioration esperee multipoint en optimisation globale (2014). Master's thesis, Mines Saint-Etienne (France) and University of Bern (Switzerland).

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



# Example 1 - validation by comparison to finite difference approximations

# a 9-points factorial design, and the corresponding response
d <- 2
n <- 9
design <- expand.grid(seq(0,1,length=3), seq(0,1,length=3)) 
names(design)<-c("x1", "x2")
design <- data.frame(design) 
names(design)<-c("x1", "x2")
y <- apply(design, 1, branin)
y <- data.frame(y) 
names(y) <- "y" 

# learning
model <- km(~1, design=design, response=y)

# pick up 2 points sampled from the simple expected improvement
q <- 2  # increase to 4 for a more meaningful test
X <- sampleFromEI(model,n=q)

# compute the gradient at the 4-point batch
grad.analytic <- qEI.grad(X,model)
# numerically compute the gradient
grad.numeric <- matrix(NaN,q,d)
eps <- 10^(-6)
EPS <- matrix(0,q,d)
for (i in 1:q) {
  for (j in 1:d) {
    EPS[i,j] <- eps
    grad.numeric[i,j] <- 1/eps*(qEI(X+EPS,model,fastCompute=FALSE)-qEI(X,model,fastCompute=FALSE))
    EPS[i,j] <- 0

## Not run: 
# graphics: displays the EI criterion, the design points in black, 
# the batch points in red and the gradient in blue.
nGrid <- 15
gridAxe1 <- seq(lower[1],upper[1],length=nGrid)
gridAxe2 <- seq(lower[2],upper[2],length=nGrid)
grid <- expand.grid(gridAxe1,gridAxe2)
aa <- apply(grid,1,EI,model=model)
myMat <- matrix(aa,nrow=nGrid)
image(x = gridAxe1, y = gridAxe2, z = myMat, 
      col = colorRampPalette(c("darkgray","white"))(5*10), 
      ylab = names(design)[1], xlab=names(design)[2], 
      main = "qEI-gradient of a batch of 4 points", axes = TRUE, 
      zlim = c(min(myMat), max(myMat)))
contour(x = gridAxe1, y = gridAxe2, z = myMat, 
        add = TRUE, nlevels = 10)

## End(Not run)

[Package DiceOptim version 2.1.1 Index]