This page allows you to instantly compute approvalbased committee voting rules online, including PAV (Proportional Approval Voting), Phragmén's methods, and the Method of Equal Shares. 27 voting rules are available. The computations are done locally in your browser. You can also generate random profiles. By clicking on a selected committee, you can check the axiomatic properties of the committee and the algorithm's steps for finding it. ✗
For more information, see How to Sample Approval Elections? Stanisław Szufa, Piotr Faliszewski, Łukasz Janeczko, Martin Lackner, Arkadii Slinko, Krzysztof Sornat, Nimrod Talmon. arXiv:2207.01140

p : float in [0, 1]  probability of approving a candidate

setsize : int  number of candidates to approve

radius : float  voters will approve candidates located within this radiusvoter_prob_distribution : str  probability distribution of the voter pointscandidate_prob_distribution : str  probability distribution of the voter pointsError: Voter and candidate distributions have different dimensions.

setsize : int  number of candidates to approvevoter_prob_distribution : str  probability distribution of the voter pointscandidate_prob_distribution : str  probability distribution of the voter pointsError: Voter and candidate distributions have different dimensions.

dispersion : float in [0, 1]  dispersion parameter of the Mallows modelsetsize : int  number of candidates that each voter approves

p : float in [0, 1]  If a new vote is generated, each candidate is approved with likelihood p.replace : float  New balls added to the urn in each iteration, relative to the original number. A value of 1.0 means that in the second iteration, there is a chance of 0.5 that the ballot of the first iteration is chosen and a chance of 0.5 that a new ballot is drawn from pIC.

setsize : int  number of candidates that each voter approvesreplace : float  New balls added to the urn in each iteration, relative to the original number. The urn starts with (num_cand choose setsize) balls, each representing a set of candidates with size setsize. This quantity is normalized to 1.0. The replace value is a float that indicates how many balls are added using this normalization. Specifically, replace * (num_cand choose setsize) are added in each iteration.

setsize : int  number of candidates that each voter approvesreplace : float  New balls added to the urn in each iteration, relative to the original number. The urn starts with num_cand factorial balls, each representing a ranking of candidates. This quantity is normalized to 1.0. The replace value is a float that indicates how many balls are added using this normalization. Specifically, replace * (num_cand factorial) are added in each iteration.

p : float in [0, 1]  Fraction of candidates that will be approved by the central ballot. Precisely, the central ballot will approve the first floor(p * num_cand) candidates.phi : float in [0, 1]  Probability to resample an approval. For each generated vote, we go through all candidates. For each candidate, we copy the approval of the central ballot with probability 1  phi. Otherwise, with probability phi, we resample the approval of the candidate (so that the generated vote approves that candidate with probability p).

num_groups : int  Corresponds to the parameter g in (p,phi,g)Disjoint Resampling. The model randomly partitions the candidates into num_groups groups. To generate a vote, the model first randomly selects a group. Then, it samples a vote from a (p,phi)resampling model, where the central ballot approves exactly all candidates in the selected group. (Thus, the parameter p is not used to obtain the central ballot, but is used in case of resampling.)phi : float in [0, 1]  Probability to resample an approval. For each generated vote, we go through all candidates. For each candidate, we use copy the approval of the central ballot with probability 1  phi. Otherwise, with probability `phi`, we resample the approval of the candidate (so that the generated vote approves that candidate with probability p).p : float in [0, 1] Probability of approving a candidate in case that the model resamples.

p : float in [0, 1]  Fraction of candidates that will be approved by the central ballot. Precisely, the central ballot will approve the first floor(p * num_cand) candidates.phi : float in [0, 1]  Probability to resample an approval. For each generated vote, we go through all candidates. For each candidate, we copy the approval of the central ballot with probability 1  phi. Otherwise, with probability phi, we resample the approval of the candidate (so that the generated vote approves that candidate with probability p).distance : string  Distance metric used to measure the distance between two rankings.
Preflib v1 .toi file:
abcvoting yaml:
 PAV compared to Phragménstyle rules (shown at startup) Peters and Skowron, 2020, "Proportionality and the Limits of Welfarism", Introduction
 Running example used by Lackner and Skowron (2023) Lackner and Skowron, 2023, "MultiWinner Voting with Approval Preferences", Springer, Example 2.1
 PAV fails core Aziz et al, 2016, "Justified Representation in ApprovalBased Committee Voting", Example 6
 SeqPAV fails JR (minimal example, k = 6, 108 voters) SánchezFernández et al, 2016, "Proportional Justified Representation", Table 2
 SeqPhragmén fails EJR Brill et al, 2021, "Phragmen's Voting Methods and Justified Representation", Example 6
 leximax and varphragmen fail EJR Brill et al, 2021, "Phragmen's Voting Methods and Justified Representation", Example 5
 RevSeqPAV fails JR Aziz, 2017, "A Note on Justified Representation Under the Reverse Sequential PAV rule", Proposition 2 for k = 5
 SeqPhragmén/seqPAV/Equal Shares fail Pareto optimality Lackner and Skowron, 2020, "Utilitarian welfare and representation guarantees of approvalbased multiwinner rules", Example 2
 matrix .txt
 preflib (.soi, .toi, .soc, .toc)
 .abc.yaml