Procedure: Generate a Weyl design

Description and Background

A Weyl design (also known as a Richtmyer design) is one of a number of non-random space-filling designs suitable for defining a set of points in the simulator input space for creating a training sample.

The \(n\) point Weyl design in \(p\) dimensions is generated by a generator set \(g=(g_1,\ldots,g_p)\) of irrational numbers. See the “Additional Comments” below for discussion of the choice of generators.

Inputs

  • Number of dimensions \(p\)
  • Number of points desired \(n\)
  • Set of irrational generators \(g_1,\ldots,g_p\)

Outputs

  • Weyl design \(D = \{x_1, x_2, \ldots, x_n\}\)

Procedure

For \(j=0,\ldots,n-1\), generate points as

\[x_{j+1}=\left(j\times g_1{\rm mod} 1, j\times g_2{\rm mod} 1,\ldots,j\times g_d{\rm mod} 1\right).\]

Note that the operator “mod 1” here has the effect of returning the fractional part of each number. For instance, if \(j=7\) and \(g_1 = \sqrt{2} = 1.414\ldots\), then

\[j\times g_1 = 9.89949\ldots\]

and so

\[j\times g_1 {\rm mod} 1 = 0.89949\ldots.\]

Additional Comments

A potential problem with Weyl designs is the difficulty in finding suitable generators. One suggestion is to let \(g_i\) be the square root of the \(i\)-th prime, but this may not work well when \(p\) is large.

References

The following is a link to the repository for Matlab code for the Weyl sequence in up to 100 dimensions: CPWeylSequence.m (disclaimer).