# Initial Designs¶

## Latin Hypercube design¶

class gpflowopt.design.LatinHyperCube(size, domain, max_seed_size=None)

Latin hypercube with optimized minimal distance between points.

Created with the Translational Propagation algorithm to avoid lengthy generation procedures. For dimensions smaller or equal to 6, this algorithm finds the quasi-optimal LHD with overwhelming probability. To increase this probability, if a design for a domain with dimensionality D is requested, D different designs are generated using seed sizes 1,2,…D (unless a maximum seed size 1<= S <= D is specified. The seeds themselves are small Latin hypercubes generated with the same algorithm.

Beyond 6D, the probability of finding the optimal LHD fades, although the resulting designs are still acceptable. Somewhere beyond 15D this algorithm tends to slow down a lot and become very memory demanding. Key reference is

@article{Viana:2010,
title={An algorithm for fast optimal Latin hypercube design of experiments},
author={Viana, Felipe AC and Venter, Gerhard and Balabanov, Vladimir},
journal={International Journal for Numerical Methods in Engineering},
volume={82},
number={2},
pages={135--156},
year={2010},
publisher={John Wiley & Sons, Ltd.}
}


For pre-generated LHDs please see the following website.

Attributes:
generative_domain
return: Domain object representing [1, N]^D, the generative domain for the TPLHD algorithm.

Methods

 create_design() Generate several LHDs with increasing seed. generate() Creates the design in the domain specified during construction.
__init__(size, domain, max_seed_size=None)
Parameters: size – requested size N for the LHD domain – domain to generate the LHD for, must be continuous max_seed_size – the maximum size 1 <= S <= D for the seed, . If unspecified, equals the dimensionality D of the domain. During generation, S different designs are generated. Seeds with sizes 1,2,…S are used. Each seed itself is a small LHD.
create_design()

Generate several LHDs with increasing seed.

Maximum S = min(dimensionality,max_seed_size). From S candidate designs, the one with the best intersite distance is returned

Returns: data matrix, size N x D.
generative_domain
Returns: Domain object representing [1, N]^D, the generative domain for the TPLHD algorithm.

## Factorial design¶

class gpflowopt.design.FactorialDesign(levels, domain)

A k-level grid-based design.

Design with the optimal minimal distance between points (a simple grid), however it risks collapsing points when removing parameters. Its size is a power of the domain dimensionality.

Attributes:
generative_domain
return: Domain object representing the domain associated with the points generated in create_design().

Methods

 create_design() Returns a design generated in the generative domain. generate() Creates the design in the domain specified during construction.
__init__(levels, domain)
Parameters: size – number of data points to generate domain – domain to generate data points in.
create_design()

Returns a design generated in the generative domain.

This method should be implemented in the subclasses.

Returns: data matrix, N x D
generative_domain
Returns: Domain object representing the domain associated with the points generated in create_design().

Defaults to [0,1]^D, can be overwritten by subclasses

## Random design¶

class gpflowopt.design.RandomDesign(size, domain)

Random space-filling design.

Generates points drawn from the standard uniform distribution U(0,1).

Attributes:
generative_domain
return: Domain object representing the domain associated with the points generated in create_design().

Methods

 create_design() Returns a design generated in the generative domain. generate() Creates the design in the domain specified during construction.
__init__(size, domain)
Parameters: size – number of data points to generate domain – domain to generate data points in.
create_design()

Returns a design generated in the generative domain.

This method should be implemented in the subclasses.

Returns: data matrix, N x D