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: