Skip to content

SimultaneousVeto implementation#333

Merged
peterrrock2 merged 7 commits intomggg:3.4.0from
ross-i:simultaneous-veto
Mar 9, 2026
Merged

SimultaneousVeto implementation#333
peterrrock2 merged 7 commits intomggg:3.4.0from
ross-i:simultaneous-veto

Conversation

@ross-i
Copy link
Copy Markdown
Contributor

@ross-i ross-i commented Feb 27, 2026

Implemented the voting rule SimultaneousVeto as described in the 2023 paper "Generalized Veto Core and a Practical Voting Rule with Optimal Metric Distortion" (link: https://arxiv.org/abs/2305.19632).

SimultaneousVeto is an anonymous version of PluralityVeto - instead of querying the voters in a random order for their vetoes, all vetoes are processed simultaneously.

Each candidate begins with a score, then, all at the same time, voters remove score from their least favorite candidates at a constant rate. As candidates' scores reach zero, they are eliminated, and voters that were vetoing them transfer to their next least-favorite candidate. Initializing scores as the number of first-place votes (SimultaneousPluralityVeto) yields a voting rule that guarantees worst-case metric distortion of 3, which is the best a deterministic rule can do. However, this implementation of SimultaneousVeto also permits other methods of score initialization, which may have interesting properties.

NOTE: this PR also includes all the commits from the plurality-veto branch since I rebased simultaneous-veto onto plurality-veto.

@ross-i ross-i force-pushed the simultaneous-veto branch from 906b800 to a6a829d Compare March 3, 2026 04:34
Copy link
Copy Markdown
Collaborator

@peterrrock2 peterrrock2 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking great! If you would like to accept these suggestions, we can get you merged in!

Comment thread src/votekit/elections/election_types/ranking/simultaneous_veto.py
Comment thread src/votekit/elections/election_types/ranking/simultaneous_veto.py
ross-i and others added 2 commits March 7, 2026 12:12
Co-authored-by: Peter <27579114+peterrrock2@users.noreply.github.com>
Co-authored-by: Peter <27579114+peterrrock2@users.noreply.github.com>
@peterrrock2 peterrrock2 merged commit 93ca9b1 into mggg:3.4.0 Mar 9, 2026
3 checks passed
@peterrrock2 peterrrock2 mentioned this pull request Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants