25 releases (breaking)

new 0.19.0 May 15, 2024
0.17.0 Apr 4, 2024
0.16.0 Mar 7, 2024
0.14.0 Dec 13, 2023
0.4.0 Jul 9, 2022

#337 in Machine learning

Download history 21/week @ 2024-01-29 19/week @ 2024-02-05 38/week @ 2024-02-12 182/week @ 2024-02-19 74/week @ 2024-02-26 200/week @ 2024-03-04 85/week @ 2024-03-11 47/week @ 2024-03-18 185/week @ 2024-04-01 310/week @ 2024-04-08 20/week @ 2024-04-15 81/week @ 2024-04-22 46/week @ 2024-04-29 12/week @ 2024-05-06

171 downloads per month
Used in 4 crates

Apache-2.0

32KB
605 lines

Design of experiments

crates.io docs

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


lib.rs:

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:

Dependencies

~7MB
~136K SLoC