Comments (13)
Hi,
Thanks for this report. I need a little time to get back to that logic.
I have worked on Dodgson method with relatively little documentation and example, and i write only one test (successful) found here: http://www.cs.wustl.edu/~legrand/rbvote/desc. html
I didn't know that documentation. I have just written 8 new tests from this document.
See commit e92756f
Among them: 3 failures. In total I have 6 of 9 successful tests. Which remains highly questionable.
I try to understand and correct it very quickly.
from condorcet.
Note that I followed the method described in this document: http://www.cs.wustl.edu/~legrand/rbvote/desc
And that it seems to be completely false in comparison with what can be found elsewhere.
from condorcet.
I think I would rather trust peer-reviewed sources than "work in progress": http://www.cs.wustl.edu/~legrand/rbvote/.
Isn't there a typo in testResult_6
test? Shouldn't row C>A>B<D*7
be C>A>B>D*7
?
from condorcet.
Yes, i fix this typo without consequences and add one more test from https://link.springer.com/article/10.1007/s003550000060
I'm currently working on a completely new implementation (not yet on Git). Strangely, the very firsts results show exactly the same fails tests than the previous implementation whereas the calculation method differ totally.
I keep hoping and try to work on it tonight. If you found detailed step-by-step examples, giving also good practice for specific cases (equality allowed in votes...) : i'm interested.
from condorcet.
Maybe https://link.springer.com/article/10.1007/s13218-016-0454-8 is worth of looking at.
from condorcet.
http://dss.in.tum.de/files/brandt-research/dodgson.pdf :
The method used in this document is curious. It does not work in terms of number of votes, but by grouping equals votes together.
100 people vote A>B>C = 1 swap
2 people vote C>B>A> = 1 swap
https://link.springer.com/article/10.1007/s003550000060 :
I have just re-implemented Dodgson using the method described here.
And which looks more like what can be deduced from the very short description of Wikipedia. And which is in contradiction with the way of doing the first document above.
Here it is said that 1 swap = 1 vote, which gives different results. Without being able to understand the mathematical proponents behind either approach, this way of doing it seems intuitively much more obvious to me.
I don't know who to believe anymore. But the only tests that fail are from the first document.
The others are perfect, both in the result and in detail.
from condorcet.
I found that : https://www.maa.org/sites/default/files/pdf/cmj_ftp/CMJ/September%202010/3%20Articles/6%2009-229%20Ratliff/Dodgson_CMJ_Final.pdf
I will try to working on soon.
from condorcet.
Dodgson Quick winner looks like a reasonable approximation of Dodgson winner.
If a breaking change is an option, I propose to remove Dodgson from the library&web and replace it with Dodgson Quick to communicate that it is not Dodgson but merely an approximation of Dodgson method.
from condorcet.
In fact, the current functioning actually corresponds to the Tideman's approximation.
I can chose effectively :
- Correcting it and add limit on number of candidate (like Kemeny-Young) and votes number.
- Use the Dodgson Quick winner
- Still using Tidemann's approximation
(in case 2 or 3 : change method name and update the doc)
from condorcet.
I try solution 2. Seem to be OK but not better for my example. It fail the same count of tests (6 fails/14) but not the same. But it is perfectly consistent with what was announced in the last documentation found.
https://travis-ci.org/julien-boudry/Condorcet/jobs/308188667
https://github.com/julien-boudry/Condorcet/blob/dev-1.3.x/Tests/lib/Algo/Methods/DodgsonTest.php
from condorcet.
Fixed in v1.3.4 -> https://github.com/julien-boudry/Condorcet/releases/tag/v1.3.4
Finally, I kept Tideman approximation but renamed it. And as Dodgson Quick as a different method. To be clear, "Dodgson" no longer answer to either of them anymore. This intentionally creates a small backward incompatible change.
I looking for upgrade www.condorcet.vote
from condorcet.
www.condorcet.vote has been updated. You just need to activate Dodgson Quick at creation time or election admin page.
Thanks for all.
from condorcet.
Thank you!
from condorcet.
Related Issues (20)
- Console: Check false or null php.ini memory_limit on large election HOT 1
- PHP Fatal error HOT 7
- Largest remainder methods: Half votes rounded down, party receiving less seats HOT 5
- Unserialize crash with new && empty election object
- Implement VoteFaire Ranking (Popularity)?
- [Public API Reform] Pairwise key 'null' to 'tie'
- [Public API Reform] Split $election->getResult methods, for filtering by tags
- [Public API Reform] Is it useful to edit candidate name with history. Should be immutable?
- [Public API Reform] Do a really independant Pairwise object HOT 5
- [Command Line] Error importing CondorcetFormat: Argument #1 ($callBack) must be of type Closure HOT 6
- $election->getResult() results in error when there are 0 votes HOT 3
- Investigate about removeVote feature and Pairwise integrity
- Allow either commas or semicolons in Condorcet Election Format HOT 11
- Different results when running different numbers of methods HOT 4
- Problem in Schulze_Proportional_Prefilter in Experimental/Schulze-STV branch HOT 5
- [Public API Reform] Remove static setters setMaxParseIteration / setMaxVoteNumber HOT 1
- Tests: parallel mod (paratest, pest --parallel) fail erratically and inconsistently (and worse with JIT) HOT 3
- [Experimental Schulze-STV Branch] Wrong test results from various methods with Explicit Ranking HOT 14
- New Method: Smith Set HOT 1
- New method: STAR Voting HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from condorcet.