torchquad icon indicating copy to clipboard operation
torchquad copied to clipboard

Low Discrepancy Sequences for MonteCarlo and VEGAS

Open FHof opened this issue 2 years ago • 0 comments

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 to uniform, 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.

FHof avatar Apr 13 '22 09:04 FHof