24 releases (breaking)

new 0.18.1 Apr 10, 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

#341 in Machine learning

Download history 15/week @ 2024-01-26 22/week @ 2024-02-02 33/week @ 2024-02-09 126/week @ 2024-02-16 118/week @ 2024-02-23 166/week @ 2024-03-01 112/week @ 2024-03-08 59/week @ 2024-03-15 15/week @ 2024-03-22 132/week @ 2024-03-29 318/week @ 2024-04-05

545 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
~135K SLoC