interpolation.Rd
Parallel version of multilinear interpolation generator for function approximation
The primary method is ipol
which
dispatches to some other method. All the generated
interpolants accept as an argument a matrix of column
vectors. The generated functions also accept an argument
threads=getOption('ipol.threads')
to utilize more than
one CPU if a matrix of column vectors is evaluated. The option
ipol.threads
is initialized from the environment variable
IPOL_THREADS
upon loading of the package. It defaults to 1
.
interpolation(evalfun, grid_list, cores = detectCores(), int = FALSE, ...)
The objective function to be approximated.
A list for grid points (each element of list is a vector represents ticklabels on a dimension). The number of list elements are the dimension of function inputs.
The numbers of cores (threads) of your machine to conduct parallel computing.
Logical indicator. int = TRUE
interpolant value multiplied by 10^7 then convert to interger to save memory. Original interpolant if int = FALSE
.
Other inputs for objective functions to be passed through.
interpolation
returns
value: A list of of length p corresponding to each variable. Returns NA for continuous variable; proportion of zeros for binary/truncated variables; the cumulative proportions of zeros and ones (e.g. first value is proportion of zeros, second value is proportion of zeros and ones) for ternary variable.
interpolant: An interpolant function generated by chebpol::chebpol
for interplation.
The interpolants are ordinary R-objects and can be saved with save()
and loaded
later with load()
or serialized/unserialized with other tools, just like any R-object.
However, they contain calls to functions in the package, and while the author will make efforts
to ensure that generated interpolants are compatible with future versions of ipol,
I can issue no such absolute guarantee.
grid_list = list(seq(-0.5, 0.5, by = 0.5), seq(-0.5, 0.5, by = 0.5))
objfun = function(x, y) {x^2 + sqrt(y)}
evalfun = function(X) {objfun(X[1], X[2])}
value = interpolation(evalfun = evalfun, grid_list = grid_list)$value
#> Loading required package: foreach
#> Loading required package: future
#> Warning: NaNs produced
#> Warning: NaNs produced
#> Warning: NaNs produced
interpolant = interpolation(evalfun = evalfun, grid_list = grid_list)$interpolant
#> Warning: NaNs produced
#> Warning: NaNs produced
#> Warning: NaNs produced