Generating vectors are used by the lattice generators to compute point sets. Previous works [1,2,3,4] commonly applied greedy component-by-component (CBC) algorithms to construct generating vectors. However, this process is dependent on weight vectors and the decay of Fourier coefficients. To this end, Takashi Goda and Pierre L’Ecuyer suggested in their work [5] that generating vectorsContinue reading “Random Lattice Generators are Not Bad”

# Category Archives: Blog

## Accelerating Rare-event Reliability Simulations for CERN’s Large Hadron Collider using QMCPy

In this blog post, we share an example for using the QMPCy package to accelerate rare-event Monte Carlo (MC) simulations in AvailSim4 [1]. The effort is part of a more general study of advanced MC methods for reliability studies of the CERN Machine Protection group. Introduction The European Organization for Nuclear Research, CERN, is homeContinue reading “Accelerating Rare-event Reliability Simulations for CERN’s Large Hadron Collider using QMCPy”

## Bayesian Stopping Criteria

The blog Why Add Q to MC?, explained the advantages of carefully chosen, low discrepancy sampling sites for approximating multivariate integrals, or equivalently, expectations of functions of multivariate random variables. This blog post explains at a Bayesian approach to determining the sample size required to satisfy the user’s error tolerance. Recall that the problem ofContinue reading “Bayesian Stopping Criteria”

## Digital Sequences, the Niederreiter Construction

The previous blog post on What Makes a Sequence “Low Discrepancy”? introduced the concept of so-called low discrepancy (LD) points. In the literature on QMC methods, there are in general two main families of low discrepancy points sets that are commonly used as integration nodes. These are, on the one hand, lattice point sets, asContinue reading “Digital Sequences, the Niederreiter Construction”

## Elliptic PDE Demo

Special thanks to Pieterjan Robbe for his new demo on Elliptic PDEs and continued collaboration on multilevel (Quasi-) Monte Carlo! The Jupyter notebook version of this demo is available in the QMCPy GitHub.

## Visualizing the Internals of Object Classes in QMCPy

As a software library grows, so does its complexity. This comment certainly applies to QMCPy [1], our Python library for high-dimensional numerical integration. UML (Unified Modelling Language) diagrams are a helpful tool for visualizing QMCPy’s intricate object oriented framework. These network diagrams display an objects methods, attributes, dependencies, and inheritance relationships. We have used theContinue reading “Visualizing the Internals of Object Classes in QMCPy”

## Speeding up QMCPy with Distributable C Code

Many Python packages rely on underlying C or C++ code to speed up their numerical methods. For example, NumPy calls C and C++ extensions in order to speed up matrix manipulation algorithms. Real Python’s article Python Bindings: Calling C or C++ From Python discusses a few reasons why you may want to utilize C or C++Continue reading “Speeding up QMCPy with Distributable C Code”

## Safe Handling of QMC Points

A Quasi-Monte Carlo construction of $n$ points in $d$ dimensions may look like IID points, but they must be used with a bit more care. Because QMC can give errors that are $o(1/n)$ as $n\to\infty$, changing or ignoring even one point can change the estimate by an amount much larger than the error would haveContinue reading “Safe Handling of QMC Points”

## qEI with QMCPy

Quasi-Monte Carlo methods (QMC) are a valuable tool for sampling random variables in a structured fashion; this allows for computing key statistics of random variables more efficiently than with i.i.d. sampling. Such quantities can play fundamental roles in larger algorithms, making their efficient computation fundamental to practical implementations of numerous applications. This was the motivationContinue reading “qEI with QMCPy”

## What Makes a Sequence “Low Discrepancy”?

The first blog post, “Why add Q to MC?”, introduced the concept of evenly spread points, which are commonly referred to as low discrepancy (LD) points. This is in contrast to independent and identically distributed (IID) points. Consider two sequences, $\boldsymbol{T}_1, \boldsymbol{T}_2, \ldots \overset{\text{IID}}{\sim} \mathcal{U}[0,1]^d$ \[\boldsymbol{X}_1, \boldsymbol{X}_2, \ldots \overset{\text{LD}}{\sim} \mathcal{U}[0,1]^d.\] Both sequences are expected toContinue reading “What Makes a Sequence “Low Discrepancy”?”

## A QMCPy Quick Start

We have created QMCPy, an open-source, object-oriented quasi- Monte Carlo (QMC) software framework in Python 3, which contains standardized parent classes for modeling integrands, measure, discrete distribution, and stopping criteria. We hope QMCPy could enable researchers and users to quickly extend and experiment with novel algorithmic components that validate their theories, or to simply leverage orContinue reading “A QMCPy Quick Start”

## Why Add Q to MC?

Quasi-Monte Carlo (QMC) methods can sometimes speed up simple Monte Carlo (MC) calculations by orders of magnitude? What makes them work so well? MC methods use computer generated random numbers to generate various scenarios. When computing financial risk, the scenarios may be possible financial market outcomes. When assessing the resiliency of the power grid, theContinue reading “Why Add Q to MC?”