class poisson_approval.IterableTauVectorGrid(denominator, ballots=None, d_ballot_fixed_share=None, standardized=False, test=None, **kwargs)[source]

Iterate over tau-vectors (TauVector) defined on a grid.

  • denominator (int or iterable) – The grain(s) of the grid.
  • ballots (iterable, optional) – These ballots (e.g. 'a', 'ab') will have a variable share. Default: all allowed ballots.
  • d_ballot_fixed_share (dict, optional) – A dictionary. For each entry ballot: fixed_share, this ballot will have at least this fixed share. The total must be lower or equal to 1.
  • standardized (bool, optional) – If True, then only standardized tau-vectors are given. Cf. TauVector.is_standardized(). You should probably use this option if the arguments ballots, d_ballot_fixed_share and test treat the candidates symmetrically.
  • test (callable, optional) – A function TauVector -> bool. Only tau-vector meeting this test are given.
  • kwargs – Additional parameters are passed to TauVector when creating the tau-vector.


Basic usage:

>>> for tau in IterableTauVectorGrid(denominator=2, standardized=True):
...     print(tau)
<a: 1> ==> a
<a: 1/2, ab: 1/2> ==> a
<a: 1/2, b: 1/2> ==> a, b
<a: 1/2, bc: 1/2> ==> a, b, c
<ab: 1> ==> a, b
<ab: 1/2, ac: 1/2> ==> a

If the voting rule is not approval, only the relevant ballots are used:

>>> for tau in IterableTauVectorGrid(denominator=3, standardized=True, voting_rule=PLURALITY):
...     print(tau)
<a: 1> ==> a (Plurality)
<a: 2/3, b: 1/3> ==> a (Plurality)
<a: 1/3, b: 1/3, c: 1/3> ==> a, b, c (Plurality)

For more examples, cf. IterableSimplexGrid.