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 [1] by Lackner and Skowron as a detailed introduction to ABC rules and related research directions. In addition, the survey by Faliszewski et al. [2] is useful as a more general introduction to committee voting (not limited to approval ballots).
The main ABC rules implemented in abcvoting are the following:
>>> for rule_id in abcrules.MAIN_RULE_IDS:
... print(f"{rule_id:40s}{abcrules.get_rule(rule_id).longname}")
av Approval Voting (AV)
sav Satisfaction Approval Voting (SAV)
pav Proportional Approval Voting (PAV)
slav Sainte-Laguë Approval Voting (SLAV)
cc Approval Chamberlin-Courant (CC)
lexcc Lexicographic Chamberlin-Courant (lex-CC)
geom2 2-Geometric Rule
seqpav Sequential Proportional Approval Voting (seq-PAV)
revseqpav Reverse Sequential Proportional Approval Voting (revseq-PAV)
seqslav Sequential Sainte-Laguë Approval Voting (seq-SLAV)
seqcc Sequential Approval Chamberlin-Courant (seq-CC)
seqphragmen Phragmén's Sequential Rule (seq-Phragmén)
minimaxphragmen Phragmén's Minimax Rule (minimax-Phragmén)
leximaxphragmen Phragmén's Leximax Rule (leximax-Phragmén)
maximin-support Maximin Support Method (MMS)
monroe Monroe's Approval Rule (Monroe)
greedy-monroe Greedy Monroe
minimaxav Minimax Approval Voting (MAV)
lexminimaxav Lexicographic Minimax Approval Voting (lex-MAV)
equal-shares Method of Equal Shares (aka Rule X) with Phragmén phase
equal-shares-with-av-completion Method of Equal Shares (aka Rule X) with AV completion
equal-shares-with-increment-completion Method of Equal Shares (aka Rule X) with increment completion
phragmen-enestroem Method of Phragmén-Eneström
consensus-rule Consensus Rule
trivial Trivial Rule
rsd Random Serial Dictator
eph E Pluribus Hugo (EPH)
The short identifiers on the left side are the respective rule_id’s.
In addition to these rules, there are Thiele methods, Sequential Thiele methods, and Reverse Sequential Thiele methods. These are classes of ABC rules and are parameterized by arbitary scoring functions (explained in detail here [1]). For example, the 3-Geomtric Thiele method (with rule_id being “geom3”) as well as Sequential 3-Geometric (rule_id=”seqgeom3”) and Reverse Sequential 3-Geometric (rule_id=”revseqgeom3”) are implemented but not specifically listed above.
>>> for rule_id in ["geom3", "seqgeom3", "revseqgeom3"]:
... print(f"{rule_id:20s}{abcrules.get_rule(rule_id).longname}")
geom3 3-Geometric Rule
seqgeom3 Sequential 3-Geometric Rule
revseqgeom3 Reverse Sequential 3-Geometric Rule