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 project

setsize : int  number of projects to approve

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

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

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

p : float in [0, 1]  If a new vote is generated, each project 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 projects 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 projects 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 projects 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 projects. 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 projects that will be approved by the central ballot. Precisely, the central ballot will approve the first floor(p * num_cand) projects.phi : float in [0, 1]  Probability to resample an approval. For each generated vote, we go through all projects. For each project, we copy the approval of the central ballot with probability 1  phi. Otherwise, with probability phi, we resample the approval of the project (so that the generated vote approves that project with probability p).

num_groups : int  Corresponds to the parameter g in (p,phi,g)Disjoint Resampling. The model randomly partitions the projects 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 projects 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 projects. For each project, we use copy the approval of the central ballot with probability 1  phi. Otherwise, with probability `phi`, we resample the approval of the project (so that the generated vote approves that project with probability p).p : float in [0, 1] Probability of approving a project in case that the model resamples.

p : float in [0, 1]  Fraction of projects that will be approved by the central ballot. Precisely, the central ballot will approve the first floor(p * num_cand) projects.phi : float in [0, 1]  Probability to resample an approval. For each generated vote, we go through all projects. For each project, we copy the approval of the central ballot with probability 1  phi. Otherwise, with probability phi, we resample the approval of the project (so that the generated vote approves that project with probability p).distance : string  Distance metric used to measure the distance between two rankings.
Pabulib .pb file:
 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
 0/1 matrix .txt
 pabulib .pb