This page allows you to instantly compute approval-based 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. Code is based on the prefsampling package.
-
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 candidate 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 candidate 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 p-IC.
-
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. Note: num_groups * p should be at most 1.
-
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 .cat file:
abcvoting yaml:
You are attempting to turn off weights. However, some voters currently have a weight different from 1. How do you want to proceed?
- PAV compared to Phragmén-style 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, "Multi-Winner Voting with Approval Preferences", Springer, Example 2.1
- PAV fails core Aziz et al, 2016, "Justified Representation in Approval-Based Committee Voting", Example 6
- Seq-PAV fails JR (minimal example, k = 6, 108 voters) Sánchez-Fernández et al, 2016, "Proportional Justified Representation", Table 2
- Seq-Phragmén fails EJR Brill et al, 2021, "Phragmen's Voting Methods and Justified Representation", Example 6
- leximax- and var-phragmen fail EJR Brill et al, 2021, "Phragmen's Voting Methods and Justified Representation", Example 5
- Rev-Seq-PAV fails JR Aziz, 2017, "A Note on Justified Representation Under the Reverse Sequential PAV rule", Proposition 2 for k = 5
- Seq-Phragmén/seq-PAV/Equal Shares fail Pareto optimality Lackner and Skowron, 2020, "Utilitarian welfare and representation guarantees of approval-based multiwinner rules", Example 2
- matrix .txt
- preflib (.soi, .toi, .soc, .toc)
- .abc.yaml