samplers

This module contains various classes that can be used for specifying different types of samplers. These different samplers implement basic sampling techniques including Full Factorial sampling, Latin Hypercube sampling, and Monte Carlo sampling.

class ema_workbench.em_framework.samplers.AbstractSampler

Abstract base class from which different samplers can be derived.

In the simplest cases, only the sample method needs to be overwritten. generate_designs` is the only method called from outside. The other methods are used internally to generate the designs.

generate_designs(parameters, nr_samples)

external interface for Sampler. Returns the computational experiments over the specified parameters, for the given number of samples for each parameter.

Parameters:
  • parameters (list) – a list of parameters for which to generate the experimental designs

  • nr_samples (int) – the number of samples to draw for each parameter

Returns:

  • generator – a generator object that yields the designs resulting from combining the parameters

  • int – the number of experimental designs

generate_samples(parameters, size)

The main method of :class: ~sampler.Sampler and its children. This will call the sample method for each of the parameters and return the resulting designs.

Parameters:
  • parameters (collection) – a collection of RealParameter, IntegerParameter, and CategoricalParameter instances.

  • size (int) – the number of samples to generate.

Returns:

dict with the parameter.name as key, and the sample as value

Return type:

dict

sample(distribution, size)

method for sampling a number of samples from a particular distribution. The various samplers differ with respect to their implementation of this method.

Parameters:
  • distribution (scipy frozen distribution)

  • size (int) – the number of samples to generate

Returns:

the samples for the distribution and specified parameters

Return type:

numpy array

class ema_workbench.em_framework.samplers.DefaultDesigns(designs, parameters, n)

iterable for the experimental designs

class ema_workbench.em_framework.samplers.FullFactorialSampler

generates a full factorial sample.

If the parameter is non categorical, the resolution is set the number of samples. If the parameter is categorical, the specified value for samples will be ignored and each category will be used instead.

determine_nr_of_designs(sampled_parameters)

Helper function for determining the number of experiments that will be generated given the sampled parameters.

Parameters:

sampled_parameters (list) – a list of sampled parameters, as the values return by generate_samples

Returns:

the total number of experimental design

Return type:

int

generate_designs(parameters, nr_samples)

This method provides an alternative implementation to the default implementation provided by Sampler. This version returns a full factorial design across the parameters.

Parameters:
  • parameters (list) – a list of parameters for which to generate the experimental designs

  • nr_samples (int) – the number of intervals to use on each Parameter. Categorical parameters always return all their categories

Returns:

  • generator – a generator object that yields the designs resulting from combining the parameters

  • int – the number of experimental designs

generate_samples(parameters, size)

The main method of :class: ~sampler.Sampler and its children. This will call the sample method for each of the parameters and return the resulting samples

Parameters:
  • parameters (collection) – a collection of Parameter instances

  • size (int) – the number of samples to generate.

Returns:

with the paramertainty.name as key, and the sample as value

Return type:

dict

class ema_workbench.em_framework.samplers.LHSSampler

generates a Latin Hypercube sample for each of the parameters

sample(distribution, size)

generate a Latin Hypercube Sample.

Parameters:
  • distribution (scipy frozen distribution)

  • size (int) – the number of samples to generate

Returns:

with the paramertainty.name as key, and the sample as value

Return type:

dict

class ema_workbench.em_framework.samplers.MonteCarloSampler

generates a Monte Carlo sample for each of the parameters.

sample(distribution, size)

generate a Monte Carlo Sample.

Parameters:
  • distribution (scipy frozen distribution)

  • size (int) – the number of samples to generate

Returns:

with the paramertainty.name as key, and the sample as value

Return type:

dict

class ema_workbench.em_framework.samplers.UniformLHSSampler
generate_samples(parameters, size)
Parameters:
  • parameters (collection)

  • size (int)

Returns:

dict with the parameter.name as key, and the sample as value

Return type:

dict

ema_workbench.em_framework.samplers.determine_parameters(models, attribute, union=True)

determine the parameters over which to sample

Parameters:
  • models (a collection of AbstractModel instances)

  • attribute ({'uncertainties', 'levers'})

  • union (bool, optional) – in case of multiple models, sample over the union of levers, or over the intersection of the levers

Return type:

collection of Parameter instances

ema_workbench.em_framework.samplers.sample_levers(models, n_samples, union=True, sampler=<ema_workbench.em_framework.samplers.LHSSampler object>)

generate policies by sampling over the levers

Parameters:
  • models (a collection of AbstractModel instances)

  • n_samples (int)

  • union (bool, optional) – in case of multiple models, sample over the union of levers, or over the intersection of the levers

  • sampler (Sampler instance, optional)

Return type:

generator yielding Policy instances

ema_workbench.em_framework.samplers.sample_parameters(parameters, n_samples, sampler=<ema_workbench.em_framework.samplers.LHSSampler object>, kind=<class 'ema_workbench.em_framework.points.Point'>)

generate cases by sampling over the parameters

Parameters:
  • parameters (collection of AbstractParameter instances)

  • n_samples (int)

  • sampler (Sampler instance, optional)

  • kind ({Case, Scenario, Policy}, optional) – the class into which the samples are collected

Return type:

generator yielding Case, Scenario, or Policy instances

ema_workbench.em_framework.samplers.sample_uncertainties(models, n_samples, union=True, sampler=<ema_workbench.em_framework.samplers.LHSSampler object>)

generate scenarios by sampling over the uncertainties

Parameters:
  • models (a collection of AbstractModel instances)

  • n_samples (int)

  • union (bool, optional) – in case of multiple models, sample over the union of uncertainties, or over the intersection of the uncertainties

  • sampler (Sampler instance, optional)

Return type:

generator yielding Scenario instances