This class implements Hammersley point sets, which are defined as follows. More...
Public Member Functions | |
| HammersleyPointSet (int n, int dim) | |
| Constructs a new Hammersley point set with n points in dim dimensions. | |
| void | addFaurePermutations () |
| Permutes the digits using Faure permutations for all coordinates. | |
| void | ErasePermutations () |
| Erases the Faure permutations: from now on, the digits will not be Faure permuted. | |
| double | getCoordinate (int i, int j) |
| Returns \(u_{i,j}\), the coordinate \(j\) of the point \(i\). | |
| Public Member Functions inherited from umontreal.ssj.hups.PointSet | |
| int | getDimension () |
| Returns the dimension (number of available coordinates) of the points. | |
| int | getNumPoints () |
| Returns the number of points. | |
| PointSetIterator | iterator () |
| Constructs and returns a point set iterator. | |
| void | randomize (PointSetRandomization rand) |
| Randomizes this point set using the given rand. | |
| void | addRandomShift (int d1, int d2, RandomStream stream) |
| By default, this method generates a random shift in the protected double[] array shift, to be used eventually for a random shift modulo 1. | |
| void | addRandomShift (RandomStream stream) |
Same as addRandomShift(0, dim, stream), where dim is the dimension of the point set. | |
| void | addRandomShift (int d1, int d2) |
| Refreshes the random shift (generates new uniform values for the random shift coordinates) for coordinates d1 to d2-1, using the saved shiftStream. | |
| void | addRandomShift () |
Same as addRandomShift(0, dim), where dim is the dimension of the point set. | |
| void | clearRandomShift () |
| Erases the current random shift, if any. | |
| String | toString () |
| Formats a string that contains information about the point set. | |
| String | formatPoints () |
Same as invoking formatPoints(n, d) with \(n\) and \(d\) equal to the number of points and the dimension of this object, respectively. | |
| String | formatPoints (int n, int d) |
| Formats a string that displays the same information as returned by toString, together with the first \(d\) coordinates of the first. | |
| String | formatPoints (PointSetIterator iter) |
Same as invoking formatPoints(iter, n, d) with \(n\) and \(d\) equal to the number of points and the dimension, respectively. | |
| String | formatPoints (PointSetIterator iter, int n, int d) |
Same as invoking formatPoints(n, d), but prints the points by calling iter repeatedly. | |
| String | formatPointsBase (int b) |
Similar to formatPoints(), but the points coordinates are printed in base \(b\). | |
| String | formatPointsBase (int n, int d, int b) |
Similar to formatPoints(n, d), but the points coordinates are printed in base \(b\). | |
| String | formatPointsBase (PointSetIterator iter, int b) |
Similar to formatPoints(iter), but the points coordinates are printed in base. | |
| String | formatPointsBase (PointSetIterator iter, int n, int d, int b) |
Similar to formatPoints(iter,
n, d), but the points coordinates are printed in base \(b\). | |
| String | formatPointsNumbered () |
Same as invoking formatPointsNumbered(n, d) with \(n\) and \(d\) equal to the number of points and the dimension, respectively. | |
| String | formatPointsNumbered (int n, int d) |
Same as invoking formatPoints(n,d), except that the points are numbered. | |
Additional Inherited Members | |
| Static Public Member Functions inherited from umontreal.ssj.hups.PointSet | |
| static int | getMaxBits () |
| Returns the maximum number of usable bits. | |
| Protected Attributes inherited from umontreal.ssj.hups.PointSet | |
| double | EpsilonHalf = 1.0 / Num.TWOEXP[55] |
| To avoid 0 for nextCoordinate when random shifting, we add this to each coordinate. | |
| int | dim = 0 |
| Dimension of the points. | |
| int | numPoints = 0 |
| Number of points. | |
| int | dimShift = 0 |
| Current dimension of the shift. | |
| int | capacityShift = 0 |
| Number of array elements in the shift vector, always >= dimShift. | |
| double[] | shift |
| This is the shift vector as a double[] array, which contains the current random shift in case we apply a random shift modulo 1. | |
| RandomStream | shiftStream |
| Stream used to generate the random shifts. | |
| Static Protected Attributes inherited from umontreal.ssj.hups.PointSet | |
| static final int | MAXBITS = 31 |
| Since Java has no unsigned type, the 32nd bit cannot be used efficiently, so we have only 31 bits. | |
This class implements Hammersley point sets, which are defined as follows.
Let \(2 = b_1 < b_2 < \cdots\) denote the sequence of all prime numbers by increasing order. The Hammersley point set with \(n\) points in \(s\) dimensions contains the points
\[ \mathbf{u}_i = (i/n,\psi_{b_1}(i),\psi_{b_2}(i),…, \psi_{b_{s-1}}(i)), \tag{Hammersley-point2} \]
for \(i=0,…,n-1\), where \(\psi_b\) is the radical inverse function in base \(b\), defined in RadicalInverse. This class is not a subclass of DigitalNet, because the basis is not the same for all coordinates. We do obtain a net in a generalized sense if \(n = b_1^{k_1} = b_2^{k_2} = \cdots= b_{s-1}^{k_{s-1}}\) for some integers \(k_1,…,k_{s-1}\).
The points of a Hammersley point set can be
"scrambled" by applying a permutation to the digits
of @f$i@f$ before computing each coordinate via (
{@link REF_hups_overview_eq_Hammersley_point
Hammersley-point} ). If @f[ i = a_0 + a_1 b_j + …+
a_{k_j-1} b_j^{k_j-1}, @f] and @f$\pi_j@f$ is a
permutation of the digits @f$\{0,…,b_j-1\}@f$,
then @f[ \psi_{b_j}(i) = \sum_{r=0}^{k_j-1} a_r
b_j^{-r-1} @f] is replaced in (
{@link REF_hups_overview_eq_Hammersley_point
Hammersley-point} ) by @f[ u_{i,j}= \sum_{r=0}^{k_j-1}
\pi_j[a_r] b_j^{-r-1}. @f] The
permutations @f$\pi_j@f$ can be deterministic or
random. One (deterministic) possibility implemented
here is to use the Faure permutation
of @f$\{0,…,b_j\}@f$ for @f$\pi_j@f$, for each
coordinate
\(j > 0\).
<div class="SSJ-bigskip"></div><div class="SSJ-bigskip"></div>
Definition at line 64 of file HammersleyPointSet.java.
| umontreal.ssj.hups.HammersleyPointSet.HammersleyPointSet | ( | int | n, |
| int | dim ) |
Constructs a new Hammersley point set with n points in dim dimensions.
| n | number of points |
| dim | dimension of the point set |
Definition at line 75 of file HammersleyPointSet.java.
| void umontreal.ssj.hups.HammersleyPointSet.addFaurePermutations | ( | ) |
Permutes the digits using Faure permutations for all coordinates.
After the method is called, the coordinates \(u_{i,j}\) are generated via
\[ u_{i,j} = \sum_{r=0}^{k-1} \pi_j[a_r] b_j^{-r-1}, \]
for \(j=1,…,s-1\) and \(u_{i,0}=i/n\), where \(\pi_j\) is the Faure permutation of \(\{0,…,b_j-1\}\).
Definition at line 91 of file HammersleyPointSet.java.
| void umontreal.ssj.hups.HammersleyPointSet.ErasePermutations | ( | ) |
Erases the Faure permutations: from now on, the digits will not be Faure permuted.
Definition at line 106 of file HammersleyPointSet.java.
| double umontreal.ssj.hups.HammersleyPointSet.getCoordinate | ( | int | i, |
| int | j ) |
Returns \(u_{i,j}\), the coordinate \(j\) of the point \(i\).
When the points are randomized (e.g., a random shift is added), the values returned by this method should incorporate the randomizations. Richard: La méthode getCoordinate de certaines classes ne tient pas compte du random shift, contrairement à l’itérateur de la même classe. Faut-il que toutes les getCoordinate implémentent le random shift quand il existe? Oui.
| i | index of the point to look for |
| j | index of the coordinate to look for |
Reimplemented from umontreal.ssj.hups.PointSet.
Definition at line 111 of file HammersleyPointSet.java.