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 ...
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.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c52485b8053a53c4ef05d461b56fd92f8ce43ed18f733f634b0ebdd4fb65ddba |
|
MD5 | 2aa7756f02678c0e3f6955b7613c6b0b |
|
BLAKE2b-256 | 00159ca2939e33b20833800e9f5c3af93ae6c7a7e9305c8419586fec80f2e972 |