45 releases (breaking)
Uses new Rust 2024
| 0.33.0 | Oct 16, 2025 |
|---|---|
| 0.31.0 | Jul 11, 2025 |
| 0.27.0 | Mar 13, 2025 |
| 0.25.0 | Dec 19, 2024 |
| 0.4.0 | Jul 9, 2022 |
#698 in Machine learning
1,527 downloads per month
Used in 6 crates
(4 directly)
32KB
606 lines
This library implements some Design of Experiments (DoE) methods a.k.a. sampling methods, specially the Latin Hypercube sampling method which is used by surrogate-based methods. This library is a port of SMT sampling methods.
A DoE method is a way to generate a set of points (i.e. a DoE) within a design (or sample) space xlimits.
The design space is defined as a 2D ndarray (nx, 2), specifying lower bound and upper bound
of each nx components of the samples x.
Example:
use egobox_doe::{FullFactorial, Lhs, LhsKind, Random, SamplingMethod};
use ndarray::{arr2};
use ndarray_rand::rand::SeedableRng;
use rand_xoshiro::Xoshiro256Plus;
// Design space is defined as [5., 10.] x [0., 1.], samples are 2-dimensional.
let xlimits = arr2(&[[5., 10.], [0., 1.]]);
// We generate five samples using centered Latin Hypercube sampling.
let samples = Lhs::new(&xlimits).kind(LhsKind::Centered).sample(5);
// or else with FullFactorial sampling
let samples = FullFactorial::new(&xlimits).sample(5);
// or else randomly with random generator for reproducibility
let samples = Random::new(&xlimits).with_rng(Xoshiro256Plus::seed_from_u64(42)).sample(5);
This library contains three kinds of sampling methods:
Design of experiments
egobox-doe provides a Rust implementation of some design of experiments building methods.
It is a Rust port of sampling methods of the SMT Python library.
The big picture
egobox-doe is a library crate in the top-level package egobox.
Current state
egobox-doe currently provides an implementation of the following methods:
- Random sampling
- Full-factorial sampling
- Latin hypercube sampling: classic, centered, optimized
Examples
There is an usage example in the examples/ directory. To run, use:
$ cargo run --release --example samplings
License
Licensed under the Apache License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
Dependencies
~7.5MB
~143K SLoC