A Python library of approval-based committee (ABC) rules
Project description
abcvoting
A Python library of approval-based committee (ABC) rules
Approval-based committee rules (ABC rules) are voting methods for selecting a committee, i.e., a fixed-size subset of candidates. ABC rules are also known as approval-based multi-winner rules. The input of such rules are approval ballots. We recommend the book (Multi-Winner Voting with Approval Preferences) by Lackner and Skowron [2] as a detailed introduction to ABC rules and related research directions. In addition, the survey by Faliszewski et al. [1] is useful as a more general introduction to committee voting (not limited to approval ballots).
The following ABC rules are implemented:
-
Approval Voting (AV)
-
Satisfaction Approval Voting (SAV)
-
Proportional Approval Voting (PAV)
-
Sequential Proportional Approval Voting (seq-PAV)
-
Reverse Sequential Proportional Approval Voting (revseq-PAV)
-
Approval Chamberlin-Courant (CC)
-
Phragmén's sequential rule
-
Monroe's rule
-
Minimax Approval Voting (MAV)
-
Greedy Monroe
-
Method of Equal Shares (Rule X)
-
Phragmén's First Method (Eneström's Method)
-
and many more ...
In addition, one can verify axiomatic properties such as
-
Justified Representation (JR)
-
Propotional Justified Representation (PJR)
-
Extended Justified Representation (EJR)
-
Priceability
-
The core property
Installation
As simple as:
pip install abcvoting
Further details can be found here.
Development
Install all dependencies including development requirements and the abcvoting package in development mode:
pip install -e .[dev]
Basic unit tests can be run by excluding tests which require additional dependencies:
pytest -m "not mipgurobi and not gmpy2 and not slow" tests/
For development, configure the black formatter and pre-commit hooks - see below. Also installing all optional dependencies is recommended.
A development package is build for every commit on the master branch and uploaded to the test instance of PyPI. It can be installed using the following command:
python3 -m pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple abcvoting
Black formatting
Code needs to be formatted using the black formatter. This is checked by Github actions. Configure your editor to run the black formatter.
Pre-commit hooks
Pre-commit hooks are not required, but they are recommended for development.
Pre-commit is used to manage and maintain pre-commit hooks. Install
pre-commit (e.g. via apt, conda or pip) and then run $ pre-commit install
to install the hooks.
References
[1] Piotr Faliszewski, Piotr Skowron, Arkadii Slinko, and Nimrod Talmon. Multiwinner voting: A new challenge for social choice theory. In Ulle Endriss, editor, Trends in Computational Social Choice, chapter 2, pages 27–47. AI Access, 2017. http://research.illc.uva.nl/COST-IC1205/BookDocs/Chapters/TrendsCOMSOC-02.pdf
[2] Lackner, Martin, and Piotr Skowron. "Multi-Winner Voting with Approval Preferences". arXiv preprint arXiv:2007.01795. 2020. https://arxiv.org/abs/2007.01795
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for abcvoting-2.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23835c3c26cdfd04cfd5633334bf6b420d19fbb48f1897682067b89100e4428c |
|
MD5 | 26c1eab9a721ee97fb3332510bd7f402 |
|
BLAKE2b-256 | ff4f9e2eb3b8de31ec25a68cfcd758c4def88355a2ff802f2bc1b2c95ba2e9d8 |