Installation

Using pip:

pip install abcvoting

Latest development version from source:

git clone https://github.com/martinlackner/abcvoting/
pip install .

Requirements:

  • Python 3.8+

  • The following pip packages are required and installed automatically: gurobipy, mip, networkx, numpy, ruamel.yaml, preflibtools, and prefsampling.

Optional requirements:

  • gmpy2: Some functions use fractions (e.g., compute_seqphragmen). These compute significantly faster if the module gmpy2 is available. If gmpy2 is not available, the much slower Python module fractions is used.

pip install gmpy2
  • ortools: Ortools can be used as an alternative solver for some ABC voting rules (Monroe, CC, Minimax AV). Advantage: open source, faster than CBC. Disadvantage: not as reliable as Gurobi (proprietary).

pip install ortools
  • Gurobi (gurobipy): Most computationally hard rules are also implemented via the ILP solver Gurobi. The corresponding functions require gurobipy. While gurobipy is installed by default (together with abcvoting), it requires a license to solve larger instances (academic licenses are available). If Gurobi is not available, the open-source solver CBC is a slower alternative (that is installed automatically as part of mip).

Developer tools (unit testing, etc):

pip install .[dev]