Title: | Generate Fully-Sequential Space-Filling Designs Inside a Unit Hypercube |
---|---|
Description: | Provides three methods proposed by Shang and Apley (2019) <doi:10.1080/00224065.2019.1705207> to generate fully-sequential space-filling designs inside a unit hypercube. A 'fully-sequential space-filling design' means a sequence of nested designs (as the design size varies from one point up to some maximum number of points) with the design points added one at a time and such that the design at each size has good space-filling properties. Two methods target the minimum pairwise distance criterion and generate maximin designs, among which one method is more efficient when design size is large. One method targets the maximum hole size criterion and uses a heuristic to generate what is closer to a minimax design. |
Authors: | Boyang Shang and Daniel W. Apley |
Maintainer: | Boyang Shang <[email protected]> |
License: | GPL-2 |
Version: | 0.1.1 |
Built: | 2025-03-06 04:32:52 UTC |
Source: | https://github.com/cran/FSSF |
Provides large-scale computer experimental design tools to generate fully-sequential (a nested sequence of designs with points added one at a time) space-filling designs inside a unit hypercube (Shang and Apley, 2019).
Fully-sequential (i.e., with design points added one at a time) space-filling designs are useful for global surrogate modeling of expensive computer experiments when the number of design points required to achieve a suitable accuracy is unknown in advance. We provide three fully-sequential space-filling (FSSF) design algorithms that are conceptually simple and computationally efficient and that achieve much better space-filling properties than alternative methods such as Sobol sequences and more complex batch-sequential methods based on sliced or nested optimal Latin hypercube designs (LHDs).
Brief descriptions of the main functions are provided below:
fssf_f()
generates maximin designs using a similar idea with Kennard and Stone (1969). The "f" stands for "forward", since the algorithm begins with the smallest design and adds points one at a time.
fssf-b()
generates large-size maximin designs efficiently. The "b" stands for "backward", since the algorithm begins with the largest design and removes points one at a time.
fssf-fr()
uses a heuristic to generate what is closer to a minimax design. The "fr" stands for "forward reflected", since the algorithm uses a modification of the criterion used in the fssf-f algorithm.
Boyang Shang [email protected]
Daniel W. Apley [email protected]
Shang, B. and Apley, D.W. (2019), "Large-Scale Fully-Sequential Space-filling Algorithms for Computer Experiments", Journal of Quality Technology (in press). doi:10.1080/00224065.2019.1705207.
Kennard, R.W. and Stone, L.A. (1969). "Computer aided design of experiments". Technometrics 11.1, pp. 137-148.
# # See the examples in the help pages for the main functions mentioned above. #
# # See the examples in the help pages for the main functions mentioned above. #
Produces a random fully-sequential design (a nested sequence of designs with points added one at a time) inside a unit hypercube such that the design points are as far away from each other as possible (Shang and Apley, 2019). The "b" stands for "backward", since the algorithm begins with the largest design and removes points one at a time. fssf_b
is much faster than fssf_f
when the design size is large.
fssf_b(d, nMax, N=-1, eps=0.5)
fssf_b(d, nMax, N=-1, eps=0.5)
d |
The dimension of the design space. |
nMax |
The largest design size required by the user. |
N |
Size of the candidate set used to generate the design points. -1 corresponds to the default setting, and the candidate set size will be calculated as |
eps |
The error bound for approximate nearest neighbor searching. Default value is 0.5 and |
The fssf_b
function calls portions of the Approximate Nearest Neighbor Library, version 1.1.2, written by David M. Mount and Sunil Arya to do the neareast neighbor search. Some changes have been made to the original ANN library to suit the needs of the fssf_b
function. More information about the ANN library can be found in the ANN Programming Manual at http://www.cs.umd.edu/~mount/ANN
A matrix with the
row corresponding to the
design point.
Boyang Shang [email protected]
Daniel W. Apley [email protected]
Shang, B. and Apley, D.W. (2019), "Large-Scale Fully-Sequential Space-filling Algorithms for Computer Experiments", Journal of Quality Technology (in press). doi:10.1080/00224065.2019.1705207.
Kennard, R.W. and Stone, L.A. (1969). "Computer aided design of experiments". Technometrics 11.1, pp. 137-148.
##Generate a design using the fssf_b function. Design <- fssf_b(d=2, nMax = 320) plot(Design[,1], Design[,2])
##Generate a design using the fssf_b function. Design <- fssf_b(d=2, nMax = 320) plot(Design[,1], Design[,2])
Produces a random fully-sequential design (a nested sequence of designs with points added one at a time) inside a unit hypercube such that the design points are as far away from each other as possible (Shang and Apley, 2019). The "f" stands for "forward", since the algorithm begins with the smallest design and adds points one at a time.
fssf_f(d, nMax, N=-1, ScaleVector = NULL, Dinit = NULL)
fssf_f(d, nMax, N=-1, ScaleVector = NULL, Dinit = NULL)
d |
The dimension of the design space. |
nMax |
The largest design size required by the user. |
N |
Size of the candidate set used to generate the design points. -1 corresponds to the default setting, and the candidate set size will be calculated as |
ScaleVector |
Array of the lengthscale parameters of different inputs. Default is NULL, which corresponds to the |
Dinit |
Numerical Matrix with |
The fssf_f
uses a similar idea as proposed by Kennard and Stone(1969); modifications have been made to improve the space-filling performance as well as efficiency.
A matrix with the
row corresponding to the
design point.
Boyang Shang [email protected]
Daniel W. Apley [email protected]
Shang, B. and Apley, D.W. (2019), "Large-Scale Fully-Sequential Space-filling Algorithms for Computer Experiments", Journal of Quality Technology (in press). doi:10.1080/00224065.2019.1705207.
Kennard, R.W. and Stone, L.A. (1969). "Computer aided design of experiments". Technometrics 11.1, pp. 137-148.
##Generate a design using the fssf_f function with no scaling vector and no initial design. Design <- fssf_f(d=2, nMax = 320) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_f function with scaling vector and no initial design. d = 2 n = 100 ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_f(d = d, nMax = n, ScaleVector = ScaleVector) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_f function with a scaling vector and with an initial design d = 2 n = 100 Dinit = fssf_f(d=2, nMax = 40) ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_f(d = d, nMax = n, ScaleVector = ScaleVector, Dinit = Dinit) plot(Design[,1], Design[,2]) points(Dinit[,1], Dinit[,2], col="red")
##Generate a design using the fssf_f function with no scaling vector and no initial design. Design <- fssf_f(d=2, nMax = 320) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_f function with scaling vector and no initial design. d = 2 n = 100 ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_f(d = d, nMax = n, ScaleVector = ScaleVector) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_f function with a scaling vector and with an initial design d = 2 n = 100 Dinit = fssf_f(d=2, nMax = 40) ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_f(d = d, nMax = n, ScaleVector = ScaleVector, Dinit = Dinit) plot(Design[,1], Design[,2]) points(Dinit[,1], Dinit[,2], col="red")
Produces a random fully-sequential design (a nested sequence of designs with points added one at a time) inside a unit hypercube such that the largest distance between any point inside the unit hypercube to its closest design point is as small as possible (Shang and Apley, 2019). The "fr" stands for "forward reflected", since the algorithm uses a modification of the criterion used in the fssf-f algorithm.
fssf_fr(d, nMax, N=-1, Preference = "minimax", ScaleVector = NULL, Dinit = NULL)
fssf_fr(d, nMax, N=-1, Preference = "minimax", ScaleVector = NULL, Dinit = NULL)
d |
The dimension of the design space. |
nMax |
The largest design size required by the user. |
N |
Size of the candidate set used to generate the design points. -1 corresponds to the default setting, and the candidate set size will be calculated as |
Preference |
Choosing |
ScaleVector |
Array of the lengthscale parameters of different inputs. Default is NULL, which corresponds to the |
Dinit |
Numerical Matrix with |
A matrix with the
row corresponding to the
design point.
Boyang Shang [email protected]
Daniel W. Apley [email protected]
Shang, B. and Apley, D.W. (2019), "Large-Scale Fully-Sequential Space-filling Algorithms for Computer Experiments", Journal of Quality Technology (in press). doi:10.1080/00224065.2019.1705207.
Kennard, R.W. and Stone, L.A. (1969). "Computer aided design of experiments". Technometrics 11.1, pp. 137-148.
##Generate a design using the fssf_fr function. Design <- fssf_fr(d=2, nMax = 320) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_fr function with scaling vector and no initial design. d = 2 n = 100 ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_fr(d = d, nMax = n, ScaleVector = ScaleVector) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_fr function with a scaling vector and with an initial design d = 2 n = 100 Dinit = fssf_fr(d=2, nMax = 40) ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_fr(d = d, nMax = n, ScaleVector = ScaleVector, Dinit = Dinit) plot(Design[,1], Design[,2]) points(Dinit[,1], Dinit[,2], col="red")
##Generate a design using the fssf_fr function. Design <- fssf_fr(d=2, nMax = 320) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_fr function with scaling vector and no initial design. d = 2 n = 100 ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_fr(d = d, nMax = n, ScaleVector = ScaleVector) plot(Design[,1], Design[,2]) ##Generate a design using the fssf_fr function with a scaling vector and with an initial design d = 2 n = 100 Dinit = fssf_fr(d=2, nMax = 40) ScaleVector = c(1.0, 20.0)*0.5 Design = fssf_fr(d = d, nMax = n, ScaleVector = ScaleVector, Dinit = Dinit) plot(Design[,1], Design[,2]) points(Dinit[,1], Dinit[,2], col="red")