Sequential multi-objective Expected Improvement maximization and model re-estimation, with a number of iterations fixed in advance by the user
Sequential multi-objective Expected Improvement maximization and model re-estimation, with a number of iterations fixed in advance by the user
Executes nsteps iterations of multi-objective EGO methods to objects of class km. At each step, kriging models are re-estimated (including covariance parameters re-estimation) based on the initial design points plus the points visited during all previous iterations; then a new point is obtained by maximizing one of the four multi-objective Expected Improvement criteria available. Handles noiseless and noisy objective functions.
model: list of objects of class km, one for each objective functions,
fn: the multi-objective function to be minimized (vectorial output), found by a call to match.fun,
...: additional parameters to be given to the objective fn.
cheapfn: optional additional fast-to-evaluate objective function (handled next with class fastfun), which does not need a kriging model, handled by a call to match.fun,
crit: choice of multi-objective improvement function: "SMS", "EHI", "EMI" or "SUR", see details below,
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,
type: "SK" or "UK" (by default), depending whether uncertainty related to trend estimation has to be taken into account, see km
cov.reestim: optional boolean specifying if the kriging hyperparameters should be re-estimated at each iteration,
critcontrol: optional list of parameters for criterion crit, see details,
noise.var: noise variance (of the objective functions). Either NULL (noiseless objectives), a scalar (constant noise, identical for all objectives), a vector (constant noise, different for each objective) or a function (type closure) with vectorial output (variable noise, different for each objective). Alternatively, set noise.var="given_by_fn", see details. If not provided but km models are based on noisy observations, noise.var is taken as the average of model@noise.var.
reinterpolation: Boolean: for noisy problems, indicates whether a reinterpolation model is used, see details,
optimcontrol: an optional list of control parameters for optimization of the selected infill criterion: "method" can be set to "discrete", "pso", "genoud" or a user defined method name (passed to match.fun). For "discrete", a matrix candidate.points must be given. For "pso" and "genoud", specific parameters to the chosen method can also be specified (see genoud and psoptim). A user defined method must have arguments like the default optim method, i.e. par, fn, lower, upper, ... and eventually control.
A trace trace argument is available, it can be set to 0 to suppress all messages, to 1 (default) for displaying the optimization progresses, and >1 for the highest level of details.
ncores: number of CPU available (> 1 makes mean parallel TRUE). Only used with discrete optimization for now.
Returns
A list with components:
par: a data frame representing the additional points visited during the algorithm,
values: a data frame representing the response values at the points given in par,
nsteps: an integer representing the desired number of iterations (given in argument),
lastmodel: a list of objects of class km corresponding to the last kriging models fitted.
observations.denoised: if noise.var!=NULL, a matrix representing the mean values of the km models at observation points. If a problem occurs during either model updates or criterion maximization, the last working model and corresponding values are returned.
Details
Extension of the function EGO.nsteps for multi-objective optimization.
Available infill criteria with crit are:
Expected Hypervolume Improvement (EHI) crit_EHI,
SMS criterion (SMS) crit_SMS,
Expected Maximin Improvement (EMI) crit_EMI,
Stepwise Uncertainty Reduction of the excursion volume (SUR) crit_SUR.
Depending on the selected criterion, parameters such as reference point for SMS and EHI or arguments for integration_design_optim
with SUR can be given with critcontrol. Also options for checkPredict are available. More precisions are given in the corresponding help pages.
The reinterpolation=TRUE setting can be used to handle noisy objective functions. It works with all criteria and is the recommended option. If reinterpolation=FALSE and noise.var!=NULL, the criteria are used based on a "denoised" Pareto front.
If noise.var="given_by_fn", fn must return a list of two vectors, the first being the objective functions and the second the corresponding noise variances (see examples).
Display of results and various post-processings are available with plotGPareto.
M. T. Emmerich, A. H. Deutz, J. W. Klinkenberg (2011), Hypervolume-based expected improvement: Monotonicity properties and exact computation, Evolutionary Computation (CEC), 2147-2154.
V. Picheny (2014), Multiobjective optimization using Gaussian process emulators via stepwise uncertainty reduction, Statistics and Computing, 25(6), 1265-1280
T. Wagner, M. Emmerich, A. Deutz, W. Ponweiser (2010), On expected-improvement criteria for model-based multi-objective optimization. Parallel Problem Solving from Nature, 718-727, Springer, Berlin.
J. D. Svenson (2011), Computer Experiments: Multiobjective Optimization and Sensitivity Analysis, Ohio State university, PhD thesis. V. Picheny and D. Ginsbourger (2013), Noisy kriging-based optimization methods: A unified implementation within the DiceOptim package, Computational Statistics & Data Analysis, 71: 1035-1053.