- class svvamp.GeneratorProfileSpheroid(n_v, n_c, stretching=1, sort_voters=False)[source]#
Profile generator using the ‘Spheroid’ model.
- Parameters:
Notes
The utility vector of each voter is drawn independently and uniformly on a sphere in \(\mathbb{R}^n_c\). Then, it is sent on the spheroid that is the image of the sphere by a dilatation of factor
stretching
in direction [1, …, 1]. Cf. Durand et al., ‘Geometry on the Utility Sphere’.The ordinal part of this distribution is the Impartial Culture.
The parameter
stretching
has an influence only on voting systems based on utilities, especially Approval voting.stretching = 0
: pure Von Neumann-Morgenstern utility, normalized to \(\sum_c u_v(c) = 0\) ( spherical model withn_c-2
dimensions).stretching = 1
: spherical model withn_c-1
dimensions.stretching = inf
: axial/cylindrical model with only two possible values, all-approval [1, …, 1] and all-reject [-1, …, -1].
N.B.: This model gives is equivalent to a Von Mises-Fisher model with concentration = 0.
Examples
Typical usage:
>>> generator = GeneratorProfileSpheroid(n_v=10, n_c=3, stretching=1) >>> profile = generator() >>> profile.preferences_rk.shape (10, 3)
With some stretching:
>>> generator = GeneratorProfileSpheroid(n_v=10, n_c=3, stretching=2) >>> profile = generator() >>> profile.preferences_rk.shape (10, 3)
>>> generator = GeneratorProfileSpheroid(n_v=10, n_c=3, stretching=.5) >>> profile = generator() >>> profile.preferences_rk.shape (10, 3)