andrewcmyers / civs

Condorcet Internet Voting System
http://civs1.civs.us
MIT License
83 stars 27 forks source link

Add STAR Voting method #37

Open masiarek opened 3 years ago

masiarek commented 3 years ago

https://civs.cs.cornell.edu/rp.html CIVS currently supports five rules for Condorcet completion: Minimax-PM (the default rule), Schulze (also known as Beatpath Winner or Cloneproof Schwartz Sequential Dropping), Maximize Affirmed Majorities (MAM), a deterministic variant of MAM called CIVS Ranked Pairs, and a runoff-based Condorcet algorithm called Condorcet-IRV.

I can help with this... programming, or at least - I can help with testing, expected results, load files, etc. or, whatever you may need for me to help with this, prepare documentation (technical, end user).

andrewcmyers commented 3 years ago

Sure, this seems like a fine idea. Tabulation algorithms are pretty modular; minimax.pm is a good model to follow. We would also want a description of it on the web pages.

jaycincotta commented 3 years ago

Hi Andrew! In addition to adding another tabulation algorithm, the vote input UI would also need to be expanded to allow cardinal voting systems. STAR uses a 0 to 5 scale.

I note that CIVS allows ties, so you could kinda submit a STAR ballot with the current UI by ranking candidates 1st through 5th with ties. But, that would be tedious and confusing from the pov of voters accustomed to rating candidates versus ranking them.

Would you consider a more general enhancement to CIVS enabling support for cardinal voting systems such as STAR?

andrewcmyers commented 3 years ago

I would start by implementing the algorithm on top of the current UI and then think about UI support. Everything above rank 6 can be treated as a score of 5. Proportional mode with weights already has a "cardinal" interface, so it should be easy to support the UI changes.

jaycincotta commented 3 years ago

fyi, STAR tabulation would be a little different than you describe, but I get the idea. A score of 5 translates to a ranking of 1st and any ranking above 5 would be treated as a score of zero.

As to a starting point for the STAR tabulator, I believe your suggestion above is to use minimax.pm as a model? Is rank_candidates the only public method to implement?

andrewcmyers commented 3 years ago

You also need to implement print_details

masiarek commented 2 years ago

We are working on Functional Specification document for STAR Voting: https://docs.google.com/document/d/1x9lwhHUYAGa1JVrKuqQ1WKHYoXUEtvySH8KC3YY1ARY/edit

One of the open questions is what kind of Ballot Upload file format should we use: https://docs.google.com/document/d/1dK8sWezZxy-Ax7UXJStNy2gFk0ONVwVvi3VzqHmNbc4/edit#heading=h.qz3rx1wlrgik

Please feel free to leave some comments, questions, suggestions.