torchquad
torchquad copied to clipboard
Low Discrepancy Sequences for MonteCarlo and VEGAS
Feature
Desired Behavior / Functionality
Low discrepancy sequences could be used as an optional replacement for random number generation for MonteCarlo and VEGAS. With certain integrands, this could lead to a higher average accuracy.
What Needs to Be Done
- Add a class similar to the RNG class to generate numbers with a low discrepancy sequence instead of a PRNG. An instance of it can be passed as
rng
argument to VEGAS and MonteCarlo. This class could use, for example, PyTorch's and TensorFlow's sobol sequences: https://www.tensorflow.org/api_docs/python/tf/math/sobol_sample, https://pytorch.org/docs/stable/generated/torch.quasirandom.SobolEngine.html - Add a function to the number generator classes which samples points and use it for MonteCarlo and VEGAS instead of
uniform
. In comparison touniform
, the output of this function always corresponds to points in a space, where conceptually a distance function is defined. - Change
MonteCarlo.get_jit_compiled_integrate
so that it works with the number generator class for low discrepancy sequences.
How Can It Be Tested
It can be tested with additional tests in the torchquad/tests folder.