1.6. Design of Experiments

1.6.1. Introduction

This example shows how to use pSeven Core to generate a design of experiments.

It generates a set of 20 points which can be used, for instance, as a training sample for approximating the Branin function (see Approximation).

Start by importing the Generic Tool for Design of Experiments (GTDoE) module:

from da.p7core import gtdoe

1.6.2. Sample Generation

Create a gtdoe.Generator instance:

generator = gtdoe.Generator()

You can set options (see Options Interface), logger and watcher (see Loggers, Watchers) for the generator:

import sys
from da.p7core import loggers

# log to stderr, show all messages
generator.set_logger(loggers.StreamLogger(sys.stderr, loggers.LogLevel.DEBUG))

# no watcher - we don't want to interrupt generation
# choose the generation technique (optimal Latin hypercube)
generator.options.set('GTDoE/Technique', 'OLHS')

# set the maximum verbosity level
generator.options.set('GTDoE/LogLevel', 'Debug')

Generate a sample:

result = generator.generate(bounds=([-5.0, 0.0], [10.0, 15.0]), count=20)

Print the sample:

print(result.points)

1.6.3. Full Example Code

import sys

from da.p7core import gtdoe
from da.p7core import loggers

generator = gtdoe.Generator()
generator.set_logger(loggers.StreamLogger(sys.stderr, loggers.LogLevel.DEBUG))
generator.options.set('GTDoE/Technique', 'OLHS')
generator.options.set('GTDoE/LogLevel', 'Debug')

result = generator.generate(bounds=([-5.0, 0.0], [10.0, 15.0]), count=20)
print(result.points)

If you have Matplotlib installed, you may visualize obtained DoE.

import matplotlib.pyplot as plt
plt.clf()
fig = plt.figure(1)
plt.plot([pt[0] for pt in pts], [pt[1] for pt in pts], '.')
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('OLHS generated by GTDoE')
fig.savefig('OLHS_DoE')
plt.show()

Resulting plot:

OLHS by GTDoE