LatNet Builder Manual 2.1.3-6
Software Package for Constructing Highly Uniform Point Sets
|
LatNet Builder can handle two main point set types:
The switch between these two types of points can be operated using the option –set-type
which can take the following values:
–set-type lattice
to search for lattice rules; or–set-type net
to search for digital nets.Two types of lattice rules are supported by LatNet Builder:
The switch between these two types of lattices can be operated using the option –construction
which can take the following values:
–construction ordinary
to search for ordinary lattice rules; or–construction polynomial
to search for polynomial lattice rules.The option –size
can be used to specify the size (number of points) of a lattice rule.
For instance, to specify an ordinary lattice rule with 6977 points, use –size 6977
. It is also possible to specify the number of points as a power of a base. For instance –size 3^10
is also a valid expression. Recall that for ordinary lattice rules, the number of points is the same thing as the modulus.
For polynomial lattice rules, the number of points equals two to the power of the degree of its modulus. The number of points will thus always be a power of two. In the case of unilevel point sets, one can specify the number of points of the polynomial lattice rule to equal \(2^k\) with –size 2^k
. In this case, a predefined polynomial with degree \(k\) will be chosen as modulus for the lattice. All the predefined polynomials are irreducible so that they can be used with the fast-CBC exploration method. These polynomials are from Arash Partow .
Otherwise, one can also specify a custom polynomial modulus using the option –modulus
. The number of points will be two to the power of its degree. Polynomials are encoded as integers, where the formal variable is replaced by 2. For instance \( 1 + z^2 + z^5 \) is represented by \( 1 + 2^2 + 2^5 = 37\), so it can be specified by –modulus 37
. Note that it is always necessary to specify a custom modulus when one constructs an embedded polynomial lattice rule.
To construct a specific lattice rule, for instance to evaluate its merit value or to extend it, one must specify its generating vector. LatNet Builder uses the following convention: a generating vector is described by a dash-separated list of integers or polynomials, depending on whether the lattice is ordinary or polynomial.
In the Command-Line Tutorial, any occurrence of genVec
or point-set-description
with –set-type lattice
can be replaced by such a list. For instance to specify an ordinary lattice with generating vector \((1, 2, 3, 5, 7, 11)\), replace genVec
with 1-2-3-5-7-11
.
Three constructions of digital nets are supported by LatNet Builder:
The switch between these three constructions can be operated using the option –construction
which can take the following values:
–construction sobol
to search for Sobol' nets;–construction polynomial
to search for polynomial lattice rules; or–construction explicit
to search for with digital nets with explicit generating matrices.Recall that the number of points of a digital net in base 2 is always a power of two. The option –size
can be used to specify the number of points of the digital net. For instance, to specify a net with \(2^8\) points, use –size 2^8
. For polynomial lattice rules, a default (irreducible) modulus corresponding to this number of points will be chosen; to choose a specific modulus, one can use –modulus
as they would specify a modulus for a polynomial lattice rule.
Constructing a specific digital net depends on its construction method. In the Command-Line Tutorial, any occurence of point-set-description
or net-description
can be replaced as follows:
0-1-1,1
stands for the Sobol' net in dimension 3 with direction numbers \(((0), (1), (1,1))\). Note that a dummy direction number equal to zero must be specified for the first coordinate (which is always equal to the identity matrix).1,3,5-5,5,3-6,2,1
stands for the following generating matrices: \[ \begin{pmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{pmatrix}, \begin{pmatrix} 1 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 1 & 1 \end{pmatrix}, \begin{pmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}. \]
In the code, we take r=31. So, for instance, 2^30=1073741824 encodes a column with a 1 on the first row, and 0 elsewhere.