Kemeny Young example problems
Hello, I am working on a project called VoteVote which attempts to simulate a single election across (now 27) different methods all at once. I am implementing Kemeny Young currently and have been having a lot of trouble finding example problems for writing tests to ensure my implementation is sound. I've looked at numerous published papers and only found one example so far. Of course I could do it by hand, but that is error prone and not a good way to write a lot of tests.
Does anyone have a good resource (or even their own personal examples) they can share? I'm particularly interested in Kemeny Young currently, but examples from any of the other 26 methods are also welcome
All 27 methods btw are:
- plurality: fptp, veto, signed, vfa
- contingent: contingency, supplementary, sri_lanka
- runoff: irv, coombs, fab_irv
- positional: borda, nauru, eurovision, dabagh, binary_positional
- evaluative: approval, disapproval, cav, score, range
- condorcet: copeland, lull, kemeny_young
- budgetary: cumulative, fractional, quadratic, equal_even
lemme know if you want me to explain any of these in more detail, but there's a short explanation for each on the website I linked.
In brief, how are you modeling the factions and their voting decisions?
I have thought in terms of a given faction having a Score-like attitude toward the candidates. But then a selection of algorithms could be available to choose from among for how a given faction will decide its votes. For example, they could exaggerate the score of their compromise candidate, if their true favorites are not popular with the other voters.
This is the first I heard of Kemeny-Young. It sounds impractical to tally without computers. I see that electowiki gives the usual "capital city of Tennessee" (my State of birth) example.
@jack-waugh Yes I have already turned that Tennessee into a test across multiple algorithms. I was looking for more examples. Perhaps a chapter in a textbook with exercises
In short, each voter voter's preference for each candidate is based on their distance in the RGB color space. Under the hood, each voter assigns each candidate a score from 0 to 100%.
We use these scores to derive all possible ballot types. Ordinal is easy to derive; for approval we say anything above 50%; for FPTP we take the highest scoring candidate, etc.
This is the first I heard of Kemeny-Young. It sounds impractical to tally without computers.
There are various ways to optimize the algorithm. And many shortcuts you can take. In practice you wouldn't actually have to fully calculate every single path's score.
For Condorcet, I would have thought Ranked Pairs and Schulze would be included. Maybe River too.
They are planned. Condorcet algorithms are complicated to implement. This is the second iteration of this project. The first one had some more, but the main goal with this is to cache parts of results for easy re-use. E.g. we shouldn't have to calculate the borda results 3 times for Borda, Black, and STAR. Same principle for pairwise matrices, etc. Instead if we cache that result we can reuse some of the calculations. So it'll take some time to implement a lot of the more complex Condorcet algorithms efficiently. The code repository has a more thorough run-down of the planned additional algorithms. It's open source so feel free to contribute or open an issue
But anyways, that's not really the point of my post. I'm just asking if someone knows of resources where I can find more test case examples instead of having to work them out by hand. Got any?
@culi I'm interested in this caching. Is it a programming pattern?