Bottom Two Runoff (Condorcet IRV hybrid)
-
I'm starting to really like this one, especially when considering how it might be sellable to the RCV/IRV contingent.
The idea is simple. It is just like regular IRV, except that, when eliminating candidates, you look at the last two (instead of just the last one) and eliminate the one that loses a pairwise comparison. Essentially, one tiny change makes IRV logic Condorcet complaint.
Since it is just a slight variation on IRV, I think we could get more of the RCV crowd on board. We can not only call it Ranked Choice, but we can call it Ranked Choice - IRV. While it chooses the Condorcet winner (if one exists), it does it via IRV-type logic.
Unlike IRV though, in almost every election, you can give results immediately with precinct sums (which would be pairwise matrix data, i.e. N*(N-1) discrete integer values). If there is a Condorcet winner (which is actually 100% of the time based on historical US RCV data), it just elects that candidate, so the precinct sums are good enough for the winner can be announced immediately.
While it may have more than one round (as many IRV elections do), the only reason we would need to wait for that step to announce the winner is in very the rare case of no Condorcet winner. So, while you can't claim that it is fully precinct summable, it is darn close in any practical sense.
I've seen it said by extremely prestigious people in the field that I trust that it is as resistant to strategy as any method.
And the FairVote people, as I have mentioned before, love their IRV and also acknowledge that Condorcet is good (with discussions of Condorcet mostly downplaying -- if not apologizing for -- the fact that Hare IRV doesn't always elect the Condorcet winner)
https://electowiki.org/wiki/Bottom-Two-Runoff_IRV
Below is proposed legislation for both Hare IRV and BTR-IRV, as posted here by @rb-j (Robert Bristow-Johnson). The latter is only slightly more complicated.
Here is Hare RCV (a.k.a. IRV):
All elections of [office] shall be by ballot, using a system of ranked-choice voting without a separate runoff election. The presiding election officer shall implement a ranked-choice voting protocol according to these guidelines:
(1) The ballot shall give voters the option of ranking candidates in order of preference. Lower ordinal preference shall be considered higher rank and the candidate marked as first preference is considered ranked highest. Equal ranking of candidates shall not be allowed. Any candidate not marked with a preference shall be considered as ranked lower than every candidate marked with a preference.
(2) If a candidate receives a majority (over 50 percent) of first preferences, that candidate is elected.
(3) If no candidate receives a majority of first preferences, an instant runoff retabulation shall be performed by the presiding election officer. The instant runoff retabulation shall be conducted in sequential rounds. A "continuing candidate" is defined as a candidate that has not been defeated in any previous round. Initially, no candidate is defeated and all candidates begin as continuing candidates.
(4) In each round, every ballot shall count as a single vote for whichever continuing candidate the voter has ranked highest. The candidate with fewest votes is defeated in the current round.
(5) The aforementioned instant runoff retabulation, eliminating one candidate each round, shall be repeated until only two candidates remain. The remaining candidate then receiving the greatest number of votes is elected.
(6) The [governing jurisdiction] may adopt additional regulations consistent with this subsection to implement these standards.
.
Here is Bottom-Two Runoff:
All elections of [office] shall be by ballot, using a system of ranked-choice voting without a separate runoff election. The presiding election officer shall implement a ranked-choice voting protocol according to these guidelines:
(1) The ballot shall give voters the option of ranking candidates in order of preference. Lower ordinal preference shall be considered higher rank and the candidate marked as first preference is considered ranked highest. Equal ranking of candidates shall not be allowed. Any candidate not marked with a preference shall be considered as ranked lower than every candidate marked with a preference.
(2) If a candidate receives a majority (over 50 percent) of first preferences, that candidate is elected.
(3) If no candidate receives a majority of first preferences, an instant runoff retabulation shall be performed by the presiding election officer. The instant runoff retabulation shall be conducted in sequential rounds. A "continuing candidate" is defined as a candidate that has not been defeated in any previous round. Initially, no candidate is defeated and all candidates begin as continuing candidates.
(4) In each round, every ballot shall count as a single vote for whichever continuing candidate the voter has ranked highest. The two candidates with the fewest votes in a round, herein denoted as "A" and "B", shall contend in a runoff in which the candidate, A or B, with lesser voter support shall be defeated in the current round. If the number of ballots ranking A higher than B exceeds the number of ballots ranking B higher than A, then B has lesser voter support, B is defeated, and A continues to the following round. Likewise, if the number of ballots ranking B higher than A exceeds the number of ballots ranking A higher than B, then A has lesser voter support, A is defeated, and B continues to the following round. In the case that the aforementioned measures of voter support of A and B are tied, then the candidate with fewest votes is defeated in the current round.
(5) The aforementioned instant runoff retabulation, eliminating one candidate each round, shall be repeated until only two candidates remain. The remaining candidate then receiving the greatest number of votes is elected.
(6) The [governing jurisdiction] may adopt additional regulations consistent with this subsection to implement these standards.
-
This is equivalent to the last of Llull's three writings on elections, but more specific about the order of the comparisons.
It's saying Condorcet, but the tiebreaker honors top choices above all else.
-
@jack-waugh It pretty easy to analyze how IRV and BTR work with a simple 3-candidate cycle that's like Rock-Paper-Scissors. Since this defeat line is circular we can assign whatever label to the candidate that has the most first-choice votes, say "Rock".
So it's Rock > Scissors > Paper > Rock ...
Now in the semifinal round, it's either
- Rock
- Paper
- Scissors
or it's
- Rock
- Scissors
- Paper
in the ranking of first-choice votes.
In the IRV case, Paper wins the first scenario and Rock wins the second. It's inconsistent.
In the BTR case, Scissors and Paper have a runoff, Paper loses and is eliminated, then Rock always beats Scissors in the final round.
For the 99.9999% of the cases (that either have a Condorcet winner or a simple Rock-Paper-Scissors cycle), the result with BTR is the same as using "straight-ahead" Condorcet and explicitly using plurality as the "completion method" for how to elect a candidate if there is no Condorcet winner. Then it really is a question of which has simpler language? BTR-IRV or simple Condorcet with an explicit completion method for the contingency that there is no Condorcet winner.
-
@rob said in Bottom Two Runoff (Condorcet IRV hybrid):
Unlike IRV though, in almost every election, you can give results immediately with precinct sums (which would be pairwise matrix data, i.e. (N*N-1)/2 discrete integer values).
Two little mistakes. First, you need to either add a pair of parenths or you need to move one. And you're off by a factor of 2.
N*(N-1)/2 is the number of pairings of N candidates. For each pair, there are 2 numbers.
So, it's N(N-1) summable tallies that each polling place needs to publish at the end of the election day after the last voter has voted. Now, for the explicit Condorcet-plurality method, you would also need N tallies of first-choice votes for each candidate (to determine the plurality winner). Then it becomes simply N(N-1)+N tallies, which is N^2 tallies for each precinct to print. For 6 candidates, that's about 5 inches of paper tape to publish all of the tallies necessary to be fully precinct summable. For 7 candidates, it would be about 7 inches. Easily photographed with a smart phone.
For Hare IRV to be precinct-summable, you would have 205 numbers to publish for 5 candidates. Maybe 4 feet of paper tape. 1236 numbers for 6 candidates. Maybe 15 feet of paper tape to post at the poll entranceway.
-
@rb-j said in Bottom Two Runoff (Condorcet IRV hybrid):
Two little mistakes. First, you need to either add a pair of parenths or you need to move one. And you're off by a factor of 2.
N*(N-1)/2 is the number of pairings of N candidates. For each pair, there are 2 numbers.Edited. Oops.
Just spent some hours last night writing a set of javascript classes that do pairwise matrices in a much more manageable way than stuff I've done before, so I shouldn't have made that mistake.
BTW, I'm planning on implementing BTR and straight-ahead Condorcet at the below Codepen as well as a few more. (along with pretty graphics). Do you know where I can find the the Burlington 2009 ballot data so I can test it on that?
(CodePen doesn't work great embedded here unfortunately, I kinda wish I could just post a link:)
https://codepen.io/karmatics/pen/poLPpzW -
@rob These algorithms are all almost trivial in Julia unfortunately I don't know much JS
-
@rob said in Bottom Two Runoff (Condorcet IRV hybrid):
I'm planning on implementing BTR and straight-ahead Condorcet at the below Codepen as well as a few more. (along with pretty graphics). Do you know where I can find the the Burlington 2009 ballot data so I can test it on that?
I can send you files, but I think you can get it from wayback:
https://web.archive.org/web/20090924005145/http://www.burlingtonvotes.org/20090303/
Specifically 2009 Burlington Mayor Final Piles Report.txt
and 2009 Burlington Mayor Detail Report.txt
I can send you my crappy MATLAB code that I used to parse the Final Piles text file.
-
@andy-dienes They are certainly pretty simple in Javascript, but I did spend some time trying to make clean classes that would be flexible for a lot of things, not just tabulation itself. I like things that run in a browser, especially if it can be done in a coding playground like Codepen. It makes it so much easier to share.
Perfect example is the giant clusterf**k that was the vote for the domain of this forum. It was only like 12 people voting and we had to wait weeks for someone to deliver us the STAR voting results, which were completely wrong and started a big ugly situation. Sad that a group like this has so much trouble with a simple vote.
The harder part is integrating them into things that can visualize results and whatnot. (the graphical and interactive stuff being more my wheelhouse) I mean that isn't really hard hard, but no one has really done it well in my opinion. Or if they've done something, they do it in something that requires a ton of setup and downloading repos and such and they you can't even make it work in a web page.
My nephew (name Julian, coincidentally) is hardcore into Julia and sings its praises a lot.
-
@rb-j said in Bottom Two Runoff (Condorcet IRV hybrid):
I can send you files, but I think you can get if from wayback:
Got it, perfect.... thanks!
For others interested, it is about 9000 lines that look like this (there's some extra fluff I removed):
C01,C03,C02
C01,C04
C01,C02,C04,C05,C03
C01,C02
C01,C02,C05,C04,C03
C01,C02
C01,C02
C01,C02,C04
C01,C02,C04,C05,C03
C01,C05,C04,C02
C01,C04,C02,C05
C01,C02,C04
C01,C02,C03,C04,C05
C01,C02,C04,C05,C03and where the candidates are defined as:
C01, "Bob Kiss"
C02, "Andy Montroll"
C03, "James Simpson"
C04, "Dan Smith"
C05, "Kurt Wright"
C06, "Write-in"I'll clean it up and have it in a codepen that others can play with. I think I can trim it down to about a tenth the size or less by combining duplicates, something like this:
bk: Bob Kiss
am: Andy Montroll
js: James Simpson
ds: Dan Smith
kw: Kurt Wright
x: (write in)345: bk>am>ds>kw
280: kw>bk>ds
120: ds>bketc
-
it is about 9000 lines that look like this (there's some extra fluff I removed):
If you want results to be consistent with the City Clerk's report, you need to use the Kiss pile, the Wright pile, and the Exhausted ballot pile but remove the first four ballots from the Exhausted ballot pile. Those were never counted. You want exactly the same 8976 ballots that the City Clerk counted to at least one of those six candidates (counting Combined Write-In as one of the six).
-
@andy-dienes said in Bottom Two Runoff (Condorcet IRV hybrid):
in Julia
Interesting, I hadn't made Julia's acquaintance. Once I finish my current project, I should probably be able to translate any working Julia code by hand into equivalent JS. It will help if it isn't using higher precision integers or floats than what can be represented in IEEE floating point. One of the readers of this forum said he is using the browser Waterfox Classic, which does not support JS' new long integers.
-
@rb-j said in Bottom Two Runoff (Condorcet IRV hybrid):
If you want results to be consistent with the City Clerk's report,
Cool thanks I'll do that.
@jack-waugh said in Bottom Two Runoff (Condorcet IRV hybrid):
It will help if it isn't using higher precision integers or floats than what can be represented in IEEE floating point
I can't imagine floating point precision making a difference unless you are doing something really weird. I prefer avoid all floating point math in tabulation methods, or at the least define them in ways that floating point math isn't necessary. (javascript uses floating point even for operations that could be pure integer, such as counting, but I can't remember where it has ever been a problem in anything I've done except when converting a number to a human readable string)
-
I have to say I am intrigued with the idea of marketing IRV Bottom-two Runoff. If it weren't for marketing concerns, I would want to perturb it further to make it balanced and pairwise additive, but that would throw away the possibility of getting IRV-Hare enthusiasts to accept it.
-
@jack-waugh said in Bottom Two Runoff (Condorcet IRV hybrid):
I have to say I am intrigued with the idea of marketing IRV Bottom-two Runoff.
Awesome. Maybe all the time I've spent on this forum in the past week hasn't been entirely wasted.
-
-
@rob, you said you think that whether equal ranking is permitted is an "implementation detail". But I wouldn't be surprised if RCV IRV Hare enthusiasts were to refuse to allow equal ranking. Anyway, they are refusing bottom-two runoff even without equal ranking, as the tweet I cite above argues against it and comes from whoever controls the Twitter account "fairvote".
-
@jack-waugh I'm saying that, if equal ranking is allowed, it doesn't make it a different method. It is just one variation of the same method. Note that the Electowiki page for IRV mentions the possibility of equal ranking, and here is a (very short) discussion of equal rank IRV: https://www.reddit.com/r/EndFPTP/comments/dgzf5k/what_are_the_shortcomings_of_equalrank_irv/
I'm not speaking of the practical issue of whether Fairvote or RCV IRV Hare enthusiasts will allow it, whether voting machines can deal with it, whether it is allowed under some specific legislation, etc. That's a different issue.
I imagine the best way to handle equal rankings would be to count fractional votes. (I will need to implement it so I can process cardinal ballots as IRV-Hare and IRV-BTR)
-
Untested, draft code for tallying RCV-IRV-B2R: tally.mjs
-
@rob said in Bottom Two Runoff (Condorcet IRV hybrid):
I will need to implement it so I can process cardinal ballots as IRV-Hare and IRV-BTR
naive_strict_ranking.mjs is an untested draft for converting affinities (same form as so-called "cardinal" ballots) into ranking ballots. The assumption underlying my design of the code is that equal-ranking is forbidden except for the sludge at the bottom.
-
This post is deleted!