Python Nearly Orthogonal Latin Hypercube Generator
This library allows to generate Nearly Orthogonal Latin Hypercubes (NOLH) according to Cioppa (2007) and De Rainville et al. (2012) and reference therein.
Installation
Using pip
$ pip install pynolh
Clone the repository
$ git clone http://github.com/fmder/pynolh.git
and from the cloned directory type
$ python setup.py install
PyNOLH requires Numpy.
Usage
The library contains a single generator and a function to retrieve the necessary parameters from a desired dimensionality. To generate a 6 dimension NOLH from the indentity permutation:
import pynolh
dim = 6
m, q, r = pynolh.params(dim)
conf = range(q)
remove = range(dim - r, dim)
nolh = pynolh.nolh(conf, remove)
The NOLH returned is a numpy array with one row being one sample.
You can also produce a NOLH from a random permutation configuration vector and remove random columns:
import pynolh
import random
dim = 6
m, q, r = pynolh.params(dim)
conf = random.sample(range(q), q)
remove = random.sample(range(q), r)
nolh = pynolh.nolh(conf, remove)
The nolh() function accepts configurations with either numbers in [0 q-1] or [1 q].
import pynolh
dim = 6
m, q, r = pynolh.params(dim)
conf = range(1, q + 1)
remove = range(dim - r + 1, dim + 1)
nolh = pynolh.nolh(conf, remove)
Some prebuilt configurations are given within the library. The CONF module attribute is a dictionary with the dimension as key and a configuration, columns to remove pair as value.
import pynolh
conf, remove = pynolh.CONF[6]
nolh = pynolh.nolh(conf, remove)
The configurations for dimensions 2 to 7 are from Cioppa (2007) and 8 to 29 are from De Rainville et al. 2012.
Configuration Repository
See the Quasi Random Sequences Repository for more configurations.
References
Cioppa, T. M., & Lucas, T. W. (2007). Efficient nearly orthogonal and space-filling Latin hypercubes. Technometrics, 49(1).
De Rainville, F.-M., Gagné, C., Teytaud, O., & Laurendeau, D. (2012). Evolutionary optimization of low-discrepancy sequences. ACM Transactions on Modeling and Computer Simulation (TOMACS), 22(2), 9.