CPF: Conditional Pareto Front simulations

View source: R/CPF.R

CPFR Documentation

Conditional Pareto Front simulations

Description

Compute (on a regular grid) the empirical attainment function from conditional simulations of Gaussian processes corresponding to two objectives. This is used to estimate the Vorob'ev expectation of the attained set and the Vorob'ev deviation.

Usage

CPF(
  fun1sims,
  fun2sims,
  response,
  paretoFront = NULL,
  f1lim = NULL,
  f2lim = NULL,
  refPoint = NULL,
  n.grid = 100,
  compute.VorobExp = TRUE,
  compute.VorobDev = TRUE
)

Arguments

fun1sims

numeric matrix containing the conditional simulations of the first output (one sample in each row),

fun2sims

numeric matrix containing the conditional simulations of the second output (one sample in each row),

response

a matrix containing the value of the two objective functions, one output per row,

paretoFront

optional matrix corresponding to the Pareto front of the observations. It is estimated from response if not provided,

f1lim

optional vector (see details),

f2lim

optional vector (see details),

refPoint

optional vector (see details),

n.grid

integer determining the grid resolution,

compute.VorobExp

optional boolean indicating whether the Vorob'ev Expectation should be computed. Default is TRUE,

compute.VorobDev

optional boolean indicating whether the Vorob'ev deviation should be computed. Default is TRUE.

Details

Works with two objectives. The user can provide locations of grid lines for computation of the attainement function with vectors f1lim and f2lim, in the form of regularly spaced points. It is possible to provide only refPoint as a reference for hypervolume computations. When missing, values are determined from the axis-wise extrema of the simulations.

Value

A list which is given the S3 class "CPF".

  • x, y: locations of grid lines at which the values of the attainment are computed,

  • values: numeric matrix containing the values of the attainment on the grid,

  • PF: matrix corresponding to the Pareto front of the observations,

  • responses: matrix containing the value of the two objective functions, one objective per column,

  • fun1sims, fun2sims: conditional simulations of the first/second output,

  • VE: Vorob'ev expectation, computed if compute.VorobExp = TRUE (default),

  • beta_star: Vorob'ev threshold, computed if compute.VorobExp = TRUE (default),

  • VD: Vorov'ev deviation, computed if compute.VorobDev = TRUE (default),

References

M. Binois, D. Ginsbourger and O. Roustant (2015), Quantifying Uncertainty on Pareto Fronts with Gaussian process conditional simulations, European Journal of Operational Research, 243(2), 386-394.

C. Chevalier (2013), Fast uncertainty reduction strategies relying on Gaussian process models, University of Bern, PhD thesis.

I. Molchanov (2005), Theory of random sets, Springer.

See Also

Methods coef, summary and plot can be used to get the coefficients from a CPF object, to obtain a summary or to display the attainment function (with the Vorob'ev expectation if compute.VorobExp is TRUE).

Examples

library(DiceDesign)
set.seed(42)

nvar <- 2

fname <- "P1" # Test function

# Initial design
nappr <- 10
design.grid <- maximinESE_LHS(lhsDesign(nappr, nvar, seed = 42)$design)$design
response.grid <- t(apply(design.grid, 1, fname))

# kriging models: matern5_2 covariance structure, linear trend, no nugget effect
mf1 <- km(~., design = design.grid, response = response.grid[,1])
mf2 <- km(~., design = design.grid, response = response.grid[,2])

# Conditional simulations generation with random sampling points 
nsim <- 40
npointssim <- 150 # increase for better results
Simu_f1 <- matrix(0, nrow = nsim, ncol = npointssim)
Simu_f2 <- matrix(0, nrow = nsim, ncol = npointssim)
design.sim <- array(0, dim = c(npointssim, nvar, nsim))

for(i in 1:nsim){
  design.sim[,,i] <- matrix(runif(nvar*npointssim), nrow = npointssim, ncol = nvar)
  Simu_f1[i,] <- simulate(mf1, nsim = 1, newdata = design.sim[,,i], cond = TRUE,
                          checkNames = FALSE, nugget.sim = 10^-8)
  Simu_f2[i,] <- simulate(mf2, nsim = 1, newdata = design.sim[,,i], cond = TRUE, 
                          checkNames = FALSE, nugget.sim = 10^-8)
}

# Attainment and Voreb'ev expectation + deviation estimation
CPF1 <- CPF(Simu_f1, Simu_f2, response.grid)

# Details about the Vorob'ev threshold  and Vorob'ev deviation
summary(CPF1)

# Graphics
plot(CPF1)


GPareto documentation built on June 24, 2022, 5:06 p.m.