tag:blogger.com,1999:blog-8217294657304563413.post2485553461163966226..comments2019-09-14T03:15:47.307-07:00Comments on OpaVote Blog: Guest Post: Rethinking STV FundamentalsJeffhttp://www.blogger.com/profile/11828614939910702199noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-8217294657304563413.post-13370155437323486992019-08-23T14:07:31.551-07:002019-08-23T14:07:31.551-07:00Eureka!
So I decided to try the traditional elimi...Eureka!<br /><br />So I decided to try the traditional elimination algorithm, but instead of elimination the fewest first choices each round, eliminating the candidate with the lowest Borda Count (adjusting the max borda value for elected and dropped candidates, and using the re-weighted ballots). I've added the results to my spreadsheet, column E. ( https://docs.google.com/spreadsheets/d/18AN5xli49l39Fh5bRQerLPF0iT5AJpEjY6dvUzk-TUI/edit?usp=sharing ) It is very close to FEO, and completes in polynominal time (something like O(N^2), I think.)!<br /><br />So there's the solution to the issue of computing time when there are a lot of candidates.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-51644300284753036562019-08-23T12:18:53.633-07:002019-08-23T12:18:53.633-07:00Here's an idea:
1) for each candidate, find o...Here's an idea: <br />1) for each candidate, find out what other candidates would have to be eliminated for that candidate to make quota, with the fewest overall rank demotions. this could be about O(N^2) per candidate, so O(N^3) total for this step.<br />2) find the candidate(s) with the lowest number of such rank demotions to make quota. O(N)<br />3) if there is only one such candidate, that's the winner. if there is a tie, take the one with the most votes in their respective scenarios.<br /><br />If I'm thinkiing that through right it would be O(N^3) time, which is much better than O(N!), and would have similiar results to FEO. Someone would have to code it and test on the 43 scenarios i collected.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-11078854018001561262019-08-23T06:23:07.447-07:002019-08-23T06:23:07.447-07:00I'm curious what you mean by "my local co...I'm curious what you mean by "my local community". Elections for a municipality? The ballots can be entered into a computer by hand and then computer tallied. This would be more accurate and reliable than a hand tally. If people are concerned about transparency, one could provide the source code and the data (anonymized, of course), so that any one can reproduce the tally. I'm sure there are ways to have a faster elimination ordering that comes close to the accuracy of the FEO. I'm not sure your suggestion is the best approach, though. I'll have to give it some thought.<br /><br />One could use the traditional STV elimination (eliminate lowest total until someone meets quota), and then look at each dropped candidate and see if they would have won if they weren't dropped but all the others that were dropped were still dropped. e.g. if lowercase means dropped, when someone meets quota at A B C d e f, try A B C D e f, A B C d E f, and A B C d e F. then if D, E, or F win, that's the real winner. So it's basic STV elimination, with an added rollback test on each dropped candidate.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-86870595712156454612019-08-22T12:39:24.076-07:002019-08-22T12:39:24.076-07:00Mr. Baas, I've been very impressed with this r...Mr. Baas, I've been very impressed with this revision of the STV counting process and I'm hoping to get the shortcut version known and implemented in my local community. I don't see the full elimination ordering being sufficiently practical, unfortunately, especially if ballots are counted by hand. But I wonder if one could get any closer to the FEO result by eliminating the candidate who appears, at all rankings, on the fewest ballots, instead of the one with the fewest votes. semperavtistvssvmhttps://www.blogger.com/profile/05177019537536865744noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-29412705758702052522019-07-21T06:23:53.902-07:002019-07-21T06:23:53.902-07:00In the system I invented, which uses four averages...In the system I invented, which uses four averages or representative counts, the first average is of the Hare quota and the Droop quota, which I worked-out to be a Harmonic Mean quota (because these quotas are harmonic series): HMQ = votes/(seats + 1/2). <br />The FAB STV system does not eliminate candidates, permanently or temporarily, before the full schedule of the count is complete.<br />FAB STV extends the Meek STV use of keep values. But discards its quota reduction (also employed here). The FAB STV way is that all preferences are counted (maximum use of preference information) including abstentions, which makes quota reduction irrelevant. DemocracySciencehttps://www.blogger.com/profile/07658657506368612732noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-67474374846691244852018-12-19T13:07:43.337-08:002018-12-19T13:07:43.337-08:00The "full elimination ordering" has some...The "full elimination ordering" has something like 5 levels of tie-breaking. I ran a bunch of simulations to optimize the tie-breaking order. (Though really the first tie-breaking criteria is exponentially more important than the others.) The best first criteria I found was "fewest rank demotions". But yeah, failing an efficient way to do that, or some other deterministic criteria, random tie breaking would be the next best. Random tie breaking can be implemented without adding a checkbox, simply by randomly sorting the candidates _before_ tallying and determining winners. i.e. randomly assigning each candidate to "A,B,C,...", instead of a deterministic method such as alphabetical.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-16752696251858639212018-12-18T20:03:25.470-08:002018-12-18T20:03:25.470-08:00Speaking of ties, I tried a sample election and no...Speaking of ties, I tried a sample election and noticed that your algorithm eliminates tied candidates in the order they are listed, leaving the last of the tied candidates to be winners. I suppose that there is not much that can be done with ties, but it would seem that it would be better to eliminate randomly than to eliminate in ballot order (although your method does provide better information as to what is happening). Maybe a checkbox that says "eliminate ties randomly" would be helpful. Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-52438192711469452362018-12-18T11:20:43.027-08:002018-12-18T11:20:43.027-08:00This comment has been removed by the author.Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-65691700814836549282018-12-14T13:23:29.998-08:002018-12-14T13:23:29.998-08:00No. The +1 is unimportant. All it means is that ...No. The +1 is unimportant. All it means is that ties don't result in two winners, but must be broken somehow. It's the same as how in majority systems you need 50% plus one vote. So for instance if in the U.S. Senate, a vote is split exactly 50-50, the bill doesn't pass. But since the Hare quota uses up every vote exactly, you can't apply a [quota]+1 rule, since for the last seat you will have exactly [quota] ballots left. TLDR; the extra +1 on the quota really doesn't matter. We're talking on the order of 100,000 votes vs. 100,001 votes.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-60314708621345183442018-12-14T12:49:55.680-08:002018-12-14T12:49:55.680-08:00Rereading parts of your post, I noticed that you u...Rereading parts of your post, I noticed that you used votes/(seats+1) for the Droop quota. I thought that (votes/(seats+1))+1 was generally used for Droop. Does that reduce the Droop problems that you describe?Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-58746306342603686392018-12-05T10:06:03.803-08:002018-12-05T10:06:03.803-08:00I thought so, but just wanted to make sure. Many t...I thought so, but just wanted to make sure. Many thanks!Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-27844579179997718932018-12-04T13:16:06.330-08:002018-12-04T13:16:06.330-08:00Yes, it "eliminate[s] this problem by adding ...Yes, it "eliminate[s] this problem by adding back eliminated candidates each round". This is true for the "shortcut" (not full elimination ordering) version, too. The drawback of the "shortcut" version is that in some situations (like what you show above), it doesn't pick the number one best choice. The full elimination ordering does a comprehensive search, the shortcut version does not - which is precisely why it's so much faster. But yeah, in either case, temporarily dropped candidates are re-introduced each round. That's the big flaw in other STV systems that I realized needed fixing. The other changes were just icing on the cake.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-29289109397277970902018-12-04T10:10:51.742-08:002018-12-04T10:10:51.742-08:00To Kevin:
Thanks again.
I have another question. W...To Kevin:<br />Thanks again.<br />I have another question. With other STV systems, there is a potential problem if there are too many candidates and not enough voters. A person who many would like second best might be eliminated (this is described elsewhere on this website). Does your Baas system, especially the shortcut version you created, reduce or eliminate this problem by adding back eliminated candidates each round?Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-65343890423145149482018-11-03T13:54:32.642-07:002018-11-03T13:54:32.642-07:00I did check your new algorithm and it did compute ...I did check your new algorithm and it did compute way faster. So, thanks for doing that. You have provided a good start; I hope someone can finish it!<br /><br />Below is one example which shows that using the Hare quota can matter. With it, there is no change in result from a tactical change by one voter. Without it, the voter needs to be aware that voting her preference might lead to her least favorite candidate winning (under a full elimination system). <br /><br />one seat; 21 voters<br />10 orderings are A,B,C<br />2 orderings are B,C,A<br />3 orderings are B,A,C<br />6 orderings are C,B,A<br />hare quota, not full elimination=A<br />not hare quota, not full elimination=A<br />hare quota, full elimination=B<br />not hare quota, full elimination=A<br /><br />change one ordering from CBA to BCA<br />hare quota, not full elimination=A<br />not hare quota, not full elimination=A<br />hare quota, full elimination=B<br />not hare quota, full elimination=B<br />Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-89149447339529519562018-11-02T23:42:39.794-07:002018-11-02T23:42:39.794-07:00You're welcome. To be clear I'm pretty su...You're welcome. To be clear I'm pretty sure you have to do the "full elimination ordering" to completely prevent the issue that you described: voting a candidate higher can result in them not getting elected. The chance is reduced by adding dropped candidates back in, but it is not zero.<br /><br />IMO the greatest issue with my proposed method is that the time to compute winners is O(N!), but I think that<br />* even if you don't use full elimination ordering, the result is still better. Using only the other two changes still is an objectively better process than using none of the changes.<br />* using lemmas such as I described, it's possible to construct an algorithm that has all three rules, while still being computationally practical, even for elections with 50+ candidates.<br />It remains for that algorithm to be written. But I feel I've provided a good start.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-37874625807844304152018-11-02T16:54:53.532-07:002018-11-02T16:54:53.532-07:00Thanks! When I have a minute I'll check it out...Thanks! When I have a minute I'll check it out. In my case, 4 seats should be enough (although maybe we will have 50 candidates at some point). Thanks again!Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-12640365740671834042018-11-02T15:43:37.620-07:002018-11-02T15:43:37.620-07:00These are my notes from a few years ago on lemmas ...These are my notes from a few years ago on lemmas you could use to compute tge order of dropping candidates "as needed":<br /><br />where a,b represents total rank demotions caused by dropping candidates a and b<br /><br />(a,b) >= (a)<br />(a)+(b) >= (a,b)<br />3*({a}+{b}+{c}) >= {a,b,c} >= 1/3*({a}+{b}+{c})<br /><br />Also it has recently occurred to me that if one can prove that the candidate who would win a borda count is always a winner, no matter how many seats are chosen, then there exists an algorithm that finds all winners in o(n) time. (where n is number of candidates) but is suspect one can't prove that.<br />happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-21784276436577504422018-11-02T14:33:08.569-07:002018-11-02T14:33:08.569-07:00I've update the counter at http://autoredistri...I've update the counter at http://autoredistrict.org/ranked_choice_counter.zip <br />* I added a "find winners" button. It won't calculate until you press that. So now you can enter all the orderings without having to have it recalculate all the time.<br />* When you uncheck "full elinination ordering", it won't pre-compute all possible orderings.<br /><br />40 should now be manageable, if you first un-check "full elimination ordering".<br /><br />You can see the drawback of that by comparing column "I" on the spreadsheet with column "E". ( https://docs.google.com/spreadsheets/d/18AN5xli49l39Fh5bRQerLPF0iT5AJpEjY6dvUzk-TUI/edit#gid=0 )<br />And you can see the remaining advantages over standard STV by comparing "I" with "L".<br />* It still produces a more proportional result than standard STV.<br />* And protects against tactical voting better than standard STV.<br /><br />But yeah, having to pre-compute 40! orderings... that's a no-go. To make 40 practical, using full ordering, I'd have to change it so the orderings are computed as-needed. This would be much closer to 40 operations than 40! operations.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-22590483340921326752018-11-02T13:43:44.072-07:002018-11-02T13:43:44.072-07:00Well this motivates me to update it to handle big ...Well this motivates me to update it to handle big elections better. I'll shoot for 40 in an hour on a typical desktop. I think i can benefit from there being much fewer seats than candidates. how many seats?happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-9814698559239726052018-11-02T13:09:34.844-07:002018-11-02T13:09:34.844-07:00Yes, that is what I meant, one ordering at a time....Yes, that is what I meant, one ordering at a time. If your calculator would work for our 40 candidates, I'd propose it to our faculty for our committee election. But since 21 candidates takes days on my computer (and even that is too long), 40 would take forever. Bummer for me. But cool process that you've invented. Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-18736305973146969262018-11-02T13:01:08.482-07:002018-11-02T13:01:08.482-07:00Thank you for this response. I suspected as much. ...Thank you for this response. I suspected as much. I mistakenly posted my ballot example a couple of paragraphs below, instead of here. I think that example shows one benefit of your approach over STV. If Scottish STV is used, it is my understanding that the result in my election is that A wins. However, if just one voter switches from CBA to BCA, then B wins. That means a person opposed to A has to be careful not to rank C above B if C has less chance of winning. Using the Baas approach, however, B wins either way, freeing that voter to express her preference for C over B without worry that the effect is to elect A.Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-62652153665798408662018-10-31T16:25:11.888-07:002018-10-31T16:25:11.888-07:00Thinking this through more carefully, in other ATV...Thinking this through more carefully, in other ATV systems, ranking a candidate higher can result in elimination of that candidate because and _only_ because dropped candidates aren't re-introduces each round.<br /><br />Since my method _does_ reintroduce dropped candidates each round, my method _completely eliminates_ this problem.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-78845406449476246762018-10-31T14:54:12.685-07:002018-10-31T14:54:12.685-07:00Thinking through it analytically, I'm pretty s...Thinking through it analytically, I'm pretty sure that with my system, ranking a candidate higher CANNOT result in elimination of that candidate. And testing it empirically, I didn't encounter that failure in any of my tests: ( https://docs.google.com/spreadsheets/d/18AN5xli49l39Fh5bRQerLPF0iT5AJpEjY6dvUzk-TUI/edit#gid=0 ).<br /><br />If any one can find a scenario that fails the test, please post. But I don't think there is one.<br /><br />"Is there any way to know how often this problem might actually occur?" Two ways: 1) figure out the mathematical rules under which it occurs, and then compute from there, analytically. 2) simulate millions of elections and find the rate of occurence there. The second method would take less thought, and could be re-used for other problems.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-91086097277903694212018-10-31T14:48:20.848-07:002018-10-31T14:48:20.848-07:00Yes, the calculator sets the Hare quota at 21 in t...Yes, the calculator sets the Hare quota at 21 in that scenario. For Hare quota, the calculator just uses number of ballots divided by number of seats. So that's 21/1 = 21. By the way my argument is that Hare quota should be the quota used. You just need to make sure that you add back in dropped (but unused) ballots each round, and order all N! permutations, instead of just doing successive elimination.happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-14172868311115430412018-10-31T14:43:37.258-07:002018-10-31T14:43:37.258-07:00by "one vote at a time" i presume you me...by "one vote at a time" i presume you mean one _ordering_ at a time. you can add as many ballots at a time as you want, for a given ordering. because it does full ordering, the time it takes to calculate winners grows with how many possible orderings there are, which is the roughly the number of candidates, factorial. that's why it's taking so long: because there are 21 candidates. Intuitively there are some clever mathematical tricks to speed it this up, but I haven't implemented them. It comes with the full source code, so if you know Java and have an IDE, you can edit the code yourself to e.g. add a "recalculate" button, and not have it recalculate until you press that. in retrospect, that's the way i should have built the interface. it was built for the purpose of testing and demonstration; as a proof-of-concept. for now i'd say just use fewer candidates. or modify the source code. i might update the version available for download, later, esp. if i find a really clever mathematical shortcut. happyjack27https://www.blogger.com/profile/06322415607461417789noreply@blogger.com