|
SSJ V. 1.2.5. |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object umontreal.iro.lecuyer.hups.PointSet
public abstract class PointSet
This abstract class defines the basic methods for accessing and manipulating point sets. A point set can be represented as a two-dimensional array, whose element (i, j) contains ui, j, the coordinate j of point i. Each coordinate ui, j is assumed to be in the unit interval [0, 1]. Whether the values 0 and 1 can occur may depend on the actual implementation of the point set.
All points have the same number of coordinates (their dimension)
and this number can be queried by getDimension
.
The number of points is queried by getNumPoints
.
The points and coordinates are both numbered starting from 0
and their number can actually be infinite.
The iterator
method provides a point set iterator
which permits one to enumerate the points and their coordinates.
Several iterators over the same point set can coexist at any given time.
These iterators are instances of a hidden inner-class that implements
the PointSetIterator
interface.
The default implementation of iterator provided here relies on
the method getCoordinate
to access the coordinates directly.
However, this approach is rarely efficient.
Specialized implementations that dramatically improve the performance
are provided in subclasses of PointSet
.
The PointSetIterator
interface actually extends the
RandomStream
interface, so that the
iterator can also be seen as a RandomStream
and used wherever
such a stream is required for generating uniform random numbers.
This permits one to easily replace pseudorandom numbers by the
coordinates of a selected set of highly-uniform points, i.e.,
to replace Monte Carlo by quasi-Monte Carlo in a simulation program.
This abstract class has only one abstract method:
getCoordinate
.
Providing an implementation for this method is already sufficient
for the subclass to work.
However, in practically all cases, efficiency can be dramatically improved by
overwriting iterator
to provide a custom iterator that does not
necessarily rely on getCoordinate
.
In fact, direct use of getCoordinate
to access the coordinates
is discouraged.
One should access the coordinates only via the iterators.
Constructor Summary | |
---|---|
PointSet()
|
Method Summary | |
---|---|
void |
addRandomShift()
|
void |
addRandomShift(int d1,
int d2)
Deprecated: Similar to addRandomShift (d1, d2, stream), with the current random stream. |
void |
addRandomShift(int d1,
int d2,
RandomStream stream)
This method does nothing for this generic class. |
void |
addRandomShift(RandomStream stream)
Similar to addRandomShift (0, d2, stream), with d2 the dimension of the current random shift. |
void |
clearRandomShift()
Erases the current random shift, if any. |
String |
formatPoints()
Same as invoking formatPoints with n and d equal to the
number of points and the dimension, 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 n points. |
abstract double |
getCoordinate(int i,
int j)
Returns ui, j, the coordinate j of the point i. |
int |
getDimension()
Returns the dimension (number of available coordinates) of the point set. |
int |
getNumPoints()
Returns the number of points. |
PointSetIterator |
iterator()
Constructs and returns a point set iterator. |
void |
randomize()
|
void |
randomize(int d1,
int d2)
Deprecated: By default, this method simply calls addRandomShift(d1, d2). |
void |
randomize(int d1,
int d2,
RandomStream stream)
By default, this method simply calls addRandomShift(d1, d2, stream). |
void |
randomize(RandomStream stream)
By default, this method simply calls addRandomShift(stream). |
String |
toString()
Formats a string that contains the information about the point set. |
void |
unrandomize()
By default, this method simply calls clearRandomShift(). |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public PointSet()
Method Detail |
---|
public int getDimension()
public int getNumPoints()
public abstract double getCoordinate(int i, int j)
i
- index of the point to look forj
- index of the coordinate to look for
public PointSetIterator iterator()
getCoordinate
(i,j) to iterate over the
points and coordinates, but subclasses can reimplement it
for better efficiency.
public void addRandomShift(int d1, int d2, RandomStream stream)
public void addRandomShift(RandomStream stream)
public void addRandomShift(int d1, int d2)
public void addRandomShift()
public void clearRandomShift()
public void randomize(int d1, int d2, RandomStream stream)
public void randomize(RandomStream stream)
public void randomize(int d1, int d2)
public void randomize()
public void unrandomize()
public String toString()
toString
in class Object
public String formatPoints()
formatPoints
with n and d equal to the
number of points and the dimension, respectively.
UnsupportedOperationException
- if the number of points
or dimension of the point set is infinitepublic String formatPoints(int n, int d)
toString
, together with the first d coordinates of the
first n points.
If the number of points is less than n or the dimension is
less than d, the default implementation throws an exception.
Of course, this method should be used only for small values of n and d.
UnsupportedOperationException
- if n is larger than
the number of points, or d is larger than the dimension, or if one
of them is infinite
|
SSJ V. 1.2.5. |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |