Navigation

    Voting Theory Forum

    • Register
    • Login
    • Search
    • Recent
    • Categories
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. tec
    3. Posts
    T
    • Profile
    • Following 0
    • Followers 1
    • Topics 3
    • Posts 27
    • Best 7
    • Groups 0

    Posts made by tec

    • RE: Collaborative Coding for Simulation

      If you are looking for voting strategies and you aren't already familiar with it, you might want to look at Warren D. Smith's 2000 Range Voting paper. In it he proposes Range Voting (now more commonly referred to as Score) and compares it to about 30 other voting methods (really 14 other methods with naïve and strategic variations), The last I checked the paper can be found at Range Voting. The (c) code is also available at votetest2.c.

      According to the (many) voting papers I've read over the past several years, there is a major decision that needs to be made when representing the electorate. In my opinion, the worst option is to use tournaments, which essentially ignore voters and even elections, and are about choosing a winner among a fixed set of alternatives based on a graph in which an arrow points from node A to node B if A would defeat B in a one-on-one simple majority election. The graph is just a given, and the challenge is to figure out a way to pick the winner. These papers have tended to focus on the computational difficulty of making this choice when the graph is large. The second way of representing the electorate is preference profiles, which is just a ranking of the fixed set of alternatives combined with a mulitplicity for each raking indicating how many voters would order the alternative that way. My problem with this method is that it doesn't provide any data for approval voting or score voting, or indeed any cardinal voting method.

      My preferred method (which generally requires computer simulation for any realistically sized electorate) is to represent voters as points in an issue space (usually 2D or higher), and use a distance function between the voters and the alternatives (also points in the issue space) to generate ordinal or cardinal ballots.

      One of the projects I'm considering is to start with something like Nicky Case's To Build A Better Ballot, and use interactive JavaScript to illustrate many of the problems with various voting systems. This is also similar to what @rob did in the underlying electorate model in his voting strategy simulation. (I do have an ulterior motive here. If the simulations start with the voters and distance functions to the alternatives, it becomes a lot easier to show exactly how an iterative voting system like SAVE would work, and how it would be significantly better than any non-iterative system. That argument is a lot easier with pictures.)

      posted in Tech development
      T
      tec
    • RE: Collaborative Coding for Simulation

      @jack-waugh on the original question regarding languages, I don't really know FORTH (or its variations) and I have a strong attraction to LISP. But for the simple and practical reasons that simulations have to be run on some system, having JavaScript client code is really the only way to go if you want more than a handful of users running simultaneous simulations.

      posted in Tech development
      T
      tec
    • RE: If there are only two candidates, could FPTP be improved upon?

      @rob Your question was answered by Ken Arrow (of Arrow's impossibility theorem fame). AIT is more formally called Arrow's general possibility theorem, and is the second theorem in his Social Choice and Individual Values. His theorem 1 (Possibility Theorem for Two Alternatives) covers exactly this situation, and unlike his General Possibility theorem, the answer is affirmative. It is possible for a society to choose between two alternatives without violating any of his desirable conditions. The method to use is simple majority rule.

      After Arrow published his book, Kenneth May published an article in Econometrica (1952) titled, A Set of Independent Necessary and Sufficient Conditions for Simple Majority Decision. That paper augmented Arrow's result and states that not only does simple majority rules satisfies Arrow's conditions, but every voting system that satisfies those conditions is equivalent to simple majority rule.

      In essence, choosing between two alternatives is easy. The problem comes when you try to expand beyond two alternatives. That's what AIT shows and what Gibbard and Satterthwaite expanded upon.

      So when limited to two alternatives simple majority decision works, and any other reasonable voting system devolves into simple majority decision when restricted to two alternatives.

      posted in Single-winner
      T
      tec
    • RE: RCV IRV Hare

      @jack-waugh, the main argument against instant runoff voting (IRV) in my mind is that it seems very easy to eliminate a Condorcet winner. The story line starts with an existing plurality system with two major parties (Duverger's law). Over time, the two parties will tend to converge to the center along any issue that is in play in an election. This leads to party members not being very happy with the results even when they win. This leads to challenges to both party establishments from their extreme wings. Under plurality, this can lead to parties losing due to the spoiler effect. Some of the arguments in favor of IRV claim it solves this problem because voters can vote for their extreme wing as their first choice and the party establishment alternative as their second choice, and the implicit assumption is the extreme alternative is eliminated in the first round and support flows to the "more electable" of the parties' offerings.

      The problem with this argument is that IRV is being proposed in order to allow multiple alternatives, and the more choices their are, the fewer first place votes there will be on average for any individual alternative, and the greater the likelihood that alternatives in a crowded middle will be eliminated. Once that happens, we start seeing IRV electing fringe alternatives instead of moderates, which is almost exactly what we have now with plurality.

      Note that this argument is against the standard IRV in which if there is no winner, the alternative with the fewest first-place votes is eliminated. The dynamic is much better in a variation of IRV called the Coombs method, which successively eliminates the alternative with the most last-place votes. (The fact that a single alternative can have both the most first-place votes and the most last-place votes seems to have made it a hard sell, but that's a different issue.)

      A different argument against IRV [that was actually presented as an argument in favor of IRV, (Bartholdi, 1991)] is that strategic voting under IRV is so complicated that it is nearly impossible to determine the best strategic vote. The author's argument is that faced with the computational difficulties of determining the best strategic vote, voters will instead choose to vote honestly. To me, this line of thinking seems unsound, and I thus take it as just one more reason to avoid IRV.

      I hope this helps you in your discussions.

      posted in Single-winner
      T
      tec
    • RE: Simulating Voting Strategies

      @Jack-Waugh My apologies. I did not notice that your question about a voter favoring both front runners was directed to @Rob. I mistakenly thought it was directed to me based on a strategy WDS proposed in his paper for IRV simulations.

      The WDS strategy assumes the two front runners are significantly distinct and any voter tempted to vote strategically would have strong preferences. If I recall correctly, the WDS strategy for IRV (Strategic Hare STV) was to give the maximal rank to the better of the two front runners and the worst rank to the lesser front runner, then use a moving average to fill out the ballot by giving the highest remaining rank to the next most likely alternative that was better than average and the lowest remaining rank to the next most likely alternative that was worse than average.

      That strategy is certainly codable for a simulation, but it also seemed like a direct lead-in to your question about a why voter that liked both front-runners would vote strategically, and framed the question in the real world. Hence my response. Hopefully, it is at least an interesting scenario.

      posted in Single-winner
      T
      tec
    • RE: Simulating Voting Strategies

      @Jack-Waugh Just a clarification. My post about Warren D. Smith's Range voting paper was in response to this request for strategic algorithms to simulate. Next time I'll be sure to "reply" to the post I'm replying to. Sorry for any confusion.

      posted in Single-winner
      T
      tec
    • RE: Simulating Voting Strategies

      That question gets right to the heart of the problems in IRV. A paper by Bartholdi and Orlin (1991), Single Transferable Vote Resists Strategic Voting, suggests IRV should be used because it is so difficult to figure out how to vote strategically. The question a rational voter faces when filling out their IRV ballot involves both the accuracy of the polling data, and what the polling data shows. If polling shows both front runners are significantly ahead of an unacceptable third choice and the sum of the top three poll numbers is significantly larger than the sum of the poll data for the remaining choices, then an honest IRV ballot is probably a strategic ballot. But the devil is in the details, or more specifically the eliminations. Here's a scenario that might answer your question.

      Suppose there are five alternatives, global moderates A, B, and C, and more extreme alternatives D and E. The party affiliations are A and B in one party, and C,D,E in the other. Alternative D is solidly in the middle of its party, and alternative E is at the extreme.

      The actual profiles are as follows. However, these are not known.

      A>B>C>D>E 24%
      B>A>C>D>E 24%
      C>D>A>B>E 11%
      C>D>B>A>E 11%
      E>D>C>A>B 7.6%
      E>D>C>B>A 7.6%
      D>E>C>A>B 3.7%
      D>E>C>B>A 3.7%
      D>C>E>A>B 3.7%
      D>C>E>B>A 3.7%

      If you look at these profiles carefully, you'll see C is a Condorcet winner. However, this is an IRV election so polls will be about round results and what would happen after eliminations, and C's Condorcet status is not reported as such.

      The polls state: A and B are the frontrunners for the first round, with C, C3 and C2 following. C2 voters are likely to have C or C3 as their second choices. Almost all C3 voters have C2 as their second choice, with C as a distant third. A and B voters are likely to stay within their party, but could tolerate C. If forced to choose, C voters strongly prefer C2 over C3, but might possibly break with their party if their only in-party choice is C3.

      Our voter Joey is pretty undecided about A and B, liking both, but very much anti C,D,and E. So Joey takes the poll data and considers the likely outcome:

      First count, A:24%, B:24% (too close to call), C:22%, C2:14.8%, C3:15.2%.
      Status: no winner, C2 eliminated

      Poll say C2 votes will split evenly between C and C3.

      Second count: A:24%, B:24% (too close to call), C:29.4%, C3:22.6%.
      Status: no winner, C3 eliminated.

      Polls say the initial C3 preferences were C3>C2>C, and the initial C2 preferences were split between C2>C3>C and C2>C>C3. With C2 already eliminated, all of C3 votes go to C.

      Third count: A:24%, B:24% (too close to call), C:52%.
      Status: C is the winner.

      Given these predictions, Joey might decide to change his honest vote from A>B>C>C2 to C2>A>B>C, and encourage some of his like-minded voters to do the same. If enough of them collude, they might prevent C2 from being eliminated in the first round, causing C3 to be eliminated so that in the second round, with C2 picking up all the votes from C3, there will still be no winner and C will have the lowest vote count and be eliminated.

      If 0.5% of the A or B voters implement this strategy, the IRV election would run:

      First count, A:23.75%, B:23.75% (too close to call), C:22%, C2:15.3%, C3:15.2%
      Status: no winner, C3 eliminated, C3 votes all go to C2.

      Second count, A:23.75%, B:23.75% (too close to call), C:22%, C2:30.5%
      Status: no winner, C eliminated, C votes split among A,B,C2

      Polls are unclear here but all three remaining alternatives are expected to
      pick up between 5-10%.

      At this stage, with C and C3 eliminated, it is unlikely that there will be a third count winner. But the key point is that both A and B are expected to be able to defeat C2. This means if either A or B is eliminated in the third stage, the remaining alternative will win in the fourth stage. And if by some chance C2 is eliminated, the final round will be between A and B, both of which Joey and friends prefer over all others.

      The big problem with this scenario is the poll claim that A and B are frontrunners because they get the most votes in the first round. However, IRV is hard to predict and it is quite possible polling agencies might be wary of predicting beyond the first round when the elimination choice between C2 and C3 is so close.

      In any event, I hope this is a reasonable illustration of the manipulability of IRV. (Of which I am not a fan.)

      posted in Single-winner
      T
      tec
    • RE: Simulating Voting Strategies

      Warren D. Smith's Range Voting paper (2000) and his C code simulation goes over a number of different voting systems and simulates both honest and "rational" ballots for many of the voting systems he covers. The 30 voting system and strategy permutations in the paper are: (In the paper, WDS starts his list with zero and the "as 25" strategy reference is "as 26")

      1. Honest range voting (scaled utility vote)
      2. Honest Borda
      3. Honest Condorcet Least-Reversal (CLR)
      4. Honest Coombs STV (most least-liked candid eliminated each round)
      5. Honest Hare Single Transferable Vote STV (least most-liked canddt eliminated)
      6. Honest Copeland (win most pairwise elections)
      7. Honest Dabagh point-and-a-half
      8. Honest Black (if no Condorcet winner use Borda)
      9. Honest Bucklin
      10. Honest plurality+runoff for 2 top finishers
      11. Honest plurality (1 vote for max-util canddt)
      12. Honest bullet (1 vote against min-util cand)
      13. Majority vote on random candidate pair
      14. Random "dictator" voter dictates winner
      15. Random winner
      16. Worst-summed-utility winner
      17. Honest approval (threshhold=avg canddt utility)
      18. Strategic range/approval (average of 2 frontrunner utils as thresh)
      19. Rational range/approval (threshhold=moving avg)
      20. Rational plurality (vote for 1 of 2 frontrnnrs)
      21. Strategic Borda I (1 frontrunner top, 1 bottom, rest recursively)
      22. Rational bullet (vote against 1 of 2 frontrnnrs)
      23. Strategic CLR (strat same as 25)
      24. Strategic Hare STV (strat same as 25)
      25. Rational Borda (1 frontrunner max, 1 min, rest using moving avg to decide if max or min vote)
      26. Strategic Coombs STV (strat same as 25)
      27. Strategic Borda II (1 frontrunner max, 1 min vote, rest honest)
      28. Rational Dabagh point-and-a-half (moving avg)
      29. Strategic Copeland (strat same as 25)
      30. Strategic Black (same strat as 25)

      (A Google search for rangevote.pdf will get you to the paper. His c code is at: https://www.rangevoting.org/WarrenSmithPages/homepage/votetest2.c)

      I hope this provides some good options for your strategy simulations.

      --tec

      posted in Single-winner
      T
      tec
    • RE: What Arrow's Impossibility Theorem Really Means

      @BlainCellars the code I use is what I cobbled together since I started looking at voting systems and trying to figure out what worked best. Much of my work was done without consulting the (somewhat vast) literature on voting theory, and the tools and processes I used to help me think about things are all either free/open source or my own coding. This specific graphic was originally developed using Gnu Emacs with the svg package. Since the discussion code on this forum does not accept svg files, I used inkscape to convert the svg image into a png file.

      More generally, when I started looking into the problem of voting I started with NetLogo because it provides an easy graphic display for agent-based models. Using NL, I could create and display 100 voter-agents randomly distributed in a 2D field, then create some alternatives for them to vote for under whatever system I was looking at. It worked great for a while, but as my questions got more involved, and my code-base became more extensive I realized I needed something a little more robust. I switched to Python because it allowed me to write tests for my code and make it more reliable.

      At the moment my code is not well documented and is in need of refactoring. So while I can get it do to a number of interesting things I'm not sure how useful it would be to anyone else. On the other hand, I think it might be very useful for voting theorists to have easy access to spatial models. There is a data hierarchy to the various electorate models I've seen in recent voting theory papers. Tournaments have the least amount of data and have essentially eliminated the electorate altogether. Preference profiles have an electorate but lump voters together based on preference orders without any indication of the relative strength of individual voter preferences. Lists of individual voters with randomized utilities for each alternative allow some comparisons, but are still limited in that they really can't handle the addition of alternatives. Spatial models allow just about everything and are known to cover all possible tournaments, preference profiles, and utility models.

      I'm assuming you have something in mind with your inquiry about programs. What are you looking for? Are you looking for images of electorates? Or do you want an election simulation environment for running tests and evaluations? I am thinking of putting my code on GitHub, but it will take a lot of work before it is ready for someone else to use. Are you looking for an answer to a specific need? Or are you willing to be an alpha-tester for a generic voting system evaluation framework? And more generally, would people such as the folks on this forum be interested in such an evaluation framework?

      (This was a bigger answer than I suspect you wanted, but perhaps it will get us further in our collective quest for better collective decisions.)

      posted in Research
      T
      tec
    • What Arrow's Impossibility Theorem Really Means

      Arrow's impossibility theorem is frequently cited in the discussion between ordinal and cardinal voting systems, with the idea that AIT only applies to ordinal voting systems. It is true that Arrow was only looking at ordinal systems, with the goal of a social welfare function (SWF) that took as input a collection of individual preference orders and returned a collective order. But what Arrow actually proved was his conditions were inconsistent. Specifically, his condition allowing voters to have unrestricted preference orders (citizen sovereignty or CS) is inconsistent with the idea that a majority preference of B over A would somehow be reversed by the introduction of some alternative C.

      The Independence of Irrelevant Alternatives (IIA) condition seems reasonable at first glance. Yet there is a real question about what is meant by irrelevant. Ignoring ties, there are four possible states for an electorate preferring B over A created by the introduction of C, and at least two of them are highly relevant to the collective choice.

      • When both B and A are preferred over C, there is no problem, and B remains the collective choice.
      • When B is preferred over C and C is preferred over A, there is still no problem because B remains the collective choice.
      • When C is preferred over both A and B, it can be argued that C is anything but irrelevant, and the collective choice should now be C.
      • When A is preferred over C and C is preferred over B, the introduction of C creates a majority cycle. This is also extremely relevant because the cycle creates something like an equivalence class. This is a problem because the selection of any one of the three alternatives requires the SWF to reverse a known majority preference.

      It is easy to come up with preference profiles that result in majority cycles, such as this one:

      |-----------------+-------+-------+---------------+-------+-------|
      | voter region    | order | count | voter region  | order | count |
      |-----------------+-------+-------+---------------+-------+-------|
      | left top        | A>B>C |    15 | right top (B) | B>A>C |    19 |
      | left middle (A) | A>C>B |    18 | right middle  | B>C>A |    15 |
      | left bottom (C) | C>A>B |    15 | right bottom  | C>B>A |    18 |
      |-----------------+-------+-------+---------------+-------+-------|
      

      In this preference profile A is preferred over C by 52 to 48, C is preferred over B by 51 to 49, and B is preferred over A by 52 to 48. But just coming up with a preference profile doesn't really help us understand why the voters would have these preferences, or how common they might be in a real election.

      To get a better sense of this type of cycle, it helps to put the election in some type of context. In this case, consider a group of 100 voters in a small community trying to determine a location for a common resource such as a cell tower. Each voter has an ideal location (gray dot) and their utility of the resource is inversely proportional to the distance the single tower will be from their ideal. The locations are indicated by labeled locations (black dots) A, B, and C. In the two images, the voters are positioned identically, and the indifference lines (perpendicular bisectors between each pair of alternatives) are also identical. The only difference is the alternatives in the right image have been moved closer to the center.

      Why-spatial-models.png

      The first point I want to drive home here is that majority cycles are real and are the result of real voter utilities for the specific alternatives in the cycle. The voting method is irrelevant to the existence of cycles. When there is a cycle, the use of a cardinal voting method does not magically make that cycle go away.

      The second point I'd like to make is that no voting system that tries to do everything in one or two rounds can pick a good collective alternative when all the alternatives are collectively bad. The differences between the alternatives in the left image and those in the right image are what drove me to work on iterative voting systems.

      posted in Research
      T
      tec
    • RE: Serial Approval Vote Election

      @Jack-Waugh, Thanks for working through all these examples. I, too, had some questions about the GF vote, or the more general instructions regarding always voting for every alternative subjectively preferred over the focus. For a GF vote to be instrumental in impeding termination, the G vote total would have to be at least a strict majority (that is: F > half, because equal to half is not sufficient), and the F vote total would have to be the maximum vote count and exactly equal to the G vote total. Thus it is possible for a GF vote to hinder termination. However, in addition to G blocking termination, G is preferred by the voter over F, so G blocking theloop termination with F as the final winner is also indicating the possibility for G to be a later focus and possibly a better final outcome.

      For testing purposes I wrote voter-agent code for voting to stop the loop. This strictly speaking is not part of SAVE, but it does indicate what I think voters might do. Each voter-agent has a property called indifference, which is a fraction between 0.0 and 1.0. At 0.0 the slightest difference matters, while at 1.0 the voter is totally indifferent to the alternatives. All voters start at 0.0 and increment their indifference value (1) every time the focus is a Condorcet winner (because if we cannot improve upon a Condorcet winner we will eventually accept it), and (2) whenever the focus subjectively improves after having first moved away (when the focus move away, such as when in a majority cycle, we also want to be more accepting, but only as we're coming back). These are the five basic reasons for an agent to vote for the focus:

      • Ideal - the focus is close to the voter's subjective ideal alternative.
      • Cluster - the best and the worst of the most recent focus alternatives are really close together.
      • Top-half - the spread between the best and the worst is moderately close (3x indifference) and the focus is in the top half of that spread.
      • Limited-gain - the focus is close to the upper limit to any potential future gains.
      • Peak - the focus is as good or better than a focus that was followed by a movement away from the agent's idea.
        All of these conditions except Peak use the indifference value. The conditions are ordered from most difficult to satisfy to the easiest to satisfy.

      The reason I bring this up is because I think voters might well vote for loop termination on the off-chance they can get a better result more quickly. Which implies a vote to terminate usually does not mean "I really want to terminate now" but instead is the kinder and gentler "it is okay to terminate now". Under those circumstances, the GF vote is perfectly reasonable, and supports the possibility of termination without foregoing the chance to influence the next focus choice.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      Electrowiki has a common example for showing how various voting systems work. This is how SAVE would handle the example.

      The setup is a vote for where to locate the Tennessee state capital. The options are the four cities of Memphis, Nashville, Chattanooga, and Knoxville. In the example, the population is limited to the four cities, with a table showing this preference profile:

      |----------------+----------------+------------------+----------------|
      | 42% of voters  | 26% of voters  | 15% of voters    | 17% of voters  |
      | near Memphis   | near Nashville | near Chattanooga | near Knoxville |
      |----------------+----------------+------------------+----------------|
      | 1. Memphis     | 1. Nashville   | 1. Chattanooga   | 1. Knoxville   |
      | 2. Nashville   | 2. Chattanooga | 2. Knoxville     | 2. Chattanooga |
      | 3. Chattanooga | 3. Knoxville   | 3. Nashville     | 3. Nashville   |
      | 4. Knoxville   | 4. Memphis     | 4. Memphis       | 4. Memphis     |
      |----------------+----------------+------------------+----------------|
      

      The way a SAVE procedure would work with this data would probably be something like this.

      • Round 0: Pre-loop, initial AV round. Voters have no reason to compromise (yet) so all voters only approve their first choice. Memphis gets 42%, Nashville gets 26%, Knoxville gets 17% and Chattanooga gets 15%. Since Memphis won the AV round, it becomes the first focus.

      • Round 1: Memphis is the focus. The voters near Memphis all vote to terminate the loop with Memphis as the final winner, and do not vote for any other, lesser cities. All the voters near any of the other three cities have Memphis as their last choice, so they all vote for all three of the other cities. The vote count is: 42% of the vote for loop termination with Memphis as final winner, 58% for each of Nashville, Knoxville, and Chattanooga. Result. The loop continues because 42% is not a majority. Since the focus was defeated (by all three other alternatives) the focus must change. The three-way tie under both the moderate winner rule and the history score rule is a bit unusual, but the tie-resolution rule is clear.

      The tie resolution rule says the tie goes to the earliest registered alternative, but I did not establish that order. For illustration purposes, I'm just going to show what happens in each of the three cases, starting with Nashville, then Chattanooga, then Knoxville. However, only one of these paths would be taken, based on an original registration order.

      • Round 2, Nashville: With Nashville as the focus, the Memphis voters still just vote for Memphis since Nashville is their second choice, giving Memphis 42% of the vote. The Nashville voters vote to terminate the loop with their 26%, but that is not a majority so the loop is not terminated. Since both Chattanooga and Knoxville are both rated above Nashville (and Memphis) both these voter groups vote for both cities, giving Chattanooga and Knoxville 32% of the vote. Since no alternative defeated Nashville, it is a Condorcet winner and continues as focus.

      We pause here and switch to the Chattanooga branch:

      • Round 2 Chattanooga: With Chattanooga as the focus, the Memphis voters are still the only group voting for Memphis (42% again), but this time they are also voting for Nashville as better than Chattanooga focus, so Nashville gets a total of 68% of the vote. The Chattanooga voters vote to terminate the loop, but with only 15% of the vote, the loop continues. Knoxville is also not getting support from any other group so it also only gets its base support of 17%. Chattanooga has been defeated by Nashville, so the loop continues. There is only one option for the focus, so the next focus will be Nashville.

      • Round 3 Chattanooga: With Nashville following Chattanooga as the focus, the vote counts are the same as with the Nashville branch (just one round later). Memphis gets its 42%, Nashville votes to terminate but only gets its base 26% of the vote. Chattanooga and Knoxville each support both, so they each get 32%. Net result is continuation with Nashville remaining as the focus due to its being a Condorcet winner.

      We pause here to see how Knoxville goes.

      • Round 2 Knoxville: With Knoxville as the focus, Memphis is voting for itself, Nashville and Chattanooga. Memphis still only gets its base of 42%, but Nashville and Chattanooga both do much better. Nashville votes for both itself and Chattanooga, and ends up with 68% of the vote. Chattanooga only votes for itself, but with support from both Memphis and Nashville, its total end up at 83%. Knoxville votes to terminate, but without other support it ends up with 17%. The loop continues. The possible choices for the next focus are Nashville with 68% and Chattanooga with 83%. The moderate winner rule picks Nashville, as closest to the desired vote share of 66.5%. The history period is: 2 (Knoxville) and 1 (Memphis), giving history scores for Nashville: (2,0,2), and Chattanooga: (2,0,2), which are identical and so do not override the moderate winner choice. So the next focus is Nashville.

      • Round 3 Knoxville: With Nashville following Knoxville as the focus we have the exact same situation as the other two branches. Memphis gets 42%, Nashville votes to terminate with 26%, Chattanooga and Knoxville have their mutual support group and each get 32%. The loop continues, with Nashville continuing as the focus due to its being a Condorcet winner.

      At this stage in the process, things can go one of two ways. Nashville is a recognized Condorcet winner so is clearly the best alternative currently proposed. If another 24% plus one voters decide Nashville is good enough, the barest majority will terminate the loop and the capital will be in Nashville. It may not happen in a single round, and there can certainly be efforts to change voter opinions and get another outcome. But Nashville is now confirmed to be the best option among the four initial alternatives.

      Yet SAVE is an iterative process, and one of the most significant opportunity iteration enables is the possibility to add to the choices. The brief for this example social choice includes the explicit statement that "everyone wants to live as near to the capital as possible." It also includes an outline map of Tennessee with the four cities marked in their relative locations. That map encodes data that could change the outcome of this social choice.

      I've recreated the map and drawn three indifference curves, centered in each of Memphis, Chattanooga, and Knoxville, and each passing through Nashville. Any location inside a circle is preferred by the voters near its center over Nashville. I've placed a dot at a location that is preferred over Nashville by all three of the other groups.

      state-TN-modified-1-500x125.png

      The addition of location A results in the revised preference profile shown here:

      |----------------+----------------+------------------+----------------|
      | 42% of voters  | 26% of voters  | 15% of voters    | 17% of voters  |
      | near Memphis   | near Nashville | near Chattanooga | near Knoxville |
      |----------------+----------------+------------------+----------------|
      | 1. Memphis     | 1. Nashville   | 1. Chattanooga   | 1. Knoxville   |
      | 2. Location A  | 2. Location A  | 2. Location A    | 2. Chattanooga |
      | 3. Nashville   | 3. Chattanooga | 3. Knoxville     | 3. Location A  |
      | 4. Chattanooga | 4. Knoxville   | 4. Nashville     | 4. Nashville   |
      | 5. Knoxville   | 5. Memphis     | 5. Memphis       | 5. Memphis     |
      |----------------+----------------+------------------+----------------|
      

      With the addition of location A, we go back to a single flow as round 4.

      • Round 4 rejoined: The focus is Nashville again, but the addition of location A causes a change in the vote counts. Memphis votes for itself an A because both are better than Nashville. Nashville's vote is again 26% for loop termination. Chattanooga votes for itself, A and Knoxville. Knoxville votes for itself, Chattanooga, and A. So we have 26% for loop termination, meaning continue. Memphis gets 42%, Chattanooga gets 32%, Knoxville gets 32%, and the new location A gets 74%. As A has a majority, the focus must change, and as it is the only choice, A will be the next focus.

      • Round 5: With A as the focus, Memphis votes for Memphis, Nashville votes for Nashville, Chattanooga votes for Chattanooga, and Knoxville votes for Knoxville and Chattanooga. Vote counts are Memphis 46%, Nashville 26%, Chattanooga 32%, and Knoxville 17%. No votes for loop termination. A is a Condorcet winner and will remain the focus for round 6.

      Since new alternatives are allowed again, we get another proposal of location B.

      state-TN-modified-2-500x125.png

      Revised preference profile with A and B:

      |----------------+----------------+------------------+----------------|
      | 42% of voters  | 26% of voters  | 15% of voters    | 17% of voters  |
      | near Memphis   | near Nashville | near Chattanooga | near Knoxville |
      |----------------+----------------+------------------+----------------|
      | 1. Memphis     | 1. Nashville   | 1. Chattanooga   | 1. Knoxville   |
      | 2. Location B  | 2. Location B  | 2. Location A    | 2. Chattanooga |
      | 3. Location A  | 3. Location A  | 3. Knoxville     | 3. Location A  |
      | 4. Nashville   | 4. Chattanooga | 4. Nashville     | 4. Nashville   |
      | 5. Chattanooga | 5. Knoxville   | 5. Location B    | 5. Location B  |
      | 6. Knoxville   | 6. Memphis     | 6. Memphis       | 6. Memphis     |
      |----------------+----------------+------------------+----------------|
      
      • Round 6: Focus is A, and the new alternative at B has been proposed. Memphis supports itself and B. Nashville supports itself and B. Chattanooga supports itself. Knoxville supports itself and Chattanooga. No votes for termination (A). Memphis gets 42%. Nashville gets 26%. Chattanooga gets 32%. Knoxville gets 17%. B gets 68%, and the focus. Since B is a new focus, no new proposals are allowed.

      • Round 7: With B as focus, Memphis supports itself. Nashville supports itself. Chattanooga supports itself, A, Knoxville, and Nashville. Knoxville supports itself, Chattanooga, A, and Nashville. No votes for loop termination. Votes are: Memphis: 42%, Nashville: 58%, Chattanooga: 32%, Knoxville: 32%, A: 32%. The loop continues, Nashville gets the focus as the only choice. Since Nashville is a repeat, new proposals are allowed. Note that we now have a cycle: Nashville, A, B, Nashville.

      This time we get a compromise proposal: Location C is the average of Nashville, A and B.

      state-TN-modified-3-500x125.png

      Revised preference profile with A and B:

      |----------------+----------------+------------------+----------------|
      | 42% of voters  | 26% of voters  | 15% of voters    | 17% of voters  |
      | near Memphis   | near Nashville | near Chattanooga | near Knoxville |
      |----------------+----------------+------------------+----------------|
      | 1. Memphis     | 1. Nashville   | 1. Chattanooga   | 1. Knoxville   |
      | 2. Location B  | 2. Location C  | 2. Location A    | 2. Chattanooga |
      | 3. Location C  | 3. Location B  | 3. Knoxville     | 3. Location A  |
      | 4. Location A  | 4. Location A  | 4. Location C    | 4. Nashville   |
      | 5. Nashville   | 5. Chattanooga | 5. Nashville     | 5. Location C  |
      | 6. Chattanooga | 6. Knoxville   | 6. Location B    | 6. Location B  |
      | 7. Knoxville   | 7. Memphis     | 7. Memphis       | 7. Memphis     |
      |----------------+----------------+------------------+----------------|
      
      • Round 8: Nashville is again the focus, and C has been proposed. Memphis supports itself, B, C, and A. Nashville supports loop termination. Chattanooga supports itself, A, Knoxville, and C. Knoxville supports itself, Chattanooga, and A. Votes are: Memphis: 42%, loop termination (Nashville): 26%, Chattanooga: 32%, Knoxville: 32%, A: 74%, B: 42%, and C: 57%. Loop continues. Two choices for next focus. Moderate winner rule selects C. History period is: 8 (Nashville), 7 (B), and 6 (A). A was active through the whole history period, with score is (2,-18,1). C has only been active in one round, so its score is (1,0,1). The history score choice replaces the moderate winner choice, so A will be the next focus. New proposals are allowed, but none are presented.

      • Round 9: A is focus with no new proposals. Memphis supports itself, B, and C. Nashville supports itself, C, and B. Chattanooga supports itself. Knoxville supports itself and Chattanooga. Votes are: Memphis: 42%, Nashville: 26%, Chattanooga: 32%, Knoxville: 17%, A: no votes for loop termination, B: 68%, and C: 68%. Loop continues. Two choices for next focus, both with 68%. Moderate winner rule chooses B under the tie-breaking rules. History period is: 9 (A), 8 (Nashville), 7 (B). B was active for the whole history period with score (2,-8,1). C has only been active for two rounds so its history score of (2,0,2) counts as a tie, so B will be the next focus. New proposals are allowed, but none are presented.

      • Round 10: B is focus with no new proposals. Memphis supports itself. Nashville supports itself, and C. Chattanooga supports itself, A, Knoxville, C, and Nashville. Knoxville supports itself, Chattanooga, A, Nashville, and C. Vote counts are: Memphis: 42%, Nashville: 58%, Chattanooga: 32%, Knoxville: 32%, A: 32%; B: no votes for loop termination, and C: 58%. Loop continues. Two chooses for next focus, both with 58%. Moderate winner rule picks Nashville using the tie-breaking rule. History period is: 10 (B), 9 (A), 8 (Nashville). Nashville's history score is: (2,-31,1), while C's history score is (3,0,3) and fully active. The better history score overrules the moderate winner rule. C is the next focus. Since C is not a repeat, no new proposals are allowed.

      • Round 11: C is focus, no new proposals. Memphis supports itself and B. Nashville supports itself. Chattanooga supports itself, A, and Knoxville. Knoxville supports itself, Chattanooga, A, and Nashville. Votes are: Memphis: 42%, Nashville: 43%, Chattanooga: 32%, Knoxville: 32%, A: 32%, B: 42%, and C: no votes for termination. The loop continues with C remaining the focus as a Condorcet winner.

      I've not terminated the loop because it could easily continue (see below in the region between Memphis and Chattanooga, below C). SAVE will only stop when a supermajority of the voters ask for it. The context of this example does not allow me to fully justify termination. The decision to vote for loop termination is an individual choice, and is a trade-off between the current focus alternative and the potential gain or loss of continuing.

      state-TN-modified-4-500x125.png

      The purpose of this example is simply to run SAVE in the same context as other voting systems to see how it compares. On the plus side, SAVE gets good results when it runs long enough, uses direct voter input to resolve majority cycles (thus handling Arrow's problems with cycles), and does so in a straightforward manner in terms of Gibbard-Satterthwaite. On the minus side, SAVE takes many more rounds.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      @Jack-Waugh said in Serial Approval Vote Election:

      I bring here just a partial analysis of the code for now, because I am feeling a bit fatigued, and also suspecting you may want to revise.

      At least two rounds of voting are required to elect anyone: the initial round, which has no focus, followed by at least one round based on a focus.

      This is correct. In simulations the fastest I've seen is 4 rounds, while the slowest was around 50 rounds. The average is around 20 rounds. However, the bulk of the convergence to the center happens in around 10 rounds. The voter-agents are normally set to be slow on voting for termination.

      So in summary, termination happens exactly when the focus candidate has approvals from at least half the ballots and strictly more count of approvals than any other candidate. In this case, there are no more focus rounds, the election is concluded, and the focus candidate wins the election.

      Correct. For termination to occur, there must be at least majority acceptance (approval is not quite the right word), and if there are any other alternatives that are preferred over the focus by a majority, the termination must be by a super-majority. For termination, more voters must vote to accept the focus than vote for any other alternative.

      Looking at a breakdown into cases:

      • If focusOptions is empty, isCondorcetWinner will remain at true after the loop completes all zero iterations, so we will keep the same focus for the subsequent round of voting (I am not weighing in right now on whether this has anything to do with the conventional notion of "Condorcet winner" despite your naming of this variable).
      • Otherwise, if we have an odd number of ballots, the code will clear isCondorcetWinner and take the "else", to be analyzed below.
      • Otherwise, if all of the focusOptions received approvals from exactly half of the ballots, isCondorcetWinner remains high and so we keep the focus into the next round.
      • Otherwise, we take the "else".

      I use the term Condorcet winner because it seems to apply. Voters are asked if they prefer any of the non-focus alternatives over the focus F. Assuming either honesty or strategy, the number of votes for a non-focus alternative A indicates how the vote would be in a simple majority one-on-one race between A and F. If no A gets more than tieCnt votes, that means F is a Condorcet winner for this set of alternatives.

      The goal of changing the focus alternative is to improve the quality of the focus, making it more likely that some future round F will be a Condorcet winner.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      @Jack-Waugh said in Serial Approval Vote Election:

      I would expect that for a candidate to receive approvals from exactly half the ballots (in a large election) would be as rare as a polling place being struck by lightning. It seems odd that the electoral procedure would be designed to look out for such a case and treat it specially.

      While I was developing SAVE, I intentionally set up electorates with even numbers of agents. In the early rounds, ties are rare. But as the focus moves toward the conceptual middle of the electorate ties and near-ties become very probable.

      Just to provide a general idea of the simulation results, a SAVE run with limited agents would usually have an electorate size of 250, with 10 initial alternatives and would run for an average of 20 rounds. During the run, the number of alternatives would increase by about 60 alternatives, and 4 Condorcet winners would be found and later defeated by newly introduced alternatives. The strategy voter-agents used to create new alternatives is to split the difference between the focus and a losing alternative they prefer over the focus. The idea is to try to pick up half the margin.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      (This is in reply to the question about tieCnt.)

      @Jack-Waugh, the code is as I intended, but I can see where there might be some confusion. The tally[lastFocusIdx] value is the number of votes for termination of the process. In early rounds that is usually a very small fraction of the electorate. The ballotCnt / 2.0 value is half of the ballots cast in a round, and when a non-focus alternative A gets that number of votes it means the electorate is equally divided between the number of people who prefer A over the focus F, and those who prefer F over A.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      (This is in reply to the question of the reader imagining an interaction between the people and the code.)

      @Jack-Waugh, basically yes. To test the process, I have simulated electorates using spatial preferences, with varying weights on the various issues. Each voter-agent judges alternatives by the distance from their individual ideal points. That way the agents can both rank and score any proposed alternative. They can also propose new alternatives and decide when to try for something better and when to accept the current focus alternative as good enough for now.

      While the framework I have for creating electorates and running simulated elections for different voting systems is reasonable for doing comparisons under controlled conditions, the voter-agents are strictly mechanical in their actions. That makes it difficult to extrapolate real voter behavior. There are far too many social interactions that come into play once we start working with choice systems with iterative input. Real voters can persuade each other and be persuaded. We can also use more sophisticated methods for proposing new alternatives, and can introduce new issues into the collective, vote-moderated discussion that SAVE enables. SAVE is a tool that may potentially help in uniting us and enabling us to be our collective best. But it can only do that if we use it. Which means a lot of input from voters, i.e. us.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      @Jack-Waugh, @multi_system_fan, here is the text of a JavaScript file with the functions to implement the SAVE focus selection routines. My problems with JavaScript are due more to being highly distractable in addition to the differences between expository code (what this should be), production code (what I would write for an actual system implementing SAVE with users), and exploratory code (what I wrote while developing and exploring different possibilities for SAVE).

      The file is 322 lines, of which about 170 lines are comments and instructions. Please let me know if you have any questions. Thanks.

      /* JavaScript code for SAVE vote tally and Focus Selection
      
         Serial Approval Vote Election
      
         Users of this code are expected to supply a list of "alternatives" to
         "voters" in an electorate, and collect one "ballot" from each voter.
         Said ballot is a list of binary values corresponding to the items in the
         list of alternatives.
      
         This code does not deal with the alternatives list at all.  It is
         focused on the list of ballots, which is the input for each round.
         These ballots determine the entire process.
      
         Data from electorate: Just to show the structure of the data.  This
         particular election apparently starts with 3 voters and 7 alternatives.
         Note: the voters care about the details of the alternatives, but the
         SAVE algorithm only cares about the alternative indices.
      
            alternatives = new Array(7);
            var votera = [0, 1, 1, 0, 0, 0, 1];
            var voterb = [0, 0, 1, 0, 1, 0, 0];
            var voterc = [0, 1, 1, 0, 1, 1, 0];
            ballots = [votera, voterb, voterc];
      
         Running a SAVE procedure:
      
         First, voters are presented with the initial list of alternatives, and
         cast approval votes for some subset of those alternatives.  Those
         ballots are collected into the ballots array.
      
         These operations are then called:
      
           Focus[currentRound] = -1;
           ballotCount[currentRound] = ballots.length;
           historyRecord[currentRound] = saveTally(ballots);
           Focus.push(firstFocusSelection(historyRecord[0]));
      
         This sets up some records for the rest of the run, determines the winner
         of the initial round, and sets that winner to be the focus alternative
         for the next focused approval vote round.
      
         The ballots for subsequent rounds will still have binary responses for
         each alternative, but the questions will be different.  One of the
         alternatives is presented as the focus alternative (or just the focus).
         A vote for the focus is a vote to terminate the loop with the focus as
         the final winner.  A vote for a non-focus alternative indicates the
         voter prefers that alternative over the current focus.
      
         The SAVE loop has the following steps:
             while (true) {
               currentRound = currentRound + 1;
      
           Voters given: alternatives, Focus[currentRound], then
           Election process collects ballots for currentRound.
           The ballot processsing then does:
      
               ballotCount[currentRound] = ballots.length;
               historyRecord[currentRound] = saveTally(ballots);
               if (loopTerminationTest()) {
                 // Loop terminated.  Move on to Mandate round.
                 break; };
               selectNextFocus();
      
           Check if new alternatives are allowed for next round by doing:
               if (allowNewAlternatives()) {
                 // allow voters to propose new alternatives.
               };
             };  // end of while
      
         After loop termination, the last focus alternative has been determined
         to be the overall winner.  The last step is to run a final round under
         AV rules to explicitly measure the mandates of the overall winner and
         all other alternatives.
       */
      
      /*
         Global variables for VT-SAVE-tally
       */
      
      var alternatives = new Array(0); // List of active alternatives
      var ballots = new Array(0);      // Input: cast ballots in a round
      var currentRound = 0;           // The current round.
      // History records, with index corresponding to round.
      var Focus = new Array(1);       // focus alternative index, by round
      var ballotCount = new Array(1); // total ballots, by round
      var historyRecord = new Array(1); // vote tally list, by round
      // Variables shared between functions
      var historyRounds;              // list of rounds in the history period
      var tieCnt = 0;                 // number of votes for a tie
      var maxVotes = 0;               // maximum vote count seen
      var focusOptions = new Array(0); // idx list of potential Focus alternatives
      
      /* Functions:
      
         Total all ballots for a round.
      
         Votes for alternatives are simply added, including the explicit votes
         for the focus alternative.  (AV tally).
       */
      function saveTally() {
          var altCnt = ballots[0].length;
          var voteTotals = new Array(0);
          for (var i=0; i < altCnt; i++) {
              voteTotals.push(0);}
          var voterCnt = ballots.length;
          for (var ballotIdx = 0; ballotIdx < voterCnt;
               ballotIdx ++) {
              for (var altIdx = 0; altIdx < altCnt;
                   altIdx++) {
                  if (ballots[ballotIdx][altIdx] != 0) {
                      voteTotals[altIdx]++ ; }; }; };
          return voteTotals; };
      
      /* Select the first Focus alternative
        
         The first focus is simply the AV winner of the first round, which has no
         focus.
       */
      function firstFocusSelection() {
          var tally = historyRecord[0];   // First round tally
          var maxVotesSeen = -1;
          var focusIndex = -1;
          var altcount = tally.length;
          for (var idx = 0; idx < altcount; idx += 1) {
              if (maxVotesSeen < tally[idx]) {
                  maxVotesSeen = tally[idx];
                  focusIndex = idx; }; };
          return focusIndex; };
      
      /* Test for loop termination
        
         Loop termination happens when the focus alternative has a strict
         majority and more votes than any other alternative.
       */
      function loopTerminationTest() {
          var ballotCnt = ballotCount[currentRound];
          var focusIdx = Focus[currentRound];
          var tally = historyRecord[currentRound];
          var allDone = true;
          var focusVotes = tally[focusIdx];
          if (focusVotes <= ballotCnt / 2.0) {
              allDone = false; }
          else {
              for (var idx = 0; idx < tally.length; idx++) {
                  if (idx != focusIdx && tally[idx] >= focusVotes) {
                          allDone = false; }; }; };
          return allDone; };
      
      /* Select Moderate Winner for next focus:
      
         The moderate winner is the alternative that beat the focus by the most
         moderate amount.  This function determines that alternative and sets it
         to be the focus for the next round.  This routine will never identify a
         tied alternative as the moderate winner.
       */
      
      function myAbs (num) {
          if (num >= 0.0) {
              return num; }
          else {
              return 0.0 - num }; };
      
      function selectModerateWinner() {
          var desiredVotes = (maxVotes + tieCnt) / 2.0;
          var bestScore = null;
          var bestVotes = 0;
          var bestIdx = -1;
          var oScore = 0;
          var oVotes = 0;
          for (var oIdx=0; oIdx < focusOptions.length; oIdx++) {
              aIdx = focusOptions[oIdx];
              oVotes = historyRecord[currentRound][aIdx];
              oScore = myAbs(oVotes - desiredVotes);
              if (bestScore == null ||
                  oScore < bestScore ||
                  (oScore == bestScore && oVotes > bestVotes)) {
                  bestScore = oScore;
                  bestVotes = oVotes;
                  bestIdx = aIdx; }; };
          Focus[currentRound + 1] = bestIdx; };
      
      /* Determine and return the history score for an alternative:
        
         This history score has four components.  The first three are the
         wins+ties count, the vote deficit, and the wins count.  The fourth
         component is the number of rounds the alternative was active during the
         history period, and is used to make sure new alternatives do not get a
         benefit of no vote deficit by simply not being active during the full
         history period.
        
         Prior focuses count has having tied themselves.
       */
      function returnHistoryScoreList (idx) {
          var historyScore = new Array(0, 0.0, 0, 0);
          // historyRounds is a list of rounds
          // each pass should set tally to a list of ballot totals
          // idx (an arg) is the index of an alternative
          // idxVotes should be the votes received by the idx alternative in the tally
          for (var hIdx = 0; hIdx < historyRounds.length; hIdx++) {
              var rIdx = historyRounds[hIdx];
              var tally = historyRecord[rIdx];
              if (tally[idx] ==  undefined) {
                  continue; };
              var idxVotes = tally[idx];
              if (idx == Focus[rIdx]) {
                  historyScore[0]++
                  historyScore[3]++
                  continue; };
              tieCnt = ballotCount[rIdx] / 2.0;
              if (idxVotes >= tieCnt) {
                  historyScore[0]++; };
              if (idxVotes - tieCnt < 0) {
                  historyScore[1] = historyScore[1] + idxVotes - tieCnt; };
              if (idxVotes > tieCnt) {
                  historyScore[2]++; };
              historyScore[3]++; };
          return historyScore; };
      
      /* Select the alternative with the best history score for the next focus:
        
         The history score measures an alternatives performance against the
         focuses from the recent history period.  This period is the longest
         continuous series of rounds including the most recent round in which no
         focus alternatives are duplicated.
        
         The history score for an alternative that beats or ties the current
         focus tracks the number of wins, ties, and losing margins during recent
         history.  When comparing two history scores, the most important number
         is the wins+ties count, followed by the vote deficit, then the pure wins
         count.  When two alternatives have been active for a different number of
         rounds during the history period, only the wins+ties count is considered.
        
         All comparisons are done in the order of the alternatives list.  Later
         alternatives must be strictly better to replace an earlier alternative.
        
         Note: this code is run after selectModerateWinner has already set an
         alternative for the next focus.  This code starts with the history score
         for the moderate winner and will only displace the MW if there is an
         alternative with a strictly better history score.
       */
      function selectHistoryScoreWinner() {
          var duplicateCheck = new Object();
          historyRounds = new Array(0);
          for (var rIdx = currentRound; rIdx > 0; rIdx--) {
              var aIdx = Focus[rIdx];
              if (duplicateCheck["a" + aIdx] == undefined) {
                  duplicateCheck["a" + aIdx] = 1;
                  historyRounds.push(rIdx); }
              else { break; }; };
          // historyRounds is now a list of the round indices for the
          // history period.  Look to replace the moderate Winner.
          // MW is checked against itself but no change occurs.
          var bestIdx = Focus[currentRound + 1];
          var bestHS = returnHistoryScoreList(bestIdx);
          for (var foIdx = 0 ; foIdx < focusOptions.length ; foIdx++) {
              var foHS = returnHistoryScoreList(focusOptions[foIdx]);
              if (foHS[3] != bestHS[3]) {
                  if (foHS[0] > bestHS[0]) {
                      bestHS = foHS;
                      bestIdx = focusOptions[foIdx]; };
                  continue; };
              if (foHS[0] > bestHS[0] ||
                  (foHS[0] == bestHS[0] && foHS[1] > bestHS[1]) ||
                  (foHS[0] == bestHS[0] && foHS[1] == bestHS[1] &&
                   foHS[2] > bestHS[2])) {
                  bestHS = foHS;
                  bestIdx = focusOptions[foIdx]; }; };
          Focus[currentRound + 1] = bestIdx; };
      
      /* Select the next focus
        
         This code selects the next focus during the SAVE focused approval vote
         iteration.  There are four ways this can occur.  If the most recent
         focus is a Condorcet winner, it remains as focus for the next round.  If
         it is not a Condorcet winner, the focus MUST change.  If there is only
         one possible alternative, it is selected immediately as the next focus.
         If there are multiple options, the moderate winner alternative is
         selected first, and then possibly replaced by the alternative with the
         best history score.
        
         This code first determines the options for replacing the focus, which
         includes all alternatives that received votes from at least half the
         electorate.
       */
      function selectNextFocus () {
          var ballotCnt = ballotCount[currentRound];
          var lastFocusIdx = Focus[currentRound];
          var tally = historyRecord[currentRound];
          focusOptions = new Array(0);
          tieCnt = ballotCnt / 2.0;
          maxVotes = 0
          for (var idx = 0; idx < tally.length; idx++) {
              if (idx != lastFocusIdx && tally[idx] >= tieCnt) {
                  focusOptions.push(idx);
                  if (idx != lastFocusIdx && tally[idx] > maxVotes) {
                      maxVotes = tally[idx]; }; }; };
          var isCondorcetWinner = true;
          for (var idx = 0; idx < focusOptions.length; idx++) {
              if (tally[focusOptions[idx]] > tieCnt) {
                  isCondorcetWinner = false; }; };
          if (isCondorcetWinner) {
              Focus[currentRound + 1] = Focus[currentRound]; }
          else if (focusOptions.length == 1) {
              Focus[currentRound + 1] = focusOptions[0]; };
          if (Focus.length == currentRound + 1) {
              selectModerateWinner();
              selectHistoryScoreWinner(); }; };
      
      /* Are new alternatives allowed this round?
        
         New alternatives are allowed to be proposed whenever the focus
         alternative is a repeat.  I.e. whenever the current focus is either a
         Condorcet winner or part of a top majority cycle.
       */
      function allowNewAlternatives() {
          var allow = false;
          for (var idx = 0; idx < currentRound + 1; idx++) {
              if (Focus[idx] == Focus[currentRound + 1]) {
                  allow = true; }; };
          return allow; };
      
      // End
      
      
      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      Thank you, @multi_system_fan, for your response. A good part of why I'm posting here (as opposed to trying to get an article published in a journal), is to get feedback on whether SAVE really could be as transformative as I think it might be. Your kudos are most welcome.

      However, your critical remarks are even more welcome because I am driven to get SAVE out into the real world in active use, and so far my writing has not been up to the task. I welcome any and all question and criticisms because if I'm wrong it gives me the opportunity to correct my thinking and if I'm right but did not express myself clearly, it gives me a chance to correct my writing so the next people who read about SAVE won't stumble over my earlier lack of clarity.

      My next post, prompted by @Jack-Waugh, was going to be the code for the tally process and the selection of the next focus. That is still in the works, but it is delayed because of the desire to write it in JavaScript. (The code started out in NetLogo, then I moved it to Python because the testing environment is better. JavaScript will make it possible to get working examples of the code accessible in a browser without having to over-burden a web-server, so it is a good move.) But since I don't yet know JavaScript, the conversion is taking longer than I had hoped.

      So, while the tally code and logic should be up soon, I'll address your other points now.

      a) The phrase "focused approval" is how I think of the process, but you are correct that it could also be thought of as a series of pairwise comparisons. The difference is a matter of perspective. If you look at the ballot as a series of questions, it is a series of pairwise comparisons.

      However, if you think of the ballot as a way of eliciting voter preferences and you assume that voters could do the work of placing the alternatives in an ordered list, the term "focused approval" makes a bit more sense. Given a preference order, filling out an AV ballot is just a matter of drawing the line between what is approved and what is not approved. Once that line is drawn, every alternative above it is approved, and the rest is not.

      What is happening with a focused approval vote, (and I got the idea from W.D. Smith's range voting paper from 2000), is a strategic AV ballot given a preference order and the assumption that the focus alternative is predicted to win. Under those circumstances, a strategic voter who was okay with that would set their approval threshold so as to approve the focus alternative and everything better. Similarly, a strategic voter who was not okay with the focus alternative would set their approve threshold to just exclude the focus while still voting for everything better because that would maximize the chances of a better outcome even if the voter did not really approve of some of the alternatives they were voting for.

      As to changing the term, the "approval" part comes from AV and is accurate in terms of the way the ballots are aggregated. Any voting technology that can handle AV ballots can be used for SAVE, and I think AV is a very good system if you are limited to one round. I'm currently partial to the "focused" part, but I initially used "targeted approval" and have considered and rejected "front-runner approval". Another option is "strategic approval". My main objection to changing the name is changing the term in all the code and tests, but that's more friction than objection and if there's a better term now is a good time to make the change. Any suggestions?

      b) The mandate round is a direct and personal response to US presidential politics and to statements made by G.W. Bush to the effect that his election (with the support of just a bit over 25% of the electorate in a low-turnout election) constituted an overwhelming mandate for all his policies, including those that were never mentioned by him in his campaign.

      There are certainly elections in which the mandate round is neither needed nor desired, and I generally consider it optional. However, having it there serves two purposes. There are situations in which knowing the strength of the mandate of the final result and that of the other alternatives will make a difference in what happens after the election. For example, a mandate round will differentiate between a common ground that is unifying, and a weak compromise that still needs to be sold to the electorate. For those situations, actually measuring the mandates is important even if it doesn't change the outcome.

      The other purpose is to clearly differentiate between voting for the best collective outcome (the final focus alternative) and actually supporting it. In my mind, this is important during times of social change. I might vote for a compromise I don't fully support, and then continue to work to change hearts and minds so the next time the moderate result is a little closer to my radical position. Under those circumstances, having a mandate round can be very useful. Yet even when knowing the mandates is not useful in itself, having the mandate AV round be separate from the focused rounds emphasizes the difference between finding a working compromise for the whole collective and clearly holding ones own opinions and preferences.

      So yes, the mandate round is optional. But at this time I think it really should be included in the SAVE discussions, even if it isn't going to be used in all SAVE procedures.

      c) In my mental models the "rest" include those alternatives I'm just not familiar with and those I only know a little about. For example, in 2007, my "rest" included both Tommy Thompson and Barak Obama. Over time, Obama left that category, while Thompson remains in it. If we widen the scope to all collective choice processes (for which SAVE is designed), we still start the process with categories of alternatives, some good, some not good, and some not yet known or considered, i.e. the rest. If we are using SAVE (or some SAVE-like system) we have the time to understand our choices, learn about other alternatives, and find or create an alternative that truly reflects our collective preferences. SAVE should also help us identify alternatives whose support is changing, providing some guidance on which of the "rest" alternatives worth further consideration.

      d) I agree with you that over time our preferences do become more nuanced. I disagree with the idea of introducing more finely resolved scoring in SAVE for a few reasons. My issue with anything beyond binary choices is based on Arrow's possibility theorem for two alternatives (yes, we can choose between two alternatives), Arrow's general possibility theorem (a.k.a. Arrow's impossibility theorem, which points out majority cycles are possible when there are three or more alternatives), and the Gibbard-Satterthwaite theorem (stating any system with more than two choices is either manipulable or has a dictator).

      In essence, and this deserves a longer discussion, SAVE is designed to get around the problem in AIT (majority cycles) by exposing them and giving voters choices regarding what to do about them. Those choices include both defeating the cycle by proposing an alternative that is collectively preferred over every member of the cycle thus making it irrelevant, and breaking the cycle through an explicit and overwhelming choice.

      SAVE doesn't exactly get around Gibbard-Satterthwaite, but instead embraces it. SAVE is facilitating a choice from among multiple alternatives. GST declares that is manipulable. SAVE responds iteratively by proposing the focus alternative and guiding voters to vote in the one way that most strongly reflects their individual preferences. If the manipulated vote fails to select this particular focus, SAVE presents another choice: usually with another focus alternative. And again asks voters to manipulate their naive approval vote into a more sophisticated focused approval vote. The iteration continues until the manipulated vote supports the selection of the focus alternative.

      SAVE goes beyond these impossibility results by embracing their truth and working with the underlying reality. But as far as I can tell, this only works with binary choices. I fear that adding multiple levels of support would cause exactly the problem you suggest and introduce unwanted tactical strategies.

      I think this post is long enough (possibly too long), and anything further I might write would probably depend on a better understanding of exactly how SAVE determines the next focus. So for me, it's back to JavaScript. 🙂

      Again, thank you for your kudos and critiques. Please let me know if I've answered your concerns, and more importantly if I haven't.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Serial Approval Vote Election

      @Jack-Waugh, I apologize for my lack of clarity. I don't think it's just you. I have two responses about the tally. Hopefully one or the other will make things clearer.

      • The SAVE tally as parallel pairwise majority decisions.

      The pre-iteration round is just an approval vote among the initial alternatives, with the winner becoming the first focus alternative. In each subsequent focus round the ballot input is tallied exactly like an AV round, but the vote counts are interpreted differently. For each non-focus alternative A, the vote count is considered A's vote in a majority decision between A and the focus F. If A's vote count is at least half the ballots from this round, A is a potential replacement for F (assuming there is a next round and F is not a Condorcet winner). If F's vote count is strictly more votes than any non-focus alternative and is more than half the ballots cast, F becomes the final winner. Otherwise, there will be another round and the focus rules above will be used to determine the next focus.

      • The SAVE tally as a series of strategic approval vote rounds.

      This interpretation of SAVE considers it just a series of AV rounds. The first AV round has no expectations of who the winner might be, so voters set individual thresholds of approval. During the iteration, the applicable focus alternative is treated as the expected winner as if it were determined by a very good poll, and voters fill out their ballots strategically, approving of all alternatives better that the focus, and approving of the focus only when they want the process to terminate. The iteration continues until the current focus both gets a majority decision and is the outright AV winner.

      In both interpretations, once the SAVE winner is determined there is a final AV round with individually determined thresholds to measure the mandates for each alternative.

      posted in New Voting Methods and Variations
      T
      tec
    • RE: Multiwinner vs. Single-winner

      @Jack-Waugh, I think that would be welcome.

      posted in Request for Features
      T
      tec