Learn R Programming

DiceOptim (version 2.0)

max_EI: Maximization of the Expected Improvement criterion

Description

Given an object of class km and a set of tuning parameters (lower,upper,parinit, and control), max_EI performs the maximization of the Expected Improvement criterion and delivers the next point to be visited in an EGO-like procedure.

Usage

max_EI(model, plugin = NULL, type = "UK", lower, upper, parinit = NULL, minimization = TRUE, control = NULL)

Arguments

model
an object of class km ,
plugin
optional scalar: if provided, it replaces the minimum of the current observations,
type
Kriging type: "SK" or "UK"
lower
vector of lower bounds for the variables to be optimized over,
upper
vector of upper bounds for the variables to be optimized over,
parinit
optional vector of initial values for the variables to be optimized over,
minimization
logical specifying if EI is used in minimiziation or in maximization,
control
optional list of control parameters for optimization. One can control "pop.size" (default : [N=3*2^dim for dim<6 and="" n="32*dim" otherwise]),="" "max.generations" (12), "wait.generations" (2) and "BFGSburnin" (2) of function "genoud" (see genoud). Numbers into brackets are the default values

Value

A list with components:

Details

The latter maximization relies on a genetic algorithm using derivatives, genoud. This function plays a central role in the package since it is in constant use in the proposed algorithms. It is important to remark that the information needed about the objective function reduces here to the vector of response values embedded in model (no call to the objective function or simulator).

The current minimum of the observations can be replaced by an arbitrary value (plugin), which is usefull in particular in noisy frameworks.

References

D. Ginsbourger (2009), Multiples metamodeles pour l'approximation et l'optimisation de fonctions numeriques multivariables, Ph.D. thesis, Ecole Nationale Superieure des Mines de Saint-Etienne, 2009. https://tel.archives-ouvertes.fr/tel-00772384/

D.R. Jones, M. Schonlau, and W.J. Welch (1998), Efficient global optimization of expensive black-box functions, Journal of Global Optimization, 13, 455-492.

W.R. Jr. Mebane and J.S. Sekhon (2009), in press, Genetic optimization using derivatives: The rgenoud package for R, Journal of Statistical Software.

Examples

Run this code
set.seed(123)
##########################################################
### "ONE-SHOT" EI-MAXIMIZATION OF THE BRANIN FUNCTION ####
### 	KNOWN AT 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 one step
library(rgenoud)
lower <- rep(0,d)
upper <- rep(1,d)     # domain for Branin function
oEGO <- max_EI(fitted.model1, lower=lower, upper=upper,
control=list(pop.size=20, BFGSburnin=2))
print(oEGO)

# graphics
n.grid <- 20
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[1], oEGO$par[2], pch=19, col="red")


#############################################################
### "ONE-SHOT" EI-MAXIMIZATION OF THE CAMELBACK FUNCTION ####
###	KNOWN AT A 16-POINTS FACTORIAL DESIGN            ####
#############################################################
## Not run: 
# # a 16-points factorial design, and the corresponding response
# d <- 2
# n <- 16
# design.fact <- expand.grid(seq(0,1,length=4), seq(0,1,length=4))
# names(design.fact)<-c("x1", "x2")
# design.fact <- data.frame(design.fact)
# names(design.fact) <- c("x1", "x2")
# response.camelback <- apply(design.fact, 1, camelback)
# response.camelback <- data.frame(response.camelback)
# names(response.camelback) <- "y"
# 
# # model identification
# fitted.model1 <- km(~1, design=design.fact, response=response.camelback,
# covtype="gauss", control=list(pop.size=50,trace=FALSE), parinit=c(0.5, 0.5))
# 
# # EI maximization
# library(rgenoud)
# lower <- rep(0,d)
# upper <- rep(1,d)
# oEGO <- max_EI(fitted.model1, lower=lower, upper=upper,
# control=list(pop.size=20, BFGSburnin=2))
# print(oEGO)
# 
# # graphics
# n.grid <- 20
# x.grid <- y.grid <- seq(0,1,length=n.grid)
# design.grid <- expand.grid(x.grid, y.grid)
# response.grid <- apply(design.grid, 1, camelback)
# z.grid <- matrix(response.grid, n.grid, n.grid)
# contour(x.grid,y.grid,z.grid,40)
# title("Camelback Function")
# points(design.fact[,1], design.fact[,2], pch=17, col="blue")
# points(oEGO$par[1], oEGO$par[2], pch=19, col="red")
# ## End(Not run)

####################################################################
### "ONE-SHOT" EI-MAXIMIZATION OF THE GOLDSTEIN-PRICE FUNCTION #####
### 	     KNOWN AT A 9-POINTS FACTORIAL DESIGN              #####
####################################################################

## Not run: 
# # 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.goldsteinPrice <- apply(design.fact, 1, goldsteinPrice)
# response.goldsteinPrice <- data.frame(response.goldsteinPrice)
# names(response.goldsteinPrice) <- "y"
# 
# # model identification
# fitted.model1 <- km(~1, design=design.fact, response=response.goldsteinPrice,
# covtype="gauss", control=list(pop.size=50, max.generations=50,
# wait.generations=5, BFGSburnin=10, trace=FALSE), parinit=c(0.5, 0.5), optim.method="gen")
# 
# # EI maximization
# library(rgenoud)
# lower <- rep(0,d); upper <- rep(1,d);     # domain for Branin function
# oEGO <- max_EI(fitted.model1, lower=lower, upper=upper, control
# =list(pop.size=50, max.generations=50, wait.generations=5, BFGSburnin=10))
# print(oEGO)
# 
# # graphics
# n.grid <- 20
# x.grid <- y.grid <- seq(0,1,length=n.grid)
# design.grid <- expand.grid(x.grid, y.grid)
# response.grid <- apply(design.grid, 1, goldsteinPrice)
# z.grid <- matrix(response.grid, n.grid, n.grid)
# contour(x.grid,y.grid,z.grid,40)
# title("Goldstein-Price Function")
# points(design.fact[,1], design.fact[,2], pch=17, col="blue")
# points(oEGO$par[1], oEGO$par[2], pch=19, col="red")
# ## End(Not run)

Run the code above in your browser using DataLab