MLPKriging::update_simulate

Description

Update previously simulated paths of an MLPKriging model with new observations (FOXY algorithm). Must have called simulate(..., will_update = TRUE) first.

Usage

  • Python

    # mk = MLPKriging(...)
    # mk.simulate(nsim = 1, seed = 123, x = x, will_update = True)
    mk.update_simulate(y_u, X_u)
    
  • R

    # mk <- MLPKriging(...)
    # mk$simulate(nsim = 1, seed = 123, x = x, will_update = TRUE)
    mk$update_simulate(y_u, X_u)
    
  • Matlab/Octave

    % mk = MLPKriging(...)
    % mk.simulate(nsim = 1, seed = 123, x = x, will_update = true)
    mk.update_simulate(y_u, X_u)
    
  • Julia

    # mk = MLPKriging(...)
    # simulate(mk, nsim=1, seed=123, x=x, will_update=true)
    update_simulate(mk, y_u, X_u)
    

Arguments

Argument

Description

y_u

Numeric vector of new observations.

X_u

Numeric matrix of new input points.

Details

This method applies the FOXY-style update to the previously cached simulation state. A prior call to simulate(..., will_update = TRUE) is required.

Value

A matrix with nrow(x) rows and nsim columns of updated simulated paths.

Examples

f <- function(x) 1 - 1 / 2 * (sin(12 * x) / (1 + x) + 2 * cos(7 * x) * x^5 + 0.7)
X <- as.matrix(seq(0.05, 0.95, length.out = 10))
y <- f(X)

mk <- MLPKriging(
  y, X,
  hidden_dims = c(4L),
  d_out = 1L,
  activation = "tanh",
  kernel = "gauss",
  parameters = list(max_iter_adam = "20", max_iter_bfgs = "10")
)
x <- as.matrix(seq(0, 1, length.out = 101))
s <- mk$simulate(nsim = 10, seed = 123, x = x, will_update = TRUE)

X_u <- as.matrix(c(0.15, 0.85))
y_u <- f(X_u)
s_u <- mk$update_simulate(y_u, X_u)
cat("Updated simulation size:", dim(s_u), "\n")

plot(f)
points(X, y, col = "blue")
points(X_u, y_u, col = "red", pch = 16)
matlines(x, s, col = rgb(0, 0, 1, 0.15), type = "l", lty = 1)
matlines(x, s_u, col = rgb(1, 0, 0, 0.15), type = "l", lty = 1)

Results

Updated simulation size: 101 10