tag:blogger.com,1999:blog-8217294657304563413.comments2018-12-23T20:43:24.664-08:00OpaVote BlogJeff O'Neillnoreply@blogger.comBlogger72125tag:blogger.com,1999:blog-8217294657304563413.post-14070894102308805622018-12-23T20:43:24.664-08:002018-12-23T20:43:24.664-08:00That's a tough one, but I think the Borda coun...That's a tough one, but I think the Borda count is your best option.Jeff O'Neillhttps://www.blogger.com/profile/11828614939910702199noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-1959746490562198002018-12-23T20:36:08.087-08:002018-12-23T20:36:08.087-08:00How appropriate is this to VERY small elections, l...How appropriate is this to VERY small elections, like for example a board of 7 electing their officers?Jefferey Harthttps://www.blogger.com/profile/13968435356287053377noreply@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.comtag:blogger.com,1999:blog-8217294657304563413.post-65702323149090055582018-10-31T13:30:51.344-07:002018-10-31T13:30:51.344-07:00Suppose there are 3 candidates A, B, and C, for on...Suppose there are 3 candidates A, B, and C, for one position. 21 votes total.<br />10 votes are A B C<br />2 votes are B C A<br />3 votes are B A C<br />6 votes are C B A<br />The Baas calculator gives B the win with Hare quota and A the win without Hare quota. The calculator sets the Hare quota at 21; is that right? Who wins under Scottish STV? [I would use OPAvote to count, but I used up my 3 free counts.]Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-50766259917840868482018-10-05T11:50:53.577-07:002018-10-05T11:50:53.577-07:00Jeff, we don't have any plans to implement thi...Jeff, we don't have any plans to implement this method. Because there are so many methods out there, we limit OpaVote to methods that are in use by a government or otherwise used extensively.Jeff O'Neillhttps://www.blogger.com/profile/11828614939910702199noreply@blogger.comtag:blogger.com,1999:blog-8217294657304563413.post-10872902018430914982018-10-05T10:25:15.869-07:002018-10-05T10:25:15.869-07:00to Kevin Baas,
Is there a way to speed up the proc...to Kevin Baas,<br />Is there a way to speed up the process, such as entering a matrix rather than one vote at a time, or a "calculate now" button. 21 candidates is taking a long time just to enter because the program is recalculating between each entry. Jeff Stakehttps://www.blogger.com/profile/08560473952197625800noreply@blogger.com