Usage
optim.auglag(fn, B, fhat = FALSE, cknown = NULL, start = 10, end = 100, Xstart = NULL, sep=FALSE, ab = c(3/2, 4), lambda = 1, rho = 1/2, urate = 10, ncandf = function(t) { t }, dg.start = c(0.1, 1e-06), dlim = sqrt(ncol(B)) * c(1/100, 10), Bscale = 1, ey.tol = 0.05, nomax = FALSE, N = 1000, plotprog = FALSE, verb = 2, ...)
optim.eic(fn, B, fhat = FALSE, cknown = NULL, start = 10, end = 100, Xstart = NULL, sep = FALSE, ab = c(3/2,4), urate = 10, ncandf = function(t) { t }, dg.start = c(0.1,1e-6), dlim = sqrt(ncol(B))*c(1/100,10), Bscale = 1, plotprog = FALSE, verb = 2, ...)
Arguments
fn
function of an input (x), facilitating vectorization on a
matrix X thereof, returning a list
with elements "obj" containing the (scalar) objective value and "c"
containing a vector of evaluations of the (multiple) constraint function at x.
The fn function must take a known.only argument which is explained
in the note below; it need not act on that argument
B
2-column matrix describing the bounding box. The number of rows
of the matrix determines the input dimension
(length(x) in fn(x)); the first column gives
lower bounds and the second gives upper bounds
fhat
a scalar logical indicating if the objective function should
be modeled with a GP surrogate. The default of FALSE assumes a known
linear objective scaled by Bscale. Using TRUE is an alpha
feature at this time
cknown
A optional positive integer vector specifying which of the constraint
values returned by fn should be treated as known, i.e., not modeled
with Gaussian processes
start
positive integer giving the number of random starting locations before
sequential design (for optimization) is performed; start >= 6 is
recommended unless Xstart is non-NULL; in the current version
the starting locations come from a space-filling design via dopt.gp
end
positive integer giving the total number of evaluations/trials in the
optimization; must have end > start
Xstart
optional matrix of starting design locations in lieu of, or in addition to,
start random ones; we recommend nrow(Xstart) + start >= 6; also must
have ncol(Xstart) = nrow(B)
sep
if sep = TRUE then separable GPs (i.e., via newGPsep, etc.)
are used to model the constraints. Otherwise the default is to use isotropic
ones
ab
prior parameters; see darg describing the prior used on the
lengthscale parameter during emulation(s) for the constraints
lambda
m-dimensional initial Lagrange multiplier parameter for m-constraints
rho
positive scalar initial quadratic penalty parameter in the augmented Lagrangian
urate
positive integer indicating how many optimization trials should pass before
each MLE/MAP update is performed for GP correlation lengthscale
parameter(s)
ncandf
function taking a single integer indicating the optimization trial number t, where
start < t <= end<="" code="">, and returning the number of search candidates (e.g., for
expected improvement calculations) at round t; the default setting
allows the number of candidates to grow linearly with t
=>
dg.start
2-vector giving starting values for the lengthscale and nugget parameters
of the GP surrogate model(s) for constraints
dlim
2-vector giving bounds for the lengthscale parameter(s) under MLE/MAP inference,
thereby augmenting the prior specification in ab
Bscale
scalar indicating the relationship between the sum of the inputs, sum(x),
to fn and the output fn(x)$obj$; note that at this time only linear
objectives are fully supported by the code - more details below
ey.tol
a scalar proportion indicating how many of the EIs
at ncandf(t) candidate locations must be non-zero to trust
that metric to guide search, reducing to an EY-based search instead
[choosing that proportion to be zero forces EY-based search]
nomax
one of c{-1,0,1} indicating if the max should be removed from the
augmented lagrangian (AL): not at all (0),
in the evaluation of EI or EY (1). Specifying a negative number (e.g., -1)
invokes the slack variable implementation of AL, which is alpha
functionality at this time
N
positive scalar integer indicating the number of Monte Carlo samples to be
used for calculating EI and EY
plotprog
logical indicating if progress plots should be made after each inner iteration;
the plots show three panels tracking the best valid objective, the EI or EY surface
over the first two input variables (requires interp,
and the parameters of the lengthscale(s) of the GP(s) respectively. When
plotprog = TRUE the interp.loess function is used to
aid in creating surface plots, however this does not work well with fewer than
fifteen points. You may also provide a function as an argument, having similar
arguments/formals as interp.loess. For example, we use
interp below, which would have been the default if not
for licensing incompatibilities
verb
positive scalar integer indicating the verbosity level; the larger the value the
more that is printed to the screen
...
additional arguments passed to fn