(Quasi) Monte Carlo Framework in Python 3
Project description
QuasiMonte Carlo Community Software
QuasiMonte Carlo (QMC) methods are used to approximate multivariate integrals. They have four main components: an integrand, a discrete distribution, summary output data, and stopping criterion. Information about the integrand is obtained as a sequence of values of the function sampled at the datasites of the discrete distribution. The stopping criterion tells the algorithm when the userspecified error tolerance has been satisfied. We are developing a framework that allows collaborators in the QMC community to develop plugandplay modules in an effort to produce more efficient and portable QMC software. Each of the above four components is an abstract class. Abstract classes specify the common properties and methods of all subclasses. The ways in which the four kinds of classes interact with each other are also specified. Subclasses then flesh out different integrands, sampling schemes, and stopping criteria. Besides providing developers a way to link their new ideas with those implemented by the rest of the QMC community, we also aim to provide practitioners with stateoftheart QMC software for their applications.
Homepage ~ Article ~ GitHub ~ Read the Docs ~ PyPI ~ Blogs ~ Contributing ~ Issues
Installation
pip install qmcpy
The QMCPy Framework
The central package including the 5 main components as listed below. Each component is implemented as abstract classes with concrete implementations. For example, the lattice and Sobol' sequences are implemented as concrete implementations of the DiscreteDistribution
abstract class. A complete list of concrete implementations and thorough documentation can be found in the QMCPy Read the Docs.
 Stopping Criterion: determines the number of samples necessary to meet an error tolerance.
 Integrand: the function/process whose expected value will be approximated.
 True Measure: the distribution to be integrated over.
 Discrete Distribution: a generator of nodes/sequences that can be either IID (for Monte Carlo) or lowdiscrepancy (for quasiMonte Carlo), that mimic a standard distribution.
 Accumulate Data: stores and updates data used in the integration process.
Quickstart
Note: If the following mathematics is not rendering try using Google Chrome and installing the Mathjax Plugin for GitHub.
We will approximate the expected value of the $d$ dimensional Keister integrand [18]
$$g(X)=\pi^{d/2}\cos(\lVert X \rVert)$$
where $X \sim \mathcal{N}(\boldsymbol{0},\boldsymbol{I}/2)$.
We may choose a Sobol' discrete distribution with a corresponding Sobol' cubature stopping criterion to preform quasiMonte Carlo integration.
import qmcpy as qp
from numpy import pi, cos, sqrt, linalg
d = 2
dnb2 = qp.DigitalNetB2(d)
gauss_sobol = qp.Gaussian(dnb2, mean=0, covariance=1/2)
k = qp.CustomFun(
true_measure = gauss_sobol,
g = lambda x: pi**(d/2)*cos(linalg.norm(x,axis=1)))
qmc_sobol_algorithm = qp.CubQMCSobolG(k, abs_tol=1e3)
solution,data = qmc_sobol_algorithm.integrate()
print(data)
Running the above code outputs
LDTransformData (AccumulateData Object)
solution 1.808
error_bound 4.68e04
n_total 2^(13)
time_integrate 0.008
CubQMCSobolG (StoppingCriterion Object)
abs_tol 0.001
rel_tol 0
n_init 2^(10)
n_max 2^(35)
CustomFun (Integrand Object)
Gaussian (TrueMeasure Object)
mean 0
covariance 2^(1)
decomp_type PCA
Sobol (DiscreteDistribution Object)
d 2^(1)
dvec [0 1]
randomize LMS_DS
graycode 0
entropy 127071403717453177593768120720330942628
spawn_key ()
A more detailed quickstart can be found in our GitHub repo at QMCSoftware/demos/quickstart.ipynb
or in this Google Colab quickstart notebook.
We also highly recommend you take a look at Fred Hickernell's tutorial at the Monte Carlo QuasiMonte Carlo 2020 Conference and the corresponding MCQMC2020 Google Colab notebook.
Community
Please refer to this document for the key roles in the QMCPy community.
Citation
If you find QMCPy helpful in your work, please support us by citing the following work:
Choi, S.C. T., Hickernell, F. J., McCourt, M., Rathinavel, J. & Sorokin, A.
QMCPy: A quasiMonte Carlo Python Library. Working. 2020.
https://qmcsoftware.github.io/QMCSoftware/
BibTex citation available here
Video Tutorial
Please refer to this video for a quick introduction to QMCPy.
For a more detail introduction refer to this video.
References
[1] F. Y. Kuo and D. Nuyens. "Application of quasiMonte Carlo methods to elliptic PDEs with random diffusion coefficients  a survey of analysis and implementation," Foundations of Computational Mathematics, 16(6):16311696, 2016. (springer link, arxiv link)
[2] Fred J. Hickernell, Lan Jiang, Yuewei Liu, and Art B. Owen, "Guaranteed conservative fixed width confidence intervals via Monte Carlo sampling," Monte Carlo and QuasiMonte Carlo Methods 2012 (J. Dick, F.Y. Kuo, G. W. Peters, and I. H. Sloan, eds.), pp. 105128, SpringerVerlag, Berlin, 2014. DOI: 10.1007/9783642410956_5
[3] SouCheng T. Choi, Yuhan Ding, Fred J. Hickernell, Lan Jiang, Lluis Antoni Jimenez Rugama, Da Li, Jagadeeswaran Rathinavel, Xin Tong, Kan Zhang, Yizhi Zhang, and Xuan Zhou, GAIL: Guaranteed Automatic Integration Library (Version 2.3.1) [MATLAB Software], 2020. Available from http://gailgithub.github.io/GAIL_Dev/.
[4] SouCheng T. Choi, "MINRESQLP Pack and Reliable Reproducible Research via Supportable Scientific Software," Journal of Open Research Software, Volume 2, Number 1, e22, pp. 17, 2014.
[5] SouCheng T. Choi and Fred J. Hickernell, "IIT MATH573 Reliable Mathematical Software" [Course Slides], Illinois Institute of Technology, Chicago, IL, 2013. Available from http://gailgithub.github.io/GAIL_Dev/.
[6] Daniel S. Katz, SouCheng T. Choi, Hilmar Lapp, Ketan Maheshwari, Frank Loffler, Matthew Turk, Marcus D. Hanwell, Nancy WilkinsDiehr, James Hetherington, James Howison, Shel Swenson, Gabrielle D. Allen, Anne C. Elster, Bruce Berriman, Colin Venters, "Summary of the First Workshop On Sustainable Software for Science: Practice and Experiences (WSSSPE1)," Journal of Open Research Software, Volume 2, Number 1, e6, pp. 121, 2014.
[7] Fang, K.T., and Wang, Y. (1994). Numbertheoretic Methods in Statistics. London, UK: CHAPMAN & HALL
[8] Lan Jiang, Guaranteed Adaptive Monte Carlo Methods for Estimating Means of Random Variables, PhD Thesis, Illinois Institute of Technology, 2016.
[9] Lluis Antoni Jimenez Rugama and Fred J. Hickernell, "Adaptive multidimensional integration based on rank1 lattices," Monte Carlo and QuasiMonte Carlo Methods: MCQMC, Leuven, Belgium, April 2014 (R. Cools and D. Nuyens, eds.), Springer Proceedings in Mathematics and Statistics, vol. 163, SpringerVerlag, Berlin, 2016, arXiv:1411.1966, pp. 407422.
[10] KaiTai Fang and Yuan Wang, Numbertheoretic Methods in Statistics, Chapman & Hall, London, 1994.
[11] Fred J. Hickernell and Lluis Antoni Jimenez Rugama, "Reliable adaptive cubature using digital sequences," Monte Carlo and QuasiMonte Carlo Methods: MCQMC, Leuven, Belgium, April 2014 (R. Cools and D. Nuyens, eds.), Springer Proceedings in Mathematics and Statistics, vol. 163, SpringerVerlag, Berlin, 2016, arXiv:1410.8615 [math.NA], pp. 367383.
[12] Marius Hofert and Christiane Lemieux (2019). qrng: (Randomized) QuasiRandom Number Generators. R package version 0.07. https://CRAN.Rproject.org/package=qrng.
[13] Faure, Henri, and Christiane Lemieux. “Implementation of Irreducible Sobol’ Sequences in Prime Power Bases,” Mathematics and Computers in Simulation 161 (2019): 13–22.
[14] M. B. Giles. "Multilevel Monte Carlo path simulation," Operations Research, 56(3):607617, 2008. http://people.maths.ox.ac.uk/~gilesm/files/OPRE_2008.pdf.
[15] M. B. Giles. "Improved multilevel Monte Carlo convergence using the Milstein scheme," 343358, in Monte Carlo and QuasiMonte Carlo Methods 2006, Springer, 2008. http://people.maths.ox.ac.uk/~gilesm/files/mcqmc06.pdf.
[16] M. B. Giles and B. J. Waterhouse. "Multilevel quasiMonte Carlo path simulation," pp.165181 in Advanced Financial Modelling, in Radon Series on Computational and Applied Mathematics, de Gruyter, 2009. http://people.maths.ox.ac.uk/~gilesm/files/radon.pdf.
[17] Owen, A. B. "A randomized Halton algorithm in R," 2017. arXiv:1706.02808 [stat.CO]
[18] B. D. Keister, Multidimensional Quadrature Algorithms, 'Computers in Physics', 10, pp. 119122, 1996.
[19] L’Ecuyer, Pierre & Munger, David. (2015). LatticeBuilder: A General Software Tool for Constructing Rank1 Lattice Rules. ACM Transactions on Mathematical Software. 42. 10.1145/2754929.
[20] Fischer, Gregory & Carmon, Ziv & Zauberman, Gal & L’Ecuyer, Pierre. (1999). Good Parameters and Implementations for Combined Multiple Recursive Random Number Generators. Operations Research. 47. 159164. 10.1287/opre.47.1.159.
[21] I.M. Sobol', V.I. Turchaninov, Yu.L. Levitan, B.V. Shukhman: "QuasiRandom Sequence Generators" Keldysh Institute of Applied Mathematics, Russian Academy of Sciences, Moscow (1992).
[22] Sobol, Ilya & Asotsky, Danil & Kreinin, Alexander & Kucherenko, Sergei. (2011). Construction and Comparison of HighDimensional Sobol' Generators. Wilmott. 2011. 10.1002/wilm.10056.
[23] Paszke, A., Gross, S., Massa, F., Lerer, A., Bradbury, J., Chanan, G., … Chintala, S. (2019). PyTorch: An Imperative Style, HighPerformance Deep Learning Library. In H. Wallach, H. Larochelle, A. Beygelzimer, F. d extquotesingle Alch'eBuc, E. Fox, & R. Garnett (Eds.), Advances in Neural Information Processing Systems 32 (pp. 8024–8035). Curran Associates, Inc. Retrieved from http://papers.neurips.cc/paper/9015pytorchanimperativestylehighperformancedeeplearninglibrary.pdf
[24] S. Joe and F. Y. Kuo, Constructing Sobol sequences with better twodimensional projections, SIAM J. Sci. Comput. 30, 26352654 (2008).
[25] Paul Bratley and Bennett L. Fox. 1988. Algorithm 659: Implementing Sobol's quasirandom sequence generator. ACM Trans. Math. Softw. 14, 1 (March 1988), 88–100. DOI:https://doi.org/10.1145/42288.214372
[26] P. L'Ecuyer, P. Marion, M. Godin, and F. Puchhammer, "A Tool for Custom Construction of QMC and RQMC Point Sets," Monte Carlo and QuasiMonte Carlo Methods 2020.
[27] P Kumaraswamy, A generalized probability density function for doublebounded random processes. J. Hydrol. 46, 79–88 (1980).
[28] D Li, Reliable quasiMonte Carlo with control variates. Master’s thesis, Illinois Institute of Technology (2016)
[29] D.H. Bailey, J.M. Borwein, R.E. Crandall, Box integrals, Journal of Computational and Applied Mathematics, Volume 206, Issue 1, 2007, Pages 196208, ISSN 03770427, https://doi.org/10.1016/j.cam.2006.06.010.
[30] Art B. Owen.Monte Carlo theory, methods and examples. 2013.
Sponsors

Kamakura Corporation, acquired by SAS Institute Inc. in June 2022
Project details
Release history Release notifications  RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.