class poisson_approval.IterableProfileOrdinalGrid(denominator, orders=None, d_order_fixed_share=None, standardized=False, test=None, **kwargs)[source]

Iterate over ordinal profiles (ProfileOrdinal) defined on a grid.

  • denominator (int or iterable) – The grain(s) of the grid.
  • orders (iterable, optional) – These orders will have a variable share. They can be rankings, e.g. 'abc', or weak orders, e.g. 'a~b>c'. Default: all rankings.
  • d_order_fixed_share (dict, optional) – A dictionary. For each entry order: fixed_share, this order will have at least this fixed share. The total must be lower or equal to 1.
  • standardized (bool, optional) – If True, then only standardized profiles are given. Cf. Profile.is_standardized(). You should probably use this option if the arguments orders, d_order_fixed_share and test treat the candidates symmetrically.
  • test (callable, optional) – A function ProfileOrdinal -> bool. Only profiles meeting this test are given.
  • kwargs – Additional parameters are passed to ProfileOrdinal when creating the profile.


Basic usage:

>>> for profile in IterableProfileOrdinalGrid(denominator=3, standardized=True):
...     print(profile)
<abc: 1> (Condorcet winner: a)
<abc: 2/3, acb: 1/3> (Condorcet winner: a)
<abc: 2/3, bac: 1/3> (Condorcet winner: a)
<abc: 2/3, bca: 1/3> (Condorcet winner: a)
<abc: 2/3, cab: 1/3> (Condorcet winner: a)
<abc: 2/3, cba: 1/3> (Condorcet winner: a)
<abc: 1/3, acb: 1/3, bac: 1/3> (Condorcet winner: a)
<abc: 1/3, acb: 1/3, bca: 1/3> (Condorcet winner: a)
<abc: 1/3, bac: 1/3, cab: 1/3> (Condorcet winner: a)
<abc: 1/3, bca: 1/3, cab: 1/3>

For more examples, cf. IterableSimplexGrid.