Single Winner Voting Methods Visualized

Like my Apportiomment Methods Visualized post, each of the fallowing diagrams represent who would win under different combinations of three groups of voters:

Candidate A Candidate B Candidate C
Group 1 10/10 0/10 3/10
Group 2 7/10 10/10 0/10
Group 3 0/10 5/10 10/10

The fallowing ternary plots show which candidate will win when the 3 different groups make up different portions of the electorate. The group in the top left is group 1, the group in the top right is group 2, and the bottom group is group 3.


Bucklin Voting:

Borda Count:

FPTP, Minimax, Schulze, Ranked Pairs, and Coombs Method (they all produce the same results when the only 3 types of votes form a cycle):

Approval Voting (where group 3 can’t make up their mind between approving C and disapproving C so half approve C and half disapprove C):

Score Voting:

Approval Runoff Voting (what’s being proposed in St. Louis):

STAR Voting (on a 0 to 10 scale instead of 0 to 5):

In the future, I will create plots of some multi-winner methods as well using the same three groups of voters.


I hoped that Coombs method as well as the Condorcet methods that reduce to minimax when there are only 3 candidates would of produced more interesting results. It was only when coding those methods up that I realized that they were equivalent to FPTP when there are only three candidates and the only three types of votes form a cycle.

Things should get a lot more interesting when I add multi-winner methods to this so stay tuned.

One thing worth pointing out is that the methods with runoffs produce results in which each group’s preferred candidate wins more on the side of that groups corner in which that candidate preforms worse then in score voting. One of the reasons for this is perhaps that these methods tend to eliminate the only candidate that the best candidate would beat in the cycle, causing them to loose the runoff.

Also, passing the consistency criterion (which in single winner elections this criterion is mathematically equivalent to the participation criterion) requires all the borders between different election results have to be perfectly straight and have no turns. This is because in the places where they are not straight you can find two points that are on one color where the point halfway between them (which represents the electorates of the two previous points combined) is a different color.

Coombs, Minimax, Schulze, and Ranked Pairs all fail this criterion, however apparently none of those failures occur when you only have three types of votes that form a three way cycle.

I think the most important takeaways of this are:

  1. IRV is weird, and Bucklin is… weird in a mirror image way?
  2. All ordinal methods, and Approval, fundamentally distort the electorate’s preferences irrecoverably. (Changing the numbers on A2, B3, and C1 to anything between 1 and 9 do not affect ordinal methods at all, while Approval only has 8 possible diagrams instead of a continuum like Score.)
1 Like

Try simulating some voters who weakly prefer A>B as voting A=B.

1 Like

Right now, the combinations of votes are hard coded into the methods (for each of the methods, you plug in an array of three doubles, which contain the percentage each group makes of the population and the methods are hard coded to assume each group votes the way it does). I hard coded it this way so I can pump out the different voting methods (especially the multi-winner one’s I’m working on) faster. In the future when I have more time, I’m going to fix this in the so you can plug in Votes classes into each of the methods that have the full voting information and fix the voting methods so their not hard-coded to those specific votes.

Can you plot an example of what a sample of voters looks like in this simulation?

Size of each group where each group is represented by the color of their first preference:

Total utility of the electorate for each candidate:

1 Like

Sorry but what? I fail to see how utility becomes a color.

The R G and B values for each pixel are equal to the average utility of the electorate for A, B, and C. Pixels in places where the electorate has a higher utility for A (which is depicted as red in the diagrams) are more red, pixels in places where the electorate has a higher average utility for B are more green, and pixels in places where the electorate has a higher average utility for C are more blue.

I invented a method (Distributed Voting - DV) and I would like to ask you if you could make a graphical representation of it.
Distributed Voting: each voter has 100 points to distribute among the candidates according to his preferences.
The result is calculated as follows:
( eg of a vote: A[1], B[3], C[6], D[90] )

  • Adding the points for each candidate we obtain the result in which D is the worst, then we eliminate it by redistributing its points proportionally to the interests expressed in each single vote.
    ( the previous vote becomes: A[10], B[30], C[60] )
    This procedure is repeated, eliminating the worst in each cycle, until only one candidate remains.

The groups you indicated would become like this:
G1: A[77], B[0], C[23]
G2: A[41], B[59], C[0]
G3: A[0], B[33], C[67]
Considering the group G1, if C is eliminated, the vote becomes:
G1: A[100], B[0]
If I eliminate B it becomes:
G1: A[77], C[23]
If I eliminate A it becomes:
G1: B[0], C[100]

I made an approximate version by hand (Distributed Voting):

This Distributed Voting idea makes me think - what if Nanson or Baldwin’s method could be adopted for Condorcet PR?

Nanson or Baldwin’s method has some non-trivial limitations compared to DV:

  • to ensure that the votes have the same weight, oblige to vote a fixed number of candidates. This is a problem because those who want to classify more candidates cannot, and those who want to classify less, will be pushed to classify more in a semi-random way (that is, they will classify candidates who have been heard by friends or relatives who, however, they don’t really know).
  • Borda methods use rankings in which candidates have the same distance from each other; this representation of interests is much more ambiguous than that of the DV.
    Eg: A[60], B[30], C[10] and A[90], B[7], C[3] in the Borda would both have the same shape, that is A[1st], B[2nd], C[3rd] .

However Borda, with the obligation to classify a certain number of voters, is the best after the DV, to find only 1 winner.

Perhaps every voter could have their weight readjusted to be equal in Borda-based methods i.e. if one voter votes for 2 candidates and someone else votes for 1, then the first voter only puts 0.333 points between each rank (0.666>0.333) and the second voter 1 full point (1.0).

Edit: I suppose accordance with the Borda principle would require equal distribution of points i.e. voting for 5 candidates, each one gets 1/5 = 0.2 points.

Actually, Borda requires the top-ranked candidate to get more points than any other, then the 2nd-ranked more than lower-ranked candidates, etc. so probably the easiest way to do it is to figure out what an MBC would give and then divide that to fit within 1 vote i.e. if a voter voted A>B>C>D>E, in normal Borda this would be something like A 5 B 4 C 3 D 2 E 1, and then adding up all the points that’s 15 points, so instead we divide it such that the new points total is A 5/15 = 0.333, B 4/15 = 0.2666 points, etc.

With this adjustment of points it becomes like the DV, but in which the 100 points are divided as the Borda obliges you; I prefer to divide them as I like.
In the “Adjusted Borda” therefore only the ambiguity of the vote remains as a problem.

Is your system the same thing as cumulative voting?

In my method (DV) there are 100 points to distribute so it belongs to the category of cumulative votes but unlike the other types of comulative voting:

  • the number of points is fixed (it doesn’t depend on the numbers of seats to be distributed).
  • the procedure for calculating the result, eliminates the worst at every step and redistributes the points of the candidate eliminated in each single vote. The vote is therefore always worth 100 points (excluding special cases in which it makes sense to make it null).
  • the number of points is high to ensure a better representation of interests, and a reduction of tactical marks.
    Eg, an honest vote like this:
    A[60], B[30], C[10], D[0]
    can be tactically converted like this:
    A[96], B[3], C[1], D[0]
    If in both the votes I eliminate A and redistribute the points, I get:
    B[75], C[25], D[0]
    therefore the tactical vote becomes equal to the honest one.
    If instead the points had been 5 (few), a voter would have used them tactically like this:
    A[5], B[0], C[0], D[0]
    and eliminating A, the vote inevitably becomes null or irrelevant, even if in the real interests there were still B and C to consider.

I suspect that this system will have similar problems to IRV. In a 3 person race, when ballots are cast in the form (First choice: 99, Second choice: 1, Third choice: 0), they behave almost identically.

For example, the problem of nonmonotonicity:
33: A99 B1 C0
30: A1 B99 C0
37: A0 B1 C99
B is eliminated first, and A beats C by 6300 - 3700.

If 8 voters in the 3rd group instead vote as the members of the 1st group would, then they strictly raise A on their ballots: rather than give 99 points to C, they are now giving 99 points to A. Now we have ballots:
41: A99 B1 C0
30: A1 B99 C0
29: A0 B1 C99
This time C is eliminated, and now A loses to B 5911 - 4089.

However, it is easier for a strategic voter to take advantage of this problem in Distributed Voting than in IRV, since a distributed voter can boost a candidate whom they think will be a weak opponent in the runoff while still providing the bulk of their support to their first choice. For example, in the second example, the 33 original A voters could vote A90 B0 C10 to ensure C makes the runoff vs A, so that A can win. In IRV, the only way to pull this sort of strategy off is for a portion of the 33 to vote C>A>B rather than A>B>C.