martinlackner / abcvoting

Python implementations of approval-based committee (multi-winner) voting rules
https://abcvoting.readthedocs.io/
MIT License
32 stars 16 forks source link

Add support for PAV via CVXPY #27

Closed lumbric closed 3 years ago

lumbric commented 3 years ago

This adds support for solving PAV using CVXPY. At the moment three opensource solvers are suppored (CBC, SCIP and GLPK) and also Gurobi is supported via the CVXPY interface. The PAV implementation is almost identical to the one in abcvoting_gurobi.py. Some polishing steps are still open: add better constants, add optional requirements to README.

There is also some minor refactoring and change of Github actions included in this PR.

codecov-io commented 3 years ago

Codecov Report

Merging #27 (e4b8a3a) into master (c076573) will increase coverage by 3.42%. The diff coverage is 88.04%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #27      +/-   ##
==========================================
+ Coverage   81.89%   85.32%   +3.42%     
==========================================
  Files          37       38       +1     
  Lines        2558     2624      +66     
==========================================
+ Hits         2095     2239     +144     
+ Misses        463      385      -78     
Impacted Files Coverage Δ
tests/test_survey.py 92.68% <ø> (+4.04%) :arrow_up:
abcvoting/abcrules_cvxpy.py 84.48% <84.48%> (ø)
abcvoting/abcrules.py 97.04% <90.00%> (-0.19%) :arrow_down:
tests/test_abcrules.py 97.89% <100.00%> (+0.74%) :arrow_up:
abcvoting/preferences.py 95.78% <0.00%> (+2.10%) :arrow_up:
survey/example05.py 100.00% <0.00%> (+100.00%) :arrow_up:
survey/propositionA4.py 100.00% <0.00%> (+100.00%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update c076573...e4b8a3a. Read the comment docs.