osp.seq.batch.design: Adaptive Batching designs for optimal stopping

View source: R/ospSeqBatchDesign.R

osp.seq.batch.designR Documentation

Adaptive Batching designs for optimal stopping

Description

Sequential experimental design for optimal stopping problems with several adaptive batching heuristics based on Lyu & Ludkovski (2020+)

Usage

osp.seq.batch.design(model, method = "km", t0 = 0.01, is.gbm = FALSE)

Arguments

model

a list containing all the model parameters.

method

A GP emulator to apply. Must be one of km, trainkm homgp, homtp or hetgp

t0

parameter t0 for the ABSUR heuristic [Default value is 0.01]

is.gbm

flag to indicate whether the underlying simulator is independent log-normals (used as part of density computation for integrated EI criteria) [Default FALSE]

Details

Implements the adaptive batching strategy defined in mode$batch.heuristic. Calls lhs from library tgp. Possible batch heuristics are:

  • fb: [Default] fixed batch amounts (essentially same as osp.seq.design)

  • mlb: Multi-level batching; relies on model$r.cand

  • rb: Ratchet batching; relies on model$r.cand

  • absur: Adaptive batching with Stepwise Uncertainty Reduction; relies on model$t0

  • adsa: Adaptive Design with Sequential Allocation

  • ddsa: Deterministic ADSA that alternates between adding a new input site and allocating to existing sites

All heuristics also require specifying the acquisition function for expected improvement criterion via model$ei.func, see osp.seq.design

Value

a list containing:

  • fit a list of fitted response surfaces

  • timeElapsed vector of time costs for each round

  • nsims total number of 1-step model$sim.func calls

  • empLoss vector of empirical losses

  • ndesigns: number of unique designs k_T

  • batches: matrix of replications r_i, indexed by time-steps and by sequential rounds

References

M. Ludkovski, X. Lyu (2020+) Adaptive Batching for Gaussian Process Surrogates with Application in Noisy Level Set Estimation, <http://arxiv.org/abs/2003.08579>

See Also

[mlOSP::osp.seq.design]

Examples

sob30 <- randtoolbox::sobol(55, d=2)  # construct a space-filling initial design
sob30 <- sob30[ which( sob30[,1] + sob30[,2] <= 1) ,]  
sob30 <- 25+30*sob30 
model2d <- list(x0 = rep(40,2),K=40,sigma=rep(0.2,2),r=0.06,
 div=0,T=1,dt=0.04,dim=2,sim.func=sim.gbm, 
 payoff.func=put.payoff, look.ahead=1, pilot.nsims=1000,
 cand.len=1000,max.lengthscale=c(40,40),min.lengthscale=c(3,3),
 seq.design.size=50,batch.nrep=25,total.budget=2000,init.size=30,
 init.grid=sob30, kernel.family="gauss",update.freq=5,
 r.cand=c(20, 30,40,50,60, 80, 120, 160))
set.seed(11)
require(tgp)
require(DiceKriging)
require(laGP)
require(ks)
model2d$batch.heuristic <- 'adsa'
model2d$ei.func <- 'amcu'
oos.obj.adsa <- osp.seq.batch.design(model2d,method="trainkm")
plt.2d.surf.with.batch(oos.obj.adsa$fit[[15]], 
                     oos.obj.adsa$batches[1:oos.obj.adsa$ndesigns[15] - 1, 15])

mludkov/mlOSP documentation built on April 29, 2023, 7:56 p.m.