Skip to content

Ensemble Object #1

Description

@daub1

When working on an application, I wanted a method to easily combine multiple sampling strategies, one idea was to have an Ensemble object which matches the API of the sampler objects, but has multiple samplers. Partial pseudo-code below:

class Ensemble:
    """
    Class for multiple samplers.
    """
    def __init__(self, sampler_data):
        if not isinstance(sampler_data, list):
            sampler_data = [sampler_data]
        self._samplers = [new_sampler(data) for data in sampler_data]
    def check_validity(self):
        for sampler in self._samplers:
            sampler.check_validity()
       # check that all samplers have the same parameter names, etc.
    def get_samples(self):
        samples = []
        for sampler in self._samplers:
            samples.extend(sampler.get_samples())
       return samples

Then you could specify multiple samplers via the yaml interface:

sampler:
    - type: list
      parameters:
          X1: [5, 10]
          X2: [5, 10]
   - type: cross_product
     parameters:
          X1: [15, 20, 30]
          X2: [15, 20, 30]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions