Roll up your sleeves, leave your ego at the door...
Forum rules
Speak your mind. Try to be courteous to others.
Don't be too shy to say what you think.
Don't be too proud to say you were wrong.

Abstract, General, Voting Discussions, Examples, and Tools

Postby Bob Kuczewski » Mon Jan 06, 2014 12:59 pm

The topic of voting has been very important in the history of the US Hawks because we're trying to build an organization that represents pilots rather than an elite group of "insiders". In fact, foolish voting decisions by both USHPA and the now-defunct HGAA were major contributing factors in the formation of the US Hawks.

But voting can also be a complex and very touchy subject. It's near and dear to many people's hearts, and yet many people don't really understand the complexity and pitfalls of trying to make group decisions through any kind of voting process. So this topic is being created for the explicit purpose of examining different voting systems along with their benefits and failures. This is meant to be a somewhat "academic" topic, so it probably won't appeal to everyone. But for those who want to dig into this topic, I hope it will be an enjoyable journey.

Thanks, and I look forward to an open and courteous discussion.      :D
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussion

Postby Bob Kuczewski » Mon Jan 06, 2014 12:59 pm

To support this discussion, here's a slightly modified version of my 2010 voting program (part of the voting work I was doing for both USHPA and the HGAA that year). It mostly ran as a stand-alone program, but I've adapted it for this forum. Right now it only implements the "Condorcet" voting method, but I can possibly add other methods as time goes on.

It's pretty simple. The top window is the list of votes (line by line) and the bottom is the results. Each line represents a single "ballot" cast by a single voter. The choices are typically letters, and you just list them in the order that they're preferred on each ballot. The favorite choice is listed first and the least favorite is listed last. Any choices that are considered equal can be separated by an equals sign (=). When you press the "Run Voting Test" button, it compares every candidate to every other candidate in a series of exhaustive "one on one" runoffs. It then tells you (in the bottom window) if there is any candidate that defeats all other candidates. It also gives you a complete description of how each candidate would do in each pairwise "runoff". The program comes up with a default election (series of votes), but you can change the votes any way you like and then press "Run Voting Test" to see the results. This is the kind of tool we can use for experiments and to show each other examples of things that we like or don't like in a voting system. Please give it a try.


Voting019_Applet.png
Voting019_Applet.png (28.53 KiB) Viewed 6652 times


For example, if you want to see a "rock paper scissors" kind of tie, try out these ballots:

    rock scissors paper
    paper rock scissors
    scissors paper rock


You can also paste them as just letters (which reduces the amount of horizontal scrolling needed to see the results):

    R S P
    P R S
    S P R


Just copy them and paste them into the top window (be sure to delete any other votes already in the top window) and press the "Run Voting Test" button. You may remember this as a circular example because rock breaks scissors, paper covers rock, and scissors cut paper. It's the classic three-way tie that arises from a group decision even though each member of the group has their own clearly defined preferences.

Have fun!!

Moderator's Note - October 11, 2022: Over time, the "Java" plug-in has fallen out of favor with many web browsers, and the Java applet which appears in this post may not be visible in many modern browsers. For this reason, an image was added which shows what the applet might have looked like in the original post. For those who do have Java installed and enabled, the original applet should still be functional along with the newly added image. Additionally, the original "Voting019.jar" file has been added as an attachment to this post. This attachment can be downloaded and run from the command line with a command similar to "java -jar Voting019.jar" (without the quotes).


Moderator's Note - October 5, 2024: As mentioned in the previous note, "Java" support in web browsers is declining. Javascript is now the more popular method of embedding computer programs in web pages. In response to this, I've rewritten the previous voting application in Javascript, and it's now available here:

                https://ushawks.org/voting/Voting.html

The Java version (included directly below) still works, and most of the examples in this topic will work in either version.


 
Attachments
Voting019.jar
(43.27 KiB) Downloaded 230 times
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Tue Oct 11, 2022 4:44 pm

Java Voting Program Version 19

As mentioned in the moderator's note above, many modern browsers no longer support embedded Java programs directly. However, Java can be enabled via some plug in applications, and it can also be installed and run from the command line. In this post, I've inserted the code for the Java "Voting" program (version 019) between the lines here:

==============================================================================

==============================================================================

If you have Java enabled, then you should see a screen that looks something like this between those lines:

Voting019_Applet.png
Voting019_Applet.png (28.53 KiB) Viewed 6647 times


If you don't have Java enabled, then you will just see two rows of equals signs. However, you can still download the voting program (attached as "voting_019.jar" below) and run it if you have Java installed on your computer.

Moderator's Note - October 5, 2024: As mentioned earlier, "Java" support in web browsers is declining. Javascript is now the more popular method of embedding computer programs in web pages. In response to this, I've rewritten the Java voting application in Javascript, and it's now available here:

                https://ushawks.org/voting/Voting.html
 
 
Attachments
Voting019.jar
(43.27 KiB) Downloaded 221 times
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Tue Oct 11, 2022 5:19 pm

Marquis de Condorcet

I was recently reading a Wikipedia article on determinism, and that led me to a page on Marquis de Condorcet. For anyone who may remember the HGAA voting discussion, I was a fan of the Condorcet system of voting. But I didn't know much about the Marquis de Condorcet himself. The Wikipedia link above provides a full discussion, but I only want to quote the section regarding his role in the French Revolution leading to his arrest and death. Here's that section:

Wikipedia wrote:
Condorcet took a leading role when the French Revolution swept France in 1789, hoping for a rationalist reconstruction of society, and championed many liberal causes. As a result, in 1791 he was elected as a Paris representative in the Legislative Assembly, and then became the secretary of the Assembly.

Condorcet was not affiliated with any political party but counted many friends among the Girondins. He distanced himself from them during the National Convention, however, due to his distaste for their factionalism.

In April 1792 Condorcet presented a project for the reformation of the education system, aiming to create a hierarchical system, under the authority of experts, who would work as the guardians of the Enlightenment and who, independent of power, would be the guarantors of public liberties. The project was judged to be contrary to republican and egalitarian virtues, handing the education of the Nation over to an aristocracy of savants, and Condorcet's proposal was not taken up by the Assembly. Several years later, in 1795, when the Thermidorians had gained in strength, the National Convention would adopt an educational plan based on Condorcet's proposal.

He advocated women's suffrage for the new government, writing an article for Journal de la Société de 1789, and by publishing De l'admission des femmes au droit de cité ("For the Admission to the Rights of Citizenship For Women") in 1790.

At the Trial of Louis XVI in December 1792, Condorcet, who opposed the death penalty albeit supporting the trial itself, spoke out against the execution of the King during the public vote at the Convention – he proposed to send the king to work as a slave rower on galley ships.

Condorcet was on the Constitution Committee and was the main author of the Girondin constitutional project. This constitution was not put to a vote. When the Montagnards gained control of the Convention, they wrote their own, the French Constitution of 1793. Condorcet criticized the new work, and as a result, he was branded a traitor. On 3 October 1793, a warrant was issued for Condorcet's arrest.

The warrant forced Condorcet into hiding. He hid for five (or eight) months in the house of Mme. Vernet, on Rue Servandoni, in Paris. It was there that he wrote Esquisse d'un tableau historique des progrès de l'esprit humain (Sketch for a Historical Picture of the Progress of the Human Spirit), which was published posthumously in 1795 and is considered one of the major texts of the Enlightenment and of historical thought. It narrates the history of civilization as one of progress in the sciences, shows the intimate connection between scientific progress and the development of human rights and justice, and outlines the features of a future rational society entirely shaped by scientific knowledge.[20]

On 25 March 1794 Condorcet, convinced he was no longer safe, left his hideout and attempted to flee Paris. He went to seek refuge at the house of Jean-Baptiste Suard, a friend of his with whom he had resided in 1772,[21] but he was refused on the basis that he would be betrayed by one of their residents. Two days later, he was arrested in Clamart and imprisoned in Bourg-la-Reine (or, as it was known during the Revolution, Bourg-l'Égalité, "Equality Borough" rather than "Queen's Borough") where, after another two days, he was found dead in his cell. The most widely accepted theory is that his friend, Pierre Jean George Cabanis, gave him a poison which he eventually used. However, some historians believe that he may have been murdered (perhaps because he was too loved and respected to be executed). Jean-Pierre Brancourt (in his work L'élite, la mort et la révolution) claims that Condorcet was killed with a mixture of Datura stramonium and opium.

Condorcet was symbolically interred in the Panthéon in 1989, in honour of the bicentennial of the French Revolution and Condorcet's role as a central figure in the Enlightenment. His coffin, however, was empty as his remains, originally interred in the common cemetery of Bourg-la-Reine, were lost during the nineteenth century.


I had originally preferred the Condorcet voting method for its simplicity and elegance. But now that I know "the rest of the story", I'm a bigger fan than ever.   :salute:
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Tue Oct 11, 2022 5:48 pm

JavaScript Voting Program (Version 021)

As mentioned above, most browsers no longer support Java "out of the box", so I've recently rewritten the voting program in JavaScript. It has a slightly different interface than the previous version, but it should run in all modern web browsers. I will probably install it into our forum at some point so people can use it anywhere that they want to take a vote on something.

Moderator's Note - October 5, 2024: The Javascript version is now available here:

                https://ushawks.org/voting/Voting.html

For now, the program is attached as an HTML file inside a Zip file that you can download, unzip, and run inside your web browser on your own computer. I'll describe it in the next post.

 
Attachments
Voting_021.html.zip
(7.56 KiB) Downloaded 202 times
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Tue Oct 11, 2022 6:11 pm

Introduction to JavaScript Voting Program (Version 021)

I've recently rewritten my 2010 voting program (originally written in Java) as a JavaScript program (see previous post for download). The interface is somewhat similar to the original, but it has been improved in a number of ways. Here's a screen shot of what it looks like when you first open it:

V21_Just_Opened.png
V21_Just_Opened.png (62.87 KiB) Viewed 6644 times

If you don't change anything and click on the "Calculate Results" button, you'll find that those votes select "A" as the winner. That result would be based on the "Simple Plurality" default voting method setting. But if you change the "Simple Plurality" setting to "Condorcet" and click "Calculate Results", you'll find that those same votes will select "C" as the winner. So what's up? How can the same ballots produce different results? That's what this post is all about. Please read on ...

Before getting into the details of the voting methods, let's first talk about votes - or more precisely, ballots. When we "vote" on anything we can use many different means to express our desires. In some situations, people can vote by voice ("yeas and nays", for example) and the loudest result is the winner. In other cases, people might vote by raising their hands or moving to one side or another of the room. In this case, we're going to focus on votes cast with written (paper or electronic) ballots. Let's start with an example.

Let's say there are 4 candidates named (conveniently enough) "A", "B", "C", and "D". And let's say that there are 5 voters (who don't have to be named, but we'll call them "Voter 1" through "Voter 5" for easy reference). Then we would expect to get 5 different ballots (one from each voter). But what would be on those ballots? In our typical plurality voting system, each ballot would contain just one name ... the name of each voter's favorite candidate. That might look like this:





Voter 1's ballot:C
Voter 2's ballot:A
Voter 3's ballot:B
Voter 4's ballot:A
Voter 5's ballot:D


Now if that's all the information that we have, then we can see that there are 2 votes for "A", 1 vote for "B", 1 vote for "C", and 1 vote for "D". So we would generally say that "A" wins because there are more votes for candidate "A" than for any other candidate. But does that mean that "A" is really the favorite choice according to these voters? Think about it carefully before you commit to an answer.

What if candidates "B" and "D" were to drop out of the race so that the voters could only choose between "A" and "C". Would "A" still win in that case? It turns out that we don't know because we don't know how "Voter 3" and "Voter 5" would have voted without candidates "B" and "D" on the ballots. In other words, these "single favorite candidate" ballots don't have enough information to tell us what the voters would do if an election were held between "A" and "C" alone.

So maybe we could expand our ballots to let voters list their choices in order of preference? It turns out that's called a "ranked voting" system where voters can list multiple candidates and show which ones they prefer. Wikipedia shows 3 different examples of ranked voting (or ranked preference) ballots:

Ranked_Voting_Ballots_Wikipedia.png
Ranked_Voting_Ballots_Wikipedia.png (83.74 KiB) Viewed 6640 times


With ranked preference ballots, voters can express their preferences among all candidates, so if one drops out, their votes will still show their preference among the remaining candidates. This also suggests the possibility that voters could choose their favorite candidates first without worrying whether those candidates had much chance of winning.

With those thoughts in mind, let's take a look at our simple "A", "B", "C", "D" election. Let's say that we allow each voter to cast a ballot where they can list all 4 candidates in their order of preference (with their first choice on the left). Here's what those ballots might look like showing the voters' full preferences among all the candidates:





Voter 1's ballot:CBAD
Voter 2's ballot:ACBD
Voter 3's ballot:BCAD
Voter 4's ballot:ADCB
Voter 5's ballot:DCBA


Their first choices haven't changed. "Voter 1" would still vote for "C" first, and "Voter 2" would still vote for "A" first, and so on. But now we can see how they would vote if their first choice (or second choice or third choice) wasn't available. That brings us back to our earlier question: What if candidates "B" and "D" were to drop out of the race?

Well, let's see. We can just erase candidates "B" and "D" from the ballots leaving only "A" and "C":





Voter 1's ballot:CA
Voter 2's ballot:AC
Voter 3's ballot:CA
Voter 4's ballot:AC
Voter 5's ballot:CA


So who would win now? Well, here's what we can see from those ballots:

Voter 1 would prefer "C" before "A".
Voter 2 would prefer "A" before "C".
Voter 3 would prefer "C" before "A".
Voter 4 would prefer "A" before "C".
Voter 5 would prefer "C" before "A".


In other words, if we compress the ballots to remove the empty positions we have this:





Voter 1's ballot:CA
Voter 2's ballot:AC
Voter 3's ballot:CA
Voter 4's ballot:AC
Voter 5's ballot:CA


It's clear now, that in an election between "A" and "C", that the voters would prefer ... "C"!!

Now that's a bit odd. We've found that if we only let each voter choose their single favorite candidate (and no others), then the winner might be a candidate ("a" in this case) that could be defeated by some of the other candidate(s) ("c" in this case) in one-on-one runoff election(s). That's not good. In fact, it's very bad because the newly elected candidate could be immediately challenged as illegitimate ... and that challenge would stick. It's also easy to show cases (see below) where one candidate might defeat every other candidate by factors of 10 to 1 (or more) and yet still lose the election to one of those other less preferred candidates if the wrong voting system is used.

That brings us to what is known as the "Condorcet Winner Criterion":

Wikipedia wrote:The candidate who wins a majority of the vote in every head-to-head election against each of the other candidates – that is, a candidate preferred by more voters than any others – is the Condorcet winner


In other words, the "Condorcet Criterion" says that the winner of any election should NEVER EVER be defeatable in a runoff against any loser of that same election using the same ranked ballots. A simple plurality election (where each voter only picks one candidate) fails to meet the Condorcet Criterion in all cases because there are examples (such as this one) where a candidate who lost the election would actually defeat the winner in a one-on-one runoff election - using the same ballot preferences!! That's a pretty serious flaw because you can end up getting a candidate that almost no one wants. For example, one of the cases in the previous program shows an election where one of the challengers would defeat the plurality winner by a vote of 11 to 3 in a one-on-one election!! This happens because consensus candidates can sometimes get fewer votes than factional candidates ... especially when there are many different factions.

The only rub with the Condorcet Criterion is that sometimes there isn't any single candidate who can defeat all others in a one-on-one basis. That's somewhat like the "Rock Paper Scissors" case where each candidate can be defeated by at least one other candidate. In that case, the winner can be chosen by some other predetermined means (plurality winner, instant runoff winner, range winner, candidate registration date, coin toss, etc). But by requiring that the winner pass the Condorcet Criterion FIRST, a voting system can help ensure that the winner could not be defeated by a losing challenger in a one-on-one runoff election. It's that simple.

So far, we've only allowed our candidates to be listed in strict order of preference. But sometimes a voter might find two candidates equal. It turns out that can be expressed by putting an equal sign ("=") between the two (or more) candidates that are considered to be equal.

In this example, "Voter 4" might have felt that candidates "A" and "D" were really equal, but had entered them on the ballot as "A D C B" (see earlier example). That ballot could have been written as "A=D C B" to express that "A" and "D" were equal first choices followed by C and B. This can be helpful in a crowded election where a voter might not care about the differences between a number of candidates. In that case, they could all be listed as being equally bad in the last place:

      "C B D A=E=F=G=H"

As a shorthand notation, any missing candidates can be considered as being equally unfavorable. So that same ballot could be expressed by listing the favorites in order (without the "tied for last place" candidates):

      "C B D"

It turns out that the equals sign can be used to express equality of candidates at any level of preference. This can amount to "groups" of candidates being listed by preference (extra space added for emphasis):

      "C=B   D   A=E=F   G=H"

In that ballot, the voter wanted either "C" or "B" as their first choice, "D" as their second choice, either "A", "E", or "F" as their third choice, and either "G" or "H" as their last choice.

That pretty much explains the ballots in the program except for one last feature. There are some voting systems (such as "Range" voting) that require scores to be assigned to the candidates. The scores typically have a predefined range (such as 0 to 10,   or 0 to 100). These can be expressed as numbers in square brackets following each candidate in the list. Here's the same example that we've been using with numeric scores ranging 0 to 100 following each candidate:

C[100] B[75] A[50] D[25]
A[100] C[75] B[50] D[25]
B[100] C[75] A[50] D[25]
A[100] D[75] C[50] B[25]
D[100] C[75] B[50] A[25]


When numbers are given for every candidate, the order doesn't matter. So the previous ballot (where candidates are listed in ranked in order of 100, 75, 50, 25) is equivalent to this ballot (where the candidates are listed alphabetically as "A", "B", "C", "D"):

A[50] B[75] C[100] D[25]
A[100] B[50] C[75] D[25]
A[50] B[100] C[75] D[25]
A[100] B[25] C[50] D[75]
A[25] B[50] C[75] D[100]


Note, however, that if you don't explicitly assign numbers to every candidate when using "Range" voting, the program will automatically generate "reasonable" numbers (according to each candidate's ranking order) for candidates without numbers. But those auto-generated numbers defeat the purpose of the Range Voting method. The auto-generated numbers also do not reflect the strengths and weaknesses of Range Voting. Indeed, when using auto-generated numbers, the "Range" option isn't really using the "Range" method because the numbers are being calculated by an algorithm not defined by the Range Voting method.

Ballot Area Description

The ballot area is the large text entry box in the upper left corner of the page. The "Notes" section (to the right of the ballot area) describes the expected format of the ballots in the ballot area:

  • Each line is one ballot cast by one voter.
  • Candidate choices are separated by spaces.
  • The first choice is listed first (on the left).
          Simple example ballot: b d a c
  • Equal choices are expressed with "=".
          Ballot with an equal choice: b d=a c
  • Numeric scores may be entered inside brackets.
          Ballot with numeric scores: b[95] d[70] a[70] c[5]
  • Voting methods use ordering and scores differently.

You can type ballots in directly. You can copy and paste ballots from other sources. You can select and load from among the predefined examples.

Examples Selector Description

The Examples selector selects from among the predefined examples. The actual example isn't loaded into the Ballot Area until the "Load Example" button is clicked.

There are a number of examples currently listed, and some of them were intended to replicate the examples coded into the Java version (they typically start with the name "Java"). The example listed as "Examples" is the same one described above with four candidates and five voters. The "Rock Paper Scissors" example shows a case where three candidates should tie (although the Instant Runoff's random elimination will produce a non-tied result).

Hidden Consensus Example

The "Hidden Consensus" example demonstrates a strong consensus candidate ("a") running against a number of "factional" candidates ("b", "c", "d", "e", "f", and "g"). Simple Plurality selects a winner of "g" because there are 3 voters (out of 14) who listed candidate "g" as their first choice. So plurality selects a winner of "g" even though 11 out of 14 voters expressed a preference for "a" over "g". In fact, "g" was the last choice for 11 out of 14 voters. Similarly, the Instant Runoff method eliminates the consensus candidate "a" in the first round because the consensus candidate is not strongly endorsed by any of the factions. So Instant Runoff selects a winner of "b" even though 12 of the 14 voters expressed a preference for "a" over "b". Here are the ballots:

a b c d e f g
b a c d e f g
b a c d e f g
c a b d e f g
c a b d e f g
d a b c e f g
d a b c e f g
e a b c d f g
e a b c d f g
f a b c d e g
f a b c d e g
g a b c d e f
g a b c d e f
g a b c d e f


Here are the results from the Condorcet method:

Consensus_Candidate_Condorcet.png
Consensus_Candidate_Condorcet.png (15.68 KiB) Viewed 6636 times


The leftmost table (above) shows the original ballots. The remaining tables ("a v b", "a v c" ... "a v g") show the one-on-one comparisons of candidate "a" with each of the other candidates ("b", "c", "d", "e", "f", "g"). The text below each table shows the vote count by which candidate "a" defeats each of the other candidates:






a vs b:12 to 2
a vs c:12 to 2
a vs d:12 to 2
a vs e:12 to 2
a vs f:12 to 2
a vs g:11 to 3


Java Strong 2nd 2 Example

The "Java Strong 2nd 2" example is another case where the Condorcet winner ("A") would easily defeat every other candidate (by 5 votes to 2 votes each) even though the Simple Plurality and Range methods pick other candidates.Here are the ballots:

A[9] B[4] C[3] D[2]
B[9] A[4] D[3] C[2]
B[9] A[4] D[3] C[2]
C[9] A[4] B[3] D[2]
C[9] A[4] B[3] D[2]
D[9] A[4] B[3] C[2]
D[9] A[4] B[3] C[2]


Here are the results from each of the 4 voting methods:





MethodResulting Winner(s)
Simple Pluralitytie between B, C, and D
RangeB
Instant RunoffB
CondorcetA


Note that the Condorcet method is the ONLY one to pick candidate "A" as the winner. Here are the results of running each of the other candidates against the Condorcet winner ("A") in one-on-one elections:

Condorcet_Beats_All_Others_5_to_2.png
Condorcet_Beats_All_Others_5_to_2.png (10.2 KiB) Viewed 6635 times


Load Example Button Description

The Load Example button loads the currently selected example into the Ballot Area.

Voting Methods Description

The voting methods selector selects the voting method that will be used when the "Calculate Results" button is clicked. The current program supports 4 different voting methods:

  • Simple Plurality (only the first choice is used)
  • Range (uses a sum of scores for each candidate)
  • Instant Runoff (sequential evaluation and discarding to arrive at a majority)
  • Condorcet (winner must defeat all others in one-on-one pairings)

Calculate Results Button Description

The Calculate Results button computes the result of the ballots in the Ballot Area using the currently selected Voting Method in the Voting Method selector. The results are displayed below the "Calculate Results" button. The details of the displayed results will likely differ for each voting method.
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Wed Oct 12, 2022 12:06 am

Real World Example - Banning of Scott Wise from HGAA

By the way, here's a real world example from the sport of hang gliding where a bad voting system can allow a minority to rule over the majority.

Back in 2010, a large number of pilots were very interested in forming an alternative to USHPA. I started a topic on hanggliding.org to gather support, and we had lots of people signing up in just a few days. I wanted to have those founding discussions right there on hanggliding.org, but Jack Axaopoulos decided to set up another forum and force everyone to post there. I trusted Jack at that time (a big mistake), and I went along with the plan. It turns out that the "new site" was more of a "back alley" where Jack was able to control and eventually kill the new organization. But that's jumping a little ahead of the story.

When we started the new organization (eventually named the HGAA), there was a consensus selection of Scott Wise to be the Chairman of what we called the "Transition Team" that was going to lay the foundation. But Jack Axaopoulos could not control Scott, and Jack wanted to install another Chairman and then ban Scott from the site. But first Jack needed to establish a voting system that would allow a minority of the Transition Team to defeat the majority (who objected to Scott being banned). That's when Jack began pushing what is known as "Range Voting" (rating candidates on a scale of 0 to 100) on the HGAA. That's when I first began researching voting systems, and I found that Range Voting was highly susceptible to manipulation because there is no way to establish and enforce the meanings of the "points" used in the voting. One voter might feel that very few candidates deserved to be rated at the extremes (near 0 or near 100) while another voter might realize that they can maximize their influence on the election by only voting with the extremes (0 and 100). I pointed this out to Jack Axaopoulos, but he claimed that anyone voting with those extremes (0 and 100) would be obviously seen as "corrupt" and somehow be restrained or punished (although he never explained exactly how that would be determined or implemented). But Jack was the boss (not because he was elected ... but because he ran the site), so he intimidated everyone into using his "Range Voting" system. Guess what happened next.

Yup, you guessed it. An important vote came along and almost all of Jack's cronies voted the extremes (0 and 100) to get their way. And those pilots who swallowed Jack's rhetoric and refrained from voting the full extremes ended up losing. That's how Scott Wise was permanently banned by a minority vote of the Transition Team who were (in Jack's own words) obviously "corrupt". Here's the vote count:

Vote_Count_Ban_Scott_from_HGAA.png
Vote_Count_Ban_Scott_from_HGAA.png (13.06 KiB) Viewed 6632 times

Go ahead and count the number of voters who favored banning (higher score to ban than to not ban). They are shown in red, and there were 5 voters in that group ("KK", "JB", "SG", "Dan", and "Jason"). Then count the number of voters who favored not banning (shown in blue). There were 6 voters in that group ("HGXC", "Scare", "HGAAflyer", "PilotGuy", "SkyPilot", and "Bob"). So 5 favored the ban, and 6 opposed the ban. But the stupid Range Voting system (and Jack's warnings against voting 0 and 100) ended up having Scott permanently banned from the HGAA that Scott himself had helped to found. The point count was 552 to ban and 551 to not ban. Note how many "Not Ban" voters had been intimidated by Jack's warnings to stay away from the extremes (Scare, HGAAflyer, and PilotGuy). Any one of them could have brought about a tie, and any two of them could have reversed the result. Also note that all of Jack's cronies (except Jason) voted the full extremes (100 to ban and 0 not to ban). Jack ("SG") himself voted 100 to ban and 0 to not ban even though he said that such voting would be seen as "corrupt".

Now take those same ballots and put them into the Voting program. Here are the properly formatted ballots to copy and paste:

B[100] N[0]
B[100] N[0]
B[100] N[0]
B[100] N[0]
B[100] N[50]
N[100] B[50]
N[1] B[0]
N[100] B[1]
N[100] B[1]
N[100] B[0]
N[100] B[0]


Try any of these real voting systems:

      Try Simple Plurality: Not Ban
      Try Instant Runoff: Not Ban
      Try Condorcet: Not Ban

Then try Range:

      Range: Ban

Scott was banned from the HGAA through Jack's insistence on the Range Voting system. As you'll notice, I was still a member of the Transition Team at that time, and I was smart enough to vote the extremes. But Jack had begun whittling away (or driving away) good pilots like Scott Wise and Joe Faust. It wasn't long before he had enough clout to take me out as well. And the HGAA disappeared into obscurity soon afterward. The lynching of Scott (and others) will be a permanent stain on the pilots who participated in it.

As for Range Voting? Jack always boasted that Range Voting was used in the Olympics, and that's true. But Olympic judges are NOT the actual competitors and they are expected to show a high degree of impartiality (although that's been an ongoing problem for them as well). The Range Voting system is guaranteed to break down when "push comes to shove" and when the "judges" have highly vested interests in the outcomes. That's exactly what we saw with the HGAA. But there was another element that made it even worse. If the voters had been given proper information (and over time if they have learned it themselves) they would have known that they should ALWAYS vote the extremes (0 and 100 in the HGAA example) to maximize their chances of getting the result they wanted. Jack's team certainly knew that, and that's why 4 out of 5 of his cronies voted exactly 100 and 0. But many of Scott's supporters were too timid to push those extremes (likely due to Jack's accusations of "corruption" for doing what Jack himself did). So only 2 out of Scott's 6 supporters voted the maximum limits (SkyPilot and myself), and that was 1 too few for a tie (which would not have justified banning Scott). If there had been many more future votes (there weren't because the HGAA imploded shortly afterward), then all the team members would have quickly learned to ALWAYS vote the extremes of 0 and 100. But then that would have undermined the whole point of "Range" voting in the first place. That's why Range voting is a stupid system to use when there's a lot on the line or when voters actually care about the outcome. Range Voting is included in my voting program only to show how stupid it is. Thanks Jack.
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Sun Oct 23, 2022 3:14 am

The Javascript Voting program is now available online here:

      https://ushawks.org/voting/Voting.html

The "Hidden Consensus 1" example (found in that program) is a simple example where there is a Condorcet winner, and yet all other methods choose another winner. Here are the regular ballots (without "Range" scores) for that example:

A B C D   (ballot 1)
B A D C   (ballot 2)
B A D C   (ballot 3)
C A B D   (ballot 4)
C A B D   (ballot 5)
D A B C   (ballot 6)
D A B C   (ballot 7)


Here are the same ballots with "Range" scores added:

A[9] B[4] C[3] D[2]   (ballot 1)
B[9] A[4] D[3] C[2]   (ballot 2)
B[9] A[4] D[3] C[2]   (ballot 3)
C[9] A[4] B[3] D[2]   (ballot 4)
C[9] A[4] B[3] D[2]   (ballot 5)
D[9] A[4] B[3] C[2]   (ballot 6)
D[9] A[4] B[3] C[2]   (ballot 7)


Here are the results from each of the 4 voting methods using those ballots:





MethodResulting Winner(s)
Simple Pluralitytie between B, C, and D
RangeB
Instant RunoffB
CondorcetA


Note that the Condorcet method is the ONLY method to pick candidate "A" as the winner.

Now, it's a fair question to ask: "Why should A be the winner?".

The answer is actually surprisingly easy. Candidate "A" can be proven to be preferred by the voters over EVERY OTHER CANDIDATE. Let's start by seeing how "A" would stack up against the closest competitor "B". Here are the ballots with both "A" and "B" highlighted in bold blue and bold red respectively:

A B C D   (ballot 1)
B A D C   (ballot 2)
B A D C   (ballot 3)
C A B D   (ballot 4)
C A B D   (ballot 5)
D A B C   (ballot 6)
D A B C   (ballot 7)

You can see from these highlighted ballots, that voter 1 (who cast ballot 1) preferred "A" over "B" because they ranked "A" higher than "B". So that's 1 for "A" and 0 for "B".

Voter 2, however, preferred "B" over "A" because they ranked "B" higher than "A". So that's 1 for "A" and 1 for "B".

Voter 3 also preferred "B" over "A", so now it's 1 for "A", and 2 for "B".

The remaining 4 voters (who cast ballots 4,5,6,7) all preferred "A" over "B". So that's a total of 5 for "A" and only 2 for "B". In other words, the voters have spoken - in their own ballots - that they would prefer "A" over "B" by a 5 to 2 vote. That's a landslide for "A". Yet ALL of the other methods excluded "A" and chose either "B" or a tie between "B" "C" and "D".

For completeness, here are the similar comparisons between "A" and "C" (5 to 2) followed by "A" and "D" (5 to 2):

A B C D   (ballot 1)
B A D C   (ballot 2)
B A D C   (ballot 3)
C A B D   (ballot 4)
C A B D   (ballot 5)
D A B C   (ballot 6)
D A B C   (ballot 7)


A B C D   (ballot 1)
B A D C   (ballot 2)
B A D C   (ballot 3)
C A B D   (ballot 4)
C A B D   (ballot 5)
D A B C   (ballot 6)
D A B C   (ballot 7)
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Sun Oct 23, 2022 9:54 pm

Deep Comparison of Voting Methods

This post carefully examines the differences between 4 voting methods using a slightly modified set of ballots from the previous example (adding one more voter). Here are the normal and range ballots for this case:




Normal
Ballots
Range Ballots
(with scores)
Voter
Number
A B C D
B A D C
B A D C
C A B D
C A B D
D A B C
D A B C
D A B C
A[9]   B[4]   C[3]   D[2]
B[9]   A[4]   D[3]   C[2]
B[9]   A[4]   D[3]   C[2]
C[9]   A[4]   B[3]   D[2]
C[9]   A[4]   B[3]   D[2]
D[9]   A[4]   B[3]   C[2]
D[9]   A[4]   B[3]   C[2]
D[9]   A[4]   B[3]   C[2]
Voter 1
Voter 2
Voter 3
Voter 4
Voter 5
Voter 6
Voter 7
Voter 8


You can run this example by copying either set of ballots above and pasting them into the "Ballots" area of the Voting program at:

      https://ushawks.org/voting/Voting.html

However, to get the same results, it's better to use the second (middle) set with Range scores added. That's the example I'll be using here.

Plurality

If you set the voting method to "Simple Plurality" and click "Calculate Results" you'll get this:

Simple Plurality (only first choice matters, equals are ignored):
Total votes cast: 8
Candidate A got 1 first choice votes
Candidate B got 2 first choice votes
Candidate C got 2 first choice votes
Candidate D got 3 first choice votes
--> Simple Plurality Winner is: D

As described in that report, the Simple Plurality voting method only looks at the first choices of each voter. Since there are 3 ballots with candidate "D" as the first choice, and that's more than any other candidate, then the "Plurality" voting system will choose "D" as the winner. This is a bit of a problem because the ballots show that the voters would actually prefer "A" over "D". If you're not sure of that, just look at each ballot and count the number of ballots where "A" is chosen over "D". Then compare that to the number of ballots where "D" is chosen over "A".

Range

If you set the voting method to "Range" and click "Calculate Results" you'll get this:

Range Voting (uses sum of scores):
Candidate A got a sum total of 37
Candidate B got a sum total of 37
Candidate C got a sum total of 31
Candidate D got a sum total of 39
--> Range Winner is: D

As described in the report, the values assigned to each candidate are simply added up to get the result. This is intended to provide a "range" of values that a voter can give to each candidate. But there is a conflict. If a voter really wants "A" to win, then giving ANY point values to ANY competitor will decrease the chance that "A" will actually win. So when "push comes to shove", voters who really want a particular candidate will score their favorite with the maximum (often 100) and score all others with the minimum (typically 0). First, this defeats the whole notion of a "range" because all experienced range voters will vote the extremes (0 and 100). Second (and even worse), inexperienced range voters will be disenfranchised of their vote because they attempted to vote as instructed using moderate intermediate values. Over time, these inexperienced voters will come to realize that range voting rewards the extremes, and they will similarly vote with minimum and maximum values which defeats the "range" aspect of "Range" voting.

More importantly, the "Range" voting system also produces the wrong answer because the ballots show that the voters would actually prefer "A" over "D". If you're not sure of that, just look at each ballot and count the number of ballots where "A" is chosen over "D". Then compare that to the number of ballots where "D" is chosen over "A". More voters would prefer "A", but the "Range" voting system chooses "D".

Instant Runoff

If you set the voting method to "Instant Runoff" and click "Calculate Results" you'll get this:

Instant Runoff Voting (evaluate and replace, equals ignored):
   Round:1
       Eliminating A
   Round:2
       Eliminating C
   Round:3
       Majority Winner: B had 5 first choice votes.
--> Instant Runoff Winner is: B

The Instant Runoff method is similar to the Plurality method because both are primarily concerned with the first choice on each ballot. However, the Instant Runoff method allows voters whose candidates lost in earlier rounds to effectively choose alternates as the algorithm evolves.

The Instant Runoff method is best described by going through the actual process step by step. In this example, the ballots were:

A B C D   (ballot 1)
B A D C   (ballot 2)
B A D C   (ballot 3)
C A B D   (ballot 4)
C A B D   (ballot 5)
D A B C   (ballot 6)
D A B C   (ballot 7)
D A B C   (ballot 8)

The first column is highlighted because that's where the decisions are made. The first step is to ask whether any candidate has a majority in that first column. Since there are 8 ballots, a majority would be 5 or more. Candidate "D" does have 3 first choice votes, but that's not a majority. So the Instant Runoff method removes one of the candidates with the least number of first choice votes. In this case, that would be candidate "A" because only one voter (ballot 1) listed "A" as their first choice. Once candidate "A" has been eliminated, the ballots now look like this:

B C D   (ballot 1)
B D C   (ballot 2)
B D C   (ballot 3)
C B D   (ballot 4)
C B D   (ballot 5)
D B C   (ballot 6)
D B C   (ballot 7)
D B C   (ballot 8)

The process now repeats. Again, there is no majority in the first column, so the candidate with the fewest first-choice votes will be eliminated. In this case, that would be candidate "C" which was first choice on only 2 ballots. After removing candidate "C", the ballots now look like this:

B D   (ballot 1)
B D   (ballot 2)
B D   (ballot 3)
B D   (ballot 4)
B D   (ballot 5)
D B   (ballot 6)
D B   (ballot 7)
D B   (ballot 8)

The process repeats again. But this time there is a majority in the first column. There are 5 votes for "B" out of 8 candidates, and that is a majority. So the Instant Runoff method chooses "B" as the winner.

This example shows a big problem with the Instant Runoff method. When an election has a number of factions (such as "A", "B", "C", and "D" in this case), the smallest faction will be eliminated right at the very beginning without considering how well that candidate may be liked as a second, third, or fourth choice. In this case, the ballots show that candidate "A" is ranked either first or second by ALL voters:

A B C D   (ballot 1)
B A D C   (ballot 2)
B A D C   (ballot 3)
C A B D   (ballot 4)
C A B D   (ballot 5)
D A B C   (ballot 6)
D A B C   (ballot 7)
D A B C   (ballot 8)

More importantly, the ballots also show (paradoxically) that a real runoff between candidates "A" and "B" would result in "A" winning the election. This can be seen here where "A" would defeat "B" by 6 votes to 2 votes in a real runoff:

A B C D   (ballot 1 - voter prefers A over B)
B A D C   (ballot 2 - voter prefers B over A)
B A D C   (ballot 3 - voter prefers B over A)
C A B D   (ballot 4 - voter prefers A over B)
C A B D   (ballot 5 - voter prefers A over B)
D A B C   (ballot 6 - voter prefers A over B)
D A B C   (ballot 7 - voter prefers A over B)
D A B C   (ballot 8 - voter prefers A over B)

As shown here, the voters preferred candidate A over B by 6 to 2. But the "Instant Runoff" voting method "jumped to the conclusion" that A would lose and therefore eliminated A in the first round and ended up declaring B as the winner.

Condorcet

If you set the voting method to "Condorcet" and click "Calculate Results" you'll get this:

Condorcet Voting (winner must defeat all others):
The Condorcet Winner is: A





\ABCD
A\665
B2\65
C22\3
D335\

That will be followed by these additional tables:

Results_Condorcet.png
Results_Condorcet.png (144.85 KiB) Viewed 6510 times


Interestingly, the Condorcet method is the one method that is most deserving of the name "Instant Runoff". That's because the Condorcet method actually conducts a real runoff election between each pair of candidates. If there is one candidate that defeats all others one-on-one, then that is the one candidate (by definition) that would win in any runoff election. In this example, a true runoff between "A" and "B" would have "A" win by 6 votes to only 2 votes. A true runoff between "A" and "C" would also result in "A" winning by 6 votes to only 2 votes. Similarly, a true runoff between "A" and "D" would result in "A" winning by 5 votes to 3 votes. Since the voters have expressed a preference for A over every other candidate, it is hard to justify any winner other than A. The Condorcet method is the only voting system that ensures this proper outcome.

Summary

There are a number of methods that can be used to determine the "will" of a group of people who are making a decision. In this example with 4 candidates and 8 voters, the following methods produced the following winners:





MethodWinner
Simple PluralityD
RangeD
Instant RunoffB
CondorcetA


It's important to note that by the very definition of the Condorcet method, the Condorcet winner would defeat any winner chosen by any other method in a one-on-one election. In other words, any "winner" differing from the Condorcet winner would lose a run-off election to that Condorcet winner. This is a very strong argument for ensuring that the Condorcet winner is chosen whenever possible.
Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Re: Abstract, General, Voting Discussions, Examples, and Too

Postby Bob Kuczewski » Fri Mar 31, 2023 12:32 pm

I just happened across the following video. It demonstrates how successive manipulation of the agenda can be used to manipulate the final outcome in a series of votes. This is why it's important for voters to be given all choices at once rather than a series of choices that can be manipulated as shown in this video. I am not sure, but I have a suspicion that this is related to one of the failure modes in the "instant run-off" voting systems.

https://www.youtube.com/watch?v=goQ4ii-zBMw

Join a National Hang Gliding Organization: US Hawks at ushawks.org
View my rating at: US Hang Gliding Rating System
Every human at every point in history has an opportunity to choose courage over cowardice. Look around and you will find that opportunity in your own time.
Bob Kuczewski
User avatar
Contributor
Contributor
 
Posts: 8374
Joined: Fri Aug 13, 2010 2:40 pm
Location: San Diego, CA

Next
Forum Statistics

Who is online

Users browsing this forum: No registered users and 1 guest

Options

Return to Building the US Hawks