The problem of numerically integrating multidimensional functions arises from function approximation, optimization, and solving partial differential equations, among others. The number of function evaluations, the major cost of numerical integration, required by quadrature rules such as Simpson’s rule or the Gaussian quadrature rule, grows exponentially as the dimension increases. An alternative method is the Monte Carlo method, in which the integrand is evaluated at random points in the integration region. Obviously, a good random point generator is critical. It is known that multidimensional points with each component uniformly distributed in one dimension tend to appear in clusters, causing errors. This software tool, Lattice Builder, constructs good integration lattices for multidimensional numerical integration. To be precise, this tool uses rank-1 lattice rules to ensure that the points generated do not superpose on each other in lower-dimensional projections.
Lattice rules are specific to applications. This software searches for the lattice rules suitable for a particular application by providing parameters. Good software should give the user a choice. The modular design of the software allows the user to use his or her own program to replace an existing component, for example, lattice type, traversal type, or weight type. The software provides three user interfaces: an application programming interface (API), a command-line interface (CLI), and a graphical user interface (GUI). The user can develop his or her modules through the API.
This software is a first major step in building lattice rules. Further developments and contributions from users are necessary. This paper reports extensive experimental results. More interpretations of the results would be helpful. A user’s guide that includes sample runs of typical problems would be useful. The documentation in the code needs to be improved. Well-documented code is essential for maintenance and user contributions.
The software package can be downloaded from http://github.com/umontreal-simul.