pref_voting is a Python packaging that contains tools to reason about election profiles and margin graphs, and implementations of a variety of preferential voting methods.
Project description
pref_voting
Installation
With pip package manager:
pip install pref_voting
Documentation
Online documentation is available at https://pref_voting.readthedocs.io.
Profiles and Voting Methods
A profile (of linear orders over the candidates) is created by initializing a Profile class object. This needs a list of rankings (each ranking is a tuple of numbers), the number of candidates, and a list giving the number of each ranking in the profile:
from pref_voting.profiles import Profile
rankings = [(0, 1, 2, 3), (2, 3, 1, 0), (3, 1, 2, 0), (1, 2, 0, 3), (1, 3, 2, 0)]
rcounts = [5, 3, 2, 4, 3]
prof = Profile(rankings, rcounts=rcounts)
The function generate_profile is used to generate a profile for a given number of candidates and voters:
from pref_voting.generate_profiles import generate_profile
# generate a profile using the Impartial Culture probability model
prof = generate_profile(3, 4) # prof is a Profile object
# generate a profile using the Impartial Anonymous Culture probability model
prof = generate_profile(3, 4, probmod = "IAC") # prof is a Profile object
from pref_voting.profiles import Profile
from pref_voting.voting_methods import *
prof = Profile(rankings, num_cands, rcounts=rcounts)
print(f"{split_cycle.name} winners: {split_cycle(prof)}")
split_cycle.display(prof)
Versions
- v0.1.10 (2022-08-09): Initial release
- v0.1.13 (2022-11-05): Minor updates and bug fixes
- v0.1.14 (2022-12-19): Add plurality_scores to ProfileWithTies; add generate ceots function; bug fixes
- v0.1.23 (2022-12-27): Add instant_runoff_for_truncated_linear_orders and functions to truncate overvotes in a ProfileWithTies, add smith_irv_put, document analysis functions
- v0.1.25 (2023-1-11): Add condorcet_irv, condorcet_irv_put; Update documentation; add axioms.py; add display and equality to Ranking class; fix enumerate ceots functions
- v0.1.27 (2023-2-07): Add Borda for ProfileWithTies
Questions?
Feel free to send me an email if you have questions about the project.
License
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 Distribution
Built Distribution
Hashes for pref_voting-0.1.27-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29a2a08ba40ea7c2fdf817a69b3db45a668118b8faa5ec4e4b72fc6ded6e1e2a |
|
MD5 | 5b9de4c8475f34662ab28f46ecf0799e |
|
BLAKE2b-256 | 4f224019bb81bc16de21c16ff3b592cd5933344ace8eabc6a6ff18e44a8ee300 |