sample_outcomes
- negmas.outcomes.sample_outcomes(issues, n_outcomes=None, min_per_dim=5, expansion_policy=None)[source]
Discretizes the issue space and returns either a predefined number of outcomes or uniform samples.
- Parameters:
issues (
Sequence
[Issue
]) – The issues describing the issue space to be discretizedn_outcomes (
int
|None
) – If None then exactlymin_per_dim
bins will be used for every continuous dimension and all outcomesreturned (will be)
min_per_dim (
int
) – Max levels of discretization per dimensionexpansion_policy – None or ‘repeat’ or ‘null’ or ‘no’. If repeat, then some of the outcomes will be repeated
than (if None or 'no' then no expansion will happen if the total number of outcomes is less)
n_outcomes – If ‘null’ then expansion will be with None values
- Return type:
- Returns:
list of outcomes
Examples
enumberate the whole space
>>> from negmas.outcomes import make_issue >>> issues = [ ... make_issue(values=(0.0, 1.0), name="Price"), ... make_issue(values=["a", "b"], name="Name"), ... ] >>> sample_outcomes(issues=issues) [(0.0, 'a'), (0.0, 'b'), (0.25, 'a'), (0.25, 'b'), (0.5, 'a'), (0.5, 'b'), (0.75, 'a'), (0.75, 'b'), (1.0, 'a'), (1.0, 'b')]
enumerate with sampling for very large space (we have 10 outcomes in the discretized space)
>>> from negmas.outcomes import make_issue >>> issues = [ ... make_issue(values=(0.0, 1.0), name="Price"), ... make_issue(values=["a", "b"], name="Name"), ... ] >>> issues[0].is_continuous() True >>> sampled = sample_outcomes(issues=issues, n_outcomes=5) >>> len(sampled) 5 >>> len(set(sampled)) 5
>>> from negmas.outcomes import make_issue >>> issues = [ ... make_issue(values=(0, 1), name="Price"), ... make_issue(values=["a", "b"], name="Name"), ... ] >>> issues[0].is_continuous() False >>> sampled = sample_outcomes(issues=issues, n_outcomes=5) >>> len(sampled) 4 >>> len(set(sampled)) 4