election-methods@mailman.electorama.com

Technical discussion of election methods

View all threads

Re: [EM] Quick and Clean Burial Resistant Smith

KM
Kristofer Munsterhjelm
Tue, Jan 11, 2022 10:44 PM

On 11.01.2022 21:32, Daniel Carrera wrote:

On Mon, Jan 10, 2022 at 11:27 AM Kristofer Munsterhjelm
<km_elmet@t-online.de mailto:km_elmet@t-online.de> wrote:

 On 10.01.2022 01:14, Daniel Carrera wrote:

No, I understood that part. However, looking at your pseudocode again, I
just realized that you choose the random ballot once per strategy_iters
and reuse that ballot for every single voter that did not prefer w_A:

for 1...strategy_iters:
        e_B = e_A
        b_B = random preference order
        for every ballot B in e_B:
                if B ranks c_k ahead of w_A:
                        B = b_B
        w_B = winner of e_B according to method M
                if w_B = c_k:
                        then strategy successful

That makes a lot more sense now. Now I see what the paper means when it
says that it gets every voter in the strategic coalition to cast the
same ballot. When I read your first pseudocode I thought it meant that
every single voter with c_k > w_A would draw a different random
permutation. So you see why I was confused and why it didn't work. So I
fixed this, and fixed other bugs. I also followed your advice and
switched to "impartial culture".

Oh, I don't do that; I make each strategic voter's ballot a different
random permutation. I was just saying that if you would like to be more
true to JGA's results, then he chose one common ballot for every
strategist, and you should do the same.

My impartial culture results are slightly higher than JGA's, which I am
guessing comes from that I don't restrict the strategic voters in that way.

(In addition, impartial culture is not particularly realistic, but it
makes for a good test case for reproducibility.)

-km

On 11.01.2022 21:32, Daniel Carrera wrote: > On Mon, Jan 10, 2022 at 11:27 AM Kristofer Munsterhjelm > <km_elmet@t-online.de <mailto:km_elmet@t-online.de>> wrote: > > On 10.01.2022 01:14, Daniel Carrera wrote: > No, I understood that part. However, looking at your pseudocode again, I > just realized that you choose the random ballot once per strategy_iters > and reuse that ballot for every single voter that did not prefer w_A: > > for 1...strategy_iters: >         e_B = e_A >         b_B = random preference order >         for every ballot B in e_B: >                 if B ranks c_k ahead of w_A: >                         B = b_B >         w_B = winner of e_B according to method M >                 if w_B = c_k: >                         then strategy successful > > That makes a lot more sense now. Now I see what the paper means when it > says that it gets every voter in the strategic coalition to cast the > same ballot. When I read your first pseudocode I thought it meant that > every single voter with c_k > w_A would draw a different random > permutation. So you see why I was confused and why it didn't work. So I > fixed this, and fixed other bugs. I also followed your advice and > switched to "impartial culture". Oh, I don't do that; I make each strategic voter's ballot a different random permutation. I was just saying that if you would like to be more true to JGA's results, then he chose one common ballot for every strategist, and you should do the same. My impartial culture results are slightly higher than JGA's, which I am guessing comes from that I don't restrict the strategic voters in that way. (In addition, impartial culture is not particularly realistic, but it makes for a good test case for reproducibility.) -km
DC
Daniel Carrera
Wed, Jan 12, 2022 12:26 AM

On Tue, Jan 11, 2022 at 4:44 PM Kristofer Munsterhjelm km_elmet@t-online.de
wrote:

On 11.01.2022 21:32, Daniel Carrera wrote:

On Mon, Jan 10, 2022 at 11:27 AM Kristofer Munsterhjelm
<km_elmet@t-online.de mailto:km_elmet@t-online.de> wrote:

 On 10.01.2022 01:14, Daniel Carrera wrote:

No, I understood that part. However, looking at your pseudocode again, I
just realized that you choose the random ballot once per strategy_iters
and reuse that ballot for every single voter that did not prefer w_A:

for 1...strategy_iters:
e_B = e_A
b_B = random preference order
for every ballot B in e_B:
if B ranks c_k ahead of w_A:
B = b_B
w_B = winner of e_B according to method M
if w_B = c_k:
then strategy successful

That makes a lot more sense now. Now I see what the paper means when it
says that it gets every voter in the strategic coalition to cast the
same ballot. When I read your first pseudocode I thought it meant that
every single voter with c_k > w_A would draw a different random
permutation. So you see why I was confused and why it didn't work. So I
fixed this, and fixed other bugs. I also followed your advice and
switched to "impartial culture".

Oh, I don't do that; I make each strategic voter's ballot a different
random permutation. I was just saying that if you would like to be more
true to JGA's results, then he chose one common ballot for every
strategist, and you should do the same.

Gotcha. Since I want to compare with the paper, I'll do it the way JGA did
it. I also realized that for JGA's method you can use a combinatorics
package, so instead of running the "strategy_iters" loop you can literally
test every possible ballot. For V=99,C = 3 it's really fast, and for C = 6
it takes me 30min for 10,000 elections.

My impartial culture results are slightly higher than JGA's, which I am

guessing comes from that I don't restrict the strategic voters in that way.

Your method sounds expensive. My intuition is that it must take a great
deal of luck to find a random assignment of ballots for each voter that
changes the election result. I mean... it's an enormous parameter space:

(num candidates) x (num voters that prefer c_k > w_A)^( (num candidates)! )

What value do you use for strategy_iters? One obvious optimization is to
first check if JGA's method works before doing the expensive loop.

(In addition, impartial culture is not particularly realistic, but it

makes for a good test case for reproducibility.)

Yeah. I ignored impartial culture at first for that reason, but for the
purpose of testing the code I think it was helpful.

Cheers,

Dr. Daniel Carrera
Postdoctoral Research Associate
Iowa State University

On Tue, Jan 11, 2022 at 4:44 PM Kristofer Munsterhjelm <km_elmet@t-online.de> wrote: > On 11.01.2022 21:32, Daniel Carrera wrote: > > On Mon, Jan 10, 2022 at 11:27 AM Kristofer Munsterhjelm > > <km_elmet@t-online.de <mailto:km_elmet@t-online.de>> wrote: > > > > On 10.01.2022 01:14, Daniel Carrera wrote: > > > No, I understood that part. However, looking at your pseudocode again, I > > just realized that you choose the random ballot once per strategy_iters > > and reuse that ballot for every single voter that did not prefer w_A: > > > > for 1...strategy_iters: > > e_B = e_A > > b_B = random preference order > > for every ballot B in e_B: > > if B ranks c_k ahead of w_A: > > B = b_B > > w_B = winner of e_B according to method M > > if w_B = c_k: > > then strategy successful > > > > That makes a lot more sense now. Now I see what the paper means when it > > says that it gets every voter in the strategic coalition to cast the > > same ballot. When I read your first pseudocode I thought it meant that > > every single voter with c_k > w_A would draw a different random > > permutation. So you see why I was confused and why it didn't work. So I > > fixed this, and fixed other bugs. I also followed your advice and > > switched to "impartial culture". > > Oh, I don't do that; I make each strategic voter's ballot a different > random permutation. I was just saying that if you would like to be more > true to JGA's results, then he chose one common ballot for every > strategist, and you should do the same. > Gotcha. Since I want to compare with the paper, I'll do it the way JGA did it. I also realized that for JGA's method you can use a combinatorics package, so instead of running the "strategy_iters" loop you can literally test every possible ballot. For V=99,C = 3 it's really fast, and for C = 6 it takes me 30min for 10,000 elections. My impartial culture results are slightly higher than JGA's, which I am > guessing comes from that I don't restrict the strategic voters in that way. > Your method sounds expensive. My intuition is that it must take a great deal of luck to find a random assignment of ballots for each voter that changes the election result. I mean... it's an enormous parameter space: (num candidates) x (num voters that prefer c_k > w_A)^( (num candidates)! ) What value do you use for `strategy_iters`? One obvious optimization is to first check if JGA's method works before doing the expensive loop. (In addition, impartial culture is not particularly realistic, but it > makes for a good test case for reproducibility.) > Yeah. I ignored impartial culture at first for that reason, but for the purpose of testing the code I think it was helpful. Cheers, -- Dr. Daniel Carrera Postdoctoral Research Associate Iowa State University
KM
Kristofer Munsterhjelm
Wed, Jan 12, 2022 11:01 AM

On 12.01.2022 01:26, Daniel Carrera wrote:

On Tue, Jan 11, 2022 at 4:44 PM Kristofer Munsterhjelm
<km_elmet@t-online.de mailto:km_elmet@t-online.de> wrote:

 My impartial culture results are slightly higher than JGA's, which I am
 guessing comes from that I don't restrict the strategic voters in
 that way.

Your method sounds expensive. My intuition is that it must take a great
deal of luck to find a random assignment of ballots for each voter that
changes the election result. I mean... it's an enormous parameter space:

(num candidates) x (num voters that prefer c_k > w_A)^( (num candidates)! )

What value do you use for strategy_iters? One obvious optimization is
to first check if JGA's method works before doing the expensive loop.

Yeah, you would think so, but in practice it seems to work pretty well.
Perhaps this is an indication that if an election is susceptible to
strategy, the strategy usually is not very exotic?

I have noticed a dropoff with >10 candidates, though.

Other (obvious?) optimizations include:
- If there's a majority winner and the method passes the majority
criterion, give up directly: the election is unmanipulable.
- Trying the naive exaggeration strategy (if A was the winner, make B>A
voters vote B first and A last); requires just one check per other
candidate.
- Parallelizing on all cores: the problem is embarrassingly parallel,
so you'd get a near-perfect linear speedup.
- For IRV, storing results for up to k candidates so that you only have
to recurse down to k candidates before you know if the strategy succeeded.

Come to think of it, I imagine it's possible to cast manipulation for
various known methods as some kind of puzzle, and then use a solver to
definitely determine if a particular election is manipulable. But this
solution doesn't scale: you'd have to find out how to phrase it that way
for each method you want to speed up.

I use numiters=1000, strategy_iters=512. It takes about 10 seconds to
get the stats for IRV (for a given number of voters and candidates).
Very manipulable methods are much quicker, of course; my result for
Coombs (99 voters, 3 cddts, IC) is 0.9956-0.9973, and it takes less than
a second to check.

In case it's useful, I can also mention that I'm using the Jeffreys
interval for binomial c.i. to avoid problems with the Gaussian when the
expected value is very close to 0 or 1. Though reading the Wikipedia
article, it seems that the consensus is that the Wilson interval is better.

-km

On 12.01.2022 01:26, Daniel Carrera wrote: > On Tue, Jan 11, 2022 at 4:44 PM Kristofer Munsterhjelm > <km_elmet@t-online.de <mailto:km_elmet@t-online.de>> wrote: >> My impartial culture results are slightly higher than JGA's, which I am >> guessing comes from that I don't restrict the strategic voters in >> that way. > > > Your method sounds expensive. My intuition is that it must take a great > deal of luck to find a random assignment of ballots for each voter that > changes the election result. I mean... it's an enormous parameter space: > > (num candidates) x (num voters that prefer c_k > w_A)^( (num candidates)! ) > > What value do you use for `strategy_iters`? One obvious optimization is > to first check if JGA's method works before doing the expensive loop. Yeah, you would think so, but in practice it seems to work pretty well. Perhaps this is an indication that if an election is susceptible to strategy, the strategy usually is not very exotic? I have noticed a dropoff with >10 candidates, though. Other (obvious?) optimizations include: - If there's a majority winner and the method passes the majority criterion, give up directly: the election is unmanipulable. - Trying the naive exaggeration strategy (if A was the winner, make B>A voters vote B first and A last); requires just one check per other candidate. - Parallelizing on all cores: the problem is embarrassingly parallel, so you'd get a near-perfect linear speedup. - For IRV, storing results for up to k candidates so that you only have to recurse down to k candidates before you know if the strategy succeeded. Come to think of it, I imagine it's possible to cast manipulation for various known methods as some kind of puzzle, and then use a solver to definitely determine if a particular election is manipulable. But this solution doesn't scale: you'd have to find out how to phrase it that way for each method you want to speed up. I use numiters=1000, strategy_iters=512. It takes about 10 seconds to get the stats for IRV (for a given number of voters and candidates). Very manipulable methods are much quicker, of course; my result for Coombs (99 voters, 3 cddts, IC) is 0.9956-0.9973, and it takes less than a second to check. In case it's useful, I can also mention that I'm using the Jeffreys interval for binomial c.i. to avoid problems with the Gaussian when the expected value is very close to 0 or 1. Though reading the Wikipedia article, it seems that the consensus is that the Wilson interval is better. -km
DC
Daniel Carrera
Wed, Jan 12, 2022 7:47 PM

On Wed, Jan 12, 2022 at 5:01 AM Kristofer Munsterhjelm km_elmet@t-online.de
wrote:

Yeah, you would think so, but in practice it seems to work pretty well.
Perhaps this is an indication that if an election is susceptible to
strategy, the strategy usually is not very exotic?

That certainly seems to be the case. Yesterday I also added a "simple
strategy" check where the ballot puts c_k at the top, w_A at the bottom,
and the other candidates are randomized. So in my loop I first check
whether that strategy works, and if it doesn't, I apply JGA's method, and I
just keep track of that. I noticed that the simple strategy always worked,
but I paid no heed because at the time I was doing tests with C=3 and the
impartial model. But today I implemented the spatial model and ran several
tests with more candidates and it really looks like the simple strategy
works almost every time that JGA's method works:

Spatial model + Benham
V=29, C=3 --> 0.1233-0.1365 (95% c.i.), simple=1.00, majority=0.73
V=29, C=4 --> 0.2811-0.2989 (95% c.i.), simple=0.97, majority=0.52
V=29, C=5 --> 0.4186-0.4384 (95% c.i.), simple=0.94, majority=0.37
V=29, C=6 --> 0.5388-0.5575 (95% c.i.), simple=0.92, majority=0.26

So the 'simple' value is the fraction out of all the JGA-susceptible
elections, where the simple strategy worked. Incidentally, the 'majority'
column is the fraction of the JGA-resilient elections where the election
was resilient because there was a majority winner. At some point I want to
do the non-JGA version of these tests, where each voter in the coalition
has a different ballot. It would be interesting to measure susceptibility
in terms of how often the strategy is simple vs complicated. The simplest
strategy that a group of conspirators can have is "put c_k on top, w_A at
the bottom, and rank the rest honestly". So I want to test that strategy.

I have noticed a dropoff with >10 candidates, though.

Other (obvious?) optimizations include:
- If there's a majority winner and the method passes the majority
criterion, give up directly: the election is unmanipulable.
- Trying the naive exaggeration strategy (if A was the winner,
make B>A
voters vote B first and A last); requires just one check per other
candidate.

Yeah. Those are the two I came up with. The numbers above give you an
indication of how often they'll speed up the program (i.e. quite often,
actually).

In case it's useful, I can also mention that I'm using the Jeffreys
interval for binomial c.i. to avoid problems with the Gaussian when the
expected value is very close to 0 or 1. Though reading the Wikipedia
article, it seems that the consensus is that the Wilson interval is better.

Yeah, I don't trust those a whole lot because I'm never quite sure what the
assumptions are or whether they apply. I compute my c.i. with a bootstrap.
It's easy to implement. In the main loop instead of incrementing SS and SF,
I use an array to keep track of the boolean result (i.e. success vs
failure). From that array I can compute SS and SF, but more importantly, I
can do 500 bootstrap resamples (i.e. sampling with replacement) and
basically bruteforce the c.i. with no assumptions made about the
distribution. This is expensive compared to an analytic approach, but in
this context, "expensive" means that it adds 0.025s to the runtime.

Cheers,

Dr. Daniel Carrera
Postdoctoral Research Associate
Iowa State University

On Wed, Jan 12, 2022 at 5:01 AM Kristofer Munsterhjelm <km_elmet@t-online.de> wrote: > Yeah, you would think so, but in practice it seems to work pretty well. > Perhaps this is an indication that if an election is susceptible to > strategy, the strategy usually is not very exotic? > That certainly seems to be the case. Yesterday I also added a "simple strategy" check where the ballot puts c_k at the top, w_A at the bottom, and the other candidates are randomized. So in my loop I first check whether that strategy works, and if it doesn't, I apply JGA's method, and I just keep track of that. I noticed that the simple strategy always worked, but I paid no heed because at the time I was doing tests with C=3 and the impartial model. But today I implemented the spatial model and ran several tests with more candidates and it really looks like the simple strategy works *almost* every time that JGA's method works: Spatial model + Benham V=29, C=3 --> 0.1233-0.1365 (95% c.i.), simple=1.00, majority=0.73 V=29, C=4 --> 0.2811-0.2989 (95% c.i.), simple=0.97, majority=0.52 V=29, C=5 --> 0.4186-0.4384 (95% c.i.), simple=0.94, majority=0.37 V=29, C=6 --> 0.5388-0.5575 (95% c.i.), simple=0.92, majority=0.26 So the 'simple' value is the fraction out of all the JGA-susceptible elections, where the simple strategy worked. Incidentally, the 'majority' column is the fraction of the JGA-resilient elections where the election was resilient because there was a majority winner. At some point I want to do the non-JGA version of these tests, where each voter in the coalition has a different ballot. It would be interesting to measure susceptibility in terms of how often the strategy is simple vs complicated. The simplest strategy that a group of conspirators can have is "put c_k on top, w_A at the bottom, and rank the rest honestly". So I want to test that strategy. > I have noticed a dropoff with >10 candidates, though. > > Other (obvious?) optimizations include: > - If there's a majority winner and the method passes the majority > criterion, give up directly: the election is unmanipulable. > - Trying the naive exaggeration strategy (if A was the winner, > make B>A > voters vote B first and A last); requires just one check per other > candidate. > Yeah. Those are the two I came up with. The numbers above give you an indication of how often they'll speed up the program (i.e. quite often, actually). > In case it's useful, I can also mention that I'm using the Jeffreys > interval for binomial c.i. to avoid problems with the Gaussian when the > expected value is very close to 0 or 1. Though reading the Wikipedia > article, it seems that the consensus is that the Wilson interval is better. > Yeah, I don't trust those a whole lot because I'm never quite sure what the assumptions are or whether they apply. I compute my c.i. with a bootstrap. It's easy to implement. In the main loop instead of incrementing SS and SF, I use an array to keep track of the boolean result (i.e. success vs failure). From that array I can compute SS and SF, but more importantly, I can do 500 bootstrap resamples (i.e. sampling with replacement) and basically bruteforce the c.i. with no assumptions made about the distribution. This is expensive compared to an analytic approach, but in this context, "expensive" means that it adds 0.025s to the runtime. Cheers, -- Dr. Daniel Carrera Postdoctoral Research Associate Iowa State University
RT
Richard, the VoteFair guy
Thu, Jan 13, 2022 3:46 AM

Thank you Forest, Colin, and Kristofer for answering my question about
how to manually identify the Smith set.

I now better understand how to do this on paper.

However, I'm still uncertain how it could be done in a public setting
such as on stage in a school auditorium, with an audience watching to
ensure the process is fair. (And creating a video of the process.)

Doing calculations on paper would not be acceptable because
non-math-savvy viewers would regard it as untrustworthy "magic."

Forest's idea of pulling out a calculator and doing matrix calculations
is very clever, but of course that's not the kind of "manual" process
that would be meaningful to an audience.

What I think can be followed is to do the pairwise counting with people
who are "pairwise counters."  Each one focuses on just one pair of
candidates. Perhaps a video screen behind each person can show the
ballot being looked at and the screen can show the current pairwise
counts for that pair.

At the end of this process perhaps each pairwise counter can use a
felt-tip pen to write a sign that say something like:

Alder
wins over
Cedar

But what would be a good audience-visible process -- using people on the
stage -- that converts these win-loss signs into the Smith set?

Your answers use the word "sort."  How could this sorting process be
represented using the signs and some people on a stage?

Of course when there's a Condorcet winner, finding the candidate who has
a win count equal to one minus the number of candidates is simple.

But what happens when there is no Condorcet winner?

It would be acceptable for an announcer to say things like "If Alder won
over your other pairwise candidate, please hold your sign up high,
otherwise keep your sign low. ... I see that Alder has 4 pairwise wins."

Such wins/losses can be written on different signs that say something like:

5 wins for Alder

But what can be shown as an action for a non-simple case, such as the
following one in Wikipedia?

5 wins for A

5 wins for D

4 wins for G

3.5 wins for C

2.5 wins for F

1 win for B

0 wins for E

(Half indicates a tie.)

So, does anyone have a suggestion for how some interactions on stage can
clearly -- and hopefully simply -- show how to resolve this more complex
kind of situation?

Richard
The VoteFair guy

Thank you Forest, Colin, and Kristofer for answering my question about how to manually identify the Smith set. I now better understand how to do this on paper. However, I'm still uncertain how it could be done in a public setting such as on stage in a school auditorium, with an audience watching to ensure the process is fair. (And creating a video of the process.) Doing calculations on paper would not be acceptable because non-math-savvy viewers would regard it as untrustworthy "magic." Forest's idea of pulling out a calculator and doing matrix calculations is very clever, but of course that's not the kind of "manual" process that would be meaningful to an audience. What I think can be followed is to do the pairwise counting with people who are "pairwise counters." Each one focuses on just one pair of candidates. Perhaps a video screen behind each person can show the ballot being looked at and the screen can show the current pairwise counts for that pair. At the end of this process perhaps each pairwise counter can use a felt-tip pen to write a sign that say something like: Alder wins over Cedar But what would be a good audience-visible process -- using people on the stage -- that converts these win-loss signs into the Smith set? Your answers use the word "sort." How could this sorting process be represented using the signs and some people on a stage? Of course when there's a Condorcet winner, finding the candidate who has a win count equal to one minus the number of candidates is simple. But what happens when there is no Condorcet winner? It would be acceptable for an announcer to say things like "If Alder won over your other pairwise candidate, please hold your sign up high, otherwise keep your sign low. ... I see that Alder has 4 pairwise wins." Such wins/losses can be written on different signs that say something like: 5 wins for Alder But what can be shown as an action for a non-simple case, such as the following one in Wikipedia? 5 wins for A 5 wins for D 4 wins for G 3.5 wins for C 2.5 wins for F 1 win for B 0 wins for E (Half indicates a tie.) So, does anyone have a suggestion for how some interactions on stage can clearly -- and hopefully simply -- show how to resolve this more complex kind of situation? Richard The VoteFair guy
FS
Forest Simmons
Thu, Jan 13, 2022 5:39 AM

First day in basic training ,"boot camp", 'cruits line up single file ...
keep switching places with neighbors that are out of order according to
height ... it doesn't matter which out of order pair goes first ... as long
as you agree that shorter 'cruits need to be ahead of taller ones in the
lineup. After n*(n-1)/2 or fewer swaps, no shorter recruit will be preceded
by a taller one.

It may sound chaotic, but that's the way they did it 55 years ago at Ft.
Bliss, TX.
You can do it more systematically by giving "right of way" to the pair in
front of you. Or by waiting until everybody ahead of you has settled into
order before you move into your proper position among them.

A merge sort would be a nice dance: start by counting off ... the evens
merge with the odds in front of them ... then adjacent pairs merge into
adjacent quadruplets ... the adjacent quads into adjacent octuplets, etc.

Now back to pairwise defeat ...

Let's say you have reached the point where you have a pairwise defeat chain
from front to back.

Give a flag to the candidate at the head of the line. While any body behind
the flag defeats the flag bearer, transfer the flag to the one of these
that is furthest from the front (i.e. closest to the back).
EndWhile

The final position of the flag is the cutoff position of the Smith Set...
the Smith set is the initial segment down to and including the flag holder.

El mié., 12 de ene. de 2022 7:46 p. m., Richard, the VoteFair guy <
electionmethods@votefair.org> escribió:

Thank you Forest, Colin, and Kristofer for answering my question about
how to manually identify the Smith set.

I now better understand how to do this on paper.

However, I'm still uncertain how it could be done in a public setting
such as on stage in a school auditorium, with an audience watching to
ensure the process is fair. (And creating a video of the process.)

Doing calculations on paper would not be acceptable because
non-math-savvy viewers would regard it as untrustworthy "magic."

Forest's idea of pulling out a calculator and doing matrix calculations
is very clever, but of course that's not the kind of "manual" process
that would be meaningful to an audience.

What I think can be followed is to do the pairwise counting with people
who are "pairwise counters."  Each one focuses on just one pair of
candidates. Perhaps a video screen behind each person can show the
ballot being looked at and the screen can show the current pairwise
counts for that pair.

At the end of this process perhaps each pairwise counter can use a
felt-tip pen to write a sign that say something like:

Alder
wins over
Cedar

But what would be a good audience-visible process -- using people on the
stage -- that converts these win-loss signs into the Smith set?

Your answers use the word "sort."  How could this sorting process be
represented using the signs and some people on a stage?

Of course when there's a Condorcet winner, finding the candidate who has
a win count equal to one minus the number of candidates is simple.

But what happens when there is no Condorcet winner?

It would be acceptable for an announcer to say things like "If Alder won
over your other pairwise candidate, please hold your sign up high,
otherwise keep your sign low. ... I see that Alder has 4 pairwise wins."

Such wins/losses can be written on different signs that say something like:

5 wins for Alder

But what can be shown as an action for a non-simple case, such as the
following one in Wikipedia?

5 wins for A

5 wins for D

4 wins for G

3.5 wins for C

2.5 wins for F

1 win for B

0 wins for E

(Half indicates a tie.)

So, does anyone have a suggestion for how some interactions on stage can
clearly -- and hopefully simply -- show how to resolve this more complex
kind of situation?

Richard
The VoteFair guy

Election-Methods mailing list - see https://electorama.com/em for list
info

First day in basic training ,"boot camp", 'cruits line up single file ... keep switching places with neighbors that are out of order according to height ... it doesn't matter which out of order pair goes first ... as long as you agree that shorter 'cruits need to be ahead of taller ones in the lineup. After n*(n-1)/2 or fewer swaps, no shorter recruit will be preceded by a taller one. It may sound chaotic, but that's the way they did it 55 years ago at Ft. Bliss, TX. You can do it more systematically by giving "right of way" to the pair in front of you. Or by waiting until everybody ahead of you has settled into order before you move into your proper position among them. A merge sort would be a nice dance: start by counting off ... the evens merge with the odds in front of them ... then adjacent pairs merge into adjacent quadruplets ... the adjacent quads into adjacent octuplets, etc. Now back to pairwise defeat ... Let's say you have reached the point where you have a pairwise defeat chain from front to back. Give a flag to the candidate at the head of the line. While any body behind the flag defeats the flag bearer, transfer the flag to the one of these that is furthest from the front (i.e. closest to the back). EndWhile The final position of the flag is the cutoff position of the Smith Set... the Smith set is the initial segment down to and including the flag holder. El mié., 12 de ene. de 2022 7:46 p. m., Richard, the VoteFair guy < electionmethods@votefair.org> escribió: > Thank you Forest, Colin, and Kristofer for answering my question about > how to manually identify the Smith set. > > I now better understand how to do this on paper. > > However, I'm still uncertain how it could be done in a public setting > such as on stage in a school auditorium, with an audience watching to > ensure the process is fair. (And creating a video of the process.) > > Doing calculations on paper would not be acceptable because > non-math-savvy viewers would regard it as untrustworthy "magic." > > Forest's idea of pulling out a calculator and doing matrix calculations > is very clever, but of course that's not the kind of "manual" process > that would be meaningful to an audience. > > What I think can be followed is to do the pairwise counting with people > who are "pairwise counters." Each one focuses on just one pair of > candidates. Perhaps a video screen behind each person can show the > ballot being looked at and the screen can show the current pairwise > counts for that pair. > > At the end of this process perhaps each pairwise counter can use a > felt-tip pen to write a sign that say something like: > > Alder > wins over > Cedar > > But what would be a good audience-visible process -- using people on the > stage -- that converts these win-loss signs into the Smith set? > > Your answers use the word "sort." How could this sorting process be > represented using the signs and some people on a stage? > > Of course when there's a Condorcet winner, finding the candidate who has > a win count equal to one minus the number of candidates is simple. > > But what happens when there is no Condorcet winner? > > It would be acceptable for an announcer to say things like "If Alder won > over your other pairwise candidate, please hold your sign up high, > otherwise keep your sign low. ... I see that Alder has 4 pairwise wins." > > Such wins/losses can be written on different signs that say something like: > > 5 wins for Alder > > But what can be shown as an action for a non-simple case, such as the > following one in Wikipedia? > > 5 wins for A > > 5 wins for D > > 4 wins for G > > 3.5 wins for C > > 2.5 wins for F > > 1 win for B > > 0 wins for E > > (Half indicates a tie.) > > So, does anyone have a suggestion for how some interactions on stage can > clearly -- and hopefully simply -- show how to resolve this more complex > kind of situation? > > Richard > The VoteFair guy > ---- > Election-Methods mailing list - see https://electorama.com/em for list > info >
KM
Kristofer Munsterhjelm
Thu, Jan 13, 2022 10:34 AM

On 13.01.2022 04:46, Richard, the VoteFair guy wrote:

Thank you Forest, Colin, and Kristofer for answering my question about
how to manually identify the Smith set.

I now better understand how to do this on paper.

However, I'm still uncertain how it could be done in a public setting
such as on stage in a school auditorium, with an audience watching to
ensure the process is fair. (And creating a video of the process.)

My O(n^2) method would be pretty transparent, I think; it would just get
unwieldy very fast.

First you let each person represent a candidate, and then, for each
person, you have that person ask "do I beat A, B, C..." in turn. This
gives the number of candidates that candidate beats, i.e. the Copeland
score.

Let there be a dividing line: everybody to the right (say) of that line
is in the provisional Smith set, everybody to the left is not. Move the
Copeland winner to the right of the line.

Then ask each other candidate if he beats the first member, second
member, etc. of that set. If yes, move him up to the other side of the
line. If anyone was moved to the right of the line as part of this
round, restart from the first candidate to the left of the line once
you've asked all of them; otherwise, the process is done and the
candidates on the right constitute the Smith set.

-km

On 13.01.2022 04:46, Richard, the VoteFair guy wrote: > Thank you Forest, Colin, and Kristofer for answering my question about > how to manually identify the Smith set. > > I now better understand how to do this on paper. > > However, I'm still uncertain how it could be done in a public setting > such as on stage in a school auditorium, with an audience watching to > ensure the process is fair. (And creating a video of the process.) My O(n^2) method would be pretty transparent, I think; it would just get unwieldy very fast. First you let each person represent a candidate, and then, for each person, you have that person ask "do I beat A, B, C..." in turn. This gives the number of candidates that candidate beats, i.e. the Copeland score. Let there be a dividing line: everybody to the right (say) of that line is in the provisional Smith set, everybody to the left is not. Move the Copeland winner to the right of the line. Then ask each other candidate if he beats the first member, second member, etc. of that set. If yes, move him up to the other side of the line. If anyone was moved to the right of the line as part of this round, restart from the first candidate to the left of the line once you've asked all of them; otherwise, the process is done and the candidates on the right constitute the Smith set. -km
KM
Kristofer Munsterhjelm
Thu, Jan 13, 2022 2:05 PM

On 12.01.2022 20:47, Daniel Carrera wrote:

On Wed, Jan 12, 2022 at 5:01 AM Kristofer Munsterhjelm
<km_elmet@t-online.de mailto:km_elmet@t-online.de> wrote:

 Yeah, you would think so, but in practice it seems to work pretty well.
 Perhaps this is an indication that if an election is susceptible to
 strategy, the strategy usually is not very exotic?

That certainly seems to be the case. Yesterday I also added a "simple
strategy" check where the ballot puts c_k at the top, w_A at the bottom,
and the other candidates are randomized. So in my loop I first check
whether that strategy works, and if it doesn't, I apply JGA's method,
and I just keep track of that.

Maybe you could get a (very slight?) improvement by ranking the
candidates in reverse social order, e.g. if A is the winner and the
social order is A>B>C>D>E>F, then the B>A faction votes B>F>E>D>C>A.

Could be worth a try, at least; but 92% of the time for a 6-candidate
election is already pretty good!

Also, for IRV in particular, there's a shared ballot (JGA setting)
manipulation algorithm with worst case complexity of O(phi^c) where phi
is the golden ratio and c is the number of candidates.
https://courses.cs.duke.edu/fall09/cps296.1/csecon_hardness_barrier_to_manipulation.ppt

I noticed that the simple strategy always worked, but I paid no heed
because at the time I was doing tests with C=3 and the impartial
model. But today I implemented the spatial model and ran several
tests with more candidates and it really looks like the simple
strategy works almost every time that JGA's method works:

Spatial model + Benham
V=29, C=3 --> 0.1233-0.1365 (95% c.i.), simple=1.00, majority=0.73
V=29, C=4 --> 0.2811-0.2989 (95% c.i.), simple=0.97, majority=0.52
V=29, C=5 --> 0.4186-0.4384 (95% c.i.), simple=0.94, majority=0.37
V=29, C=6 --> 0.5388-0.5575 (95% c.i.), simple=0.92, majority=0.26

That's odd: the results are quite close to my impartial culture ones,
and significantly removed from JGA's spatial model ones for IRV. Do you
get results closer to JGA's for V=99? Page 7 has the IRV spatial model
manip rates be around 10% at V=99, C=6; somewhat more with a low number
of dimensions.

-km

On 12.01.2022 20:47, Daniel Carrera wrote: > > > On Wed, Jan 12, 2022 at 5:01 AM Kristofer Munsterhjelm > <km_elmet@t-online.de <mailto:km_elmet@t-online.de>> wrote: > > Yeah, you would think so, but in practice it seems to work pretty well. > Perhaps this is an indication that if an election is susceptible to > strategy, the strategy usually is not very exotic? > > > > That certainly seems to be the case. Yesterday I also added a "simple > strategy" check where the ballot puts c_k at the top, w_A at the bottom, > and the other candidates are randomized. So in my loop I first check > whether that strategy works, and if it doesn't, I apply JGA's method, > and I just keep track of that. Maybe you could get a (very slight?) improvement by ranking the candidates in reverse social order, e.g. if A is the winner and the social order is A>B>C>D>E>F, then the B>A faction votes B>F>E>D>C>A. Could be worth a try, at least; but 92% of the time for a 6-candidate election is already pretty good! Also, for IRV in particular, there's a shared ballot (JGA setting) manipulation algorithm with worst case complexity of O(phi^c) where phi is the golden ratio and c is the number of candidates. https://courses.cs.duke.edu/fall09/cps296.1/csecon_hardness_barrier_to_manipulation.ppt > I noticed that the simple strategy always worked, but I paid no heed > because at the time I was doing tests with C=3 and the impartial > model. But today I implemented the spatial model and ran several > tests with more candidates and it really looks like the simple > strategy works *almost* every time that JGA's method works: > > Spatial model + Benham > V=29, C=3 --> 0.1233-0.1365 (95% c.i.), simple=1.00, majority=0.73 > V=29, C=4 --> 0.2811-0.2989 (95% c.i.), simple=0.97, majority=0.52 > V=29, C=5 --> 0.4186-0.4384 (95% c.i.), simple=0.94, majority=0.37 > V=29, C=6 --> 0.5388-0.5575 (95% c.i.), simple=0.92, majority=0.26 That's odd: the results are quite close to my impartial culture ones, and significantly removed from JGA's spatial model ones for IRV. Do you get results closer to JGA's for V=99? Page 7 has the IRV spatial model manip rates be around 10% at V=99, C=6; somewhat more with a low number of dimensions. -km
DC
Daniel Carrera
Thu, Jan 13, 2022 8:53 PM

On Thu, Jan 13, 2022 at 8:05 AM Kristofer Munsterhjelm km_elmet@t-online.de
wrote:

Maybe you could get a (very slight?) improvement by ranking the
candidates in reverse social order, e.g. if A is the winner and the
social order is A>B>C>D>E>F, then the B>A faction votes B>F>E>D>C>A.

Could be worth a try, at least; but 92% of the time for a 6-candidate
election is already pretty good!

Indeed it is. So last night I started running tests with several
strategies, in order of complexity. I wanted to see how often the strategy
can be trivial vs how often it has to be sophisticated. So I'm implemented
four strategies:

  1. Trivial strategy:

Everyone who prefers c_k > w_A will put c_k on top, w_A at the bottom, and
leave the other candidates in the voter's preference order. This is a
strategy so simple that can be coordinated with memes and conversations by
the water cooler.

  1. Simple strategy:

Everyone who prefers c_k > w_A will vote with the same ballot. The ballot
itself is a random version of c_k > ... > w_A. This one requires more
effort; you have to write the target ballot on a piece of paper and have it
in your pocket.

  1. Moderate strategy: (aka JGA strategy)

Like (2), but the conspiracy of c_k > w_A voters has enough insight into
the other voters to run a simulation and pick the optimal ballot to improve
the chances of c_k winning.

  1. Advanced strategy: (aka your strategy)

The conspiracy of c_k > w_A voters run an extensive random search through
the ballot phase space to pick a highly optimized ballot to alter the
election. You said in an earlier email that you were using 1,000 elections
and 512 strategies. I increased those to 10,000 elections and 10,000
strategies. This got expensive and I had to run the program in multiple
terminals to get some trivial parallelism that way.

At some point I could implement your "reverse social order" method. That is
more sophisticated than JGA, so it would sit between strategies 3 and 4. In
any event, my program first checks to see if there is a majority. If there
isn't, it tries strategy 1. If that fails, it tries strategy 2, and so on.
Here are the results for the spatial model with N = 1 dimensional issue
space:

Spatial model
N=1
method=Benham
strategy_iters=10,000

V , C, 95% c.i.    , trivial, simple , moderate, advanced, majority
19, 4, 0.2430-0.2830, 0.943  , 0.0241 , 0.0327  , 0      , 0.546
29, 4, 0.2697-0.3100, 0.946  , 0.0288 , 0.0257  , 0      , 0.520
29, 5, 0.3990-0.4415, 0.878  , 0.0602 , 0.0623  , 0      , 0.365
99, 5, 0.4645-0.5068, 0.877  , 0.0611 , 0.0620  , 0      , 0.310

Let me explain. The "95% c.i." is the same that we've been using all along
--- the fraction of elections that are susceptible to manipulation. Then
the "trivial" column shows, out of all the elections that could be
manipulated, what fraction of them could be manipulated with the trivial
strategy. The "simple" column is the fraction of susceptible elections
where "trivial" failed but "simple" succeeded, and so on and so forth. The
"majority" column is the fraction of non-susceptible elections where there
was a simple majority.

For example, for V=19, C=4, I found that 24 - 28% of elections can be
manipulated. Out of those, the overwhelming majority (94%) can be
manipulated with the trivial strategy, and an additional 2.4% and 3.3%
require one of the intermediate strategies. This pattern is typical across
my tests. When the number of candidates increases to 5 there is a greater
need for additional effort, the trivial strategy would work for 88% of
susceptible elections and the simple one would work for 88% + 6% = 94% of
susceptible elections.

I have not been able to find a single election where the first strategies
failed, but the 10,000 random searches through the ballot space produced a
successful strategy. I think that there is strong evidence that, at least
for Benham, successful strategies tend to be pretty dumb and simple.

Also, for IRV in particular, there's a shared ballot (JGA setting)

manipulation algorithm with worst case complexity of O(phi^c) where phi
is the golden ratio and c is the number of candidates.

https://courses.cs.duke.edu/fall09/cps296.1/csecon_hardness_barrier_to_manipulation.ppt

Interesting. Thanks for the link!

Spatial model + Benham
V=29, C=3 --> 0.1233-0.1365 (95% c.i.), simple=1.00, majority=0.73
V=29, C=4 --> 0.2811-0.2989 (95% c.i.), simple=0.97, majority=0.52
V=29, C=5 --> 0.4186-0.4384 (95% c.i.), simple=0.94, majority=0.37
V=29, C=6 --> 0.5388-0.5575 (95% c.i.), simple=0.92, majority=0.26

That's odd: the results are quite close to my impartial culture ones,
and significantly removed from JGA's spatial model ones for IRV. Do you
get results closer to JGA's for V=99?

I don't see a huge discrepancy. Note that this was done with N=1, so
considering the low V=29 I don't think it's that removed from JGA. Right
now I have only one test with V=99 and that's the one I posted a few
paragraphs above. So for V=99,N=1,C=5 I get 0.4645-0.5068 (95% c.i.) and
that interval contains the 0.487 value reported by JGA on Table 1. So it
looks like it's the number of voters that changed the result.

I've noticed that increasing the number of voters makes elections easier to
manipulate; at least in the spatial model.

Cheers,

Dr. Daniel Carrera
Postdoctoral Research Associate
Iowa State University

On Thu, Jan 13, 2022 at 8:05 AM Kristofer Munsterhjelm <km_elmet@t-online.de> wrote: > > Maybe you could get a (very slight?) improvement by ranking the > candidates in reverse social order, e.g. if A is the winner and the > social order is A>B>C>D>E>F, then the B>A faction votes B>F>E>D>C>A. > > Could be worth a try, at least; but 92% of the time for a 6-candidate > election is already pretty good! > Indeed it is. So last night I started running tests with several strategies, in order of complexity. I wanted to see how often the strategy can be trivial vs how often it has to be sophisticated. So I'm implemented four strategies: 1) Trivial strategy: Everyone who prefers c_k > w_A will put c_k on top, w_A at the bottom, and leave the other candidates in the voter's preference order. This is a strategy so simple that can be coordinated with memes and conversations by the water cooler. 2) Simple strategy: Everyone who prefers c_k > w_A will vote with the same ballot. The ballot itself is a random version of c_k > ... > w_A. This one requires more effort; you have to write the target ballot on a piece of paper and have it in your pocket. 3) Moderate strategy: (aka JGA strategy) Like (2), but the conspiracy of c_k > w_A voters has enough insight into the other voters to run a simulation and pick the optimal ballot to improve the chances of c_k winning. 4) Advanced strategy: (aka your strategy) The conspiracy of c_k > w_A voters run an extensive random search through the ballot phase space to pick a highly optimized ballot to alter the election. You said in an earlier email that you were using 1,000 elections and 512 strategies. I increased those to 10,000 elections and 10,000 strategies. This got expensive and I had to run the program in multiple terminals to get some trivial parallelism that way. At some point I could implement your "reverse social order" method. That is more sophisticated than JGA, so it would sit between strategies 3 and 4. In any event, my program first checks to see if there is a majority. If there isn't, it tries strategy 1. If that fails, it tries strategy 2, and so on. Here are the results for the spatial model with N = 1 dimensional issue space: Spatial model N=1 method=Benham strategy_iters=10,000 V , C, 95% c.i. , trivial, simple , moderate, advanced, majority 19, 4, 0.2430-0.2830, 0.943 , 0.0241 , 0.0327 , 0 , 0.546 29, 4, 0.2697-0.3100, 0.946 , 0.0288 , 0.0257 , 0 , 0.520 29, 5, 0.3990-0.4415, 0.878 , 0.0602 , 0.0623 , 0 , 0.365 99, 5, 0.4645-0.5068, 0.877 , 0.0611 , 0.0620 , 0 , 0.310 Let me explain. The "95% c.i." is the same that we've been using all along --- the fraction of elections that are susceptible to manipulation. Then the "trivial" column shows, out of all the elections that could be manipulated, what fraction of them could be manipulated with the trivial strategy. The "simple" column is the fraction of susceptible elections where "trivial" failed but "simple" succeeded, and so on and so forth. The "majority" column is the fraction of non-susceptible elections where there was a simple majority. For example, for V=19, C=4, I found that 24 - 28% of elections can be manipulated. Out of those, the overwhelming majority (94%) can be manipulated with the trivial strategy, and an additional 2.4% and 3.3% require one of the intermediate strategies. This pattern is typical across my tests. When the number of candidates increases to 5 there is a greater need for additional effort, the trivial strategy would work for 88% of susceptible elections and the simple one would work for 88% + 6% = 94% of susceptible elections. I have not been able to find a single election where the first strategies failed, but the 10,000 random searches through the ballot space produced a successful strategy. I think that there is strong evidence that, at least for Benham, successful strategies tend to be pretty dumb and simple. Also, for IRV in particular, there's a shared ballot (JGA setting) > manipulation algorithm with worst case complexity of O(phi^c) where phi > is the golden ratio and c is the number of candidates. > > https://courses.cs.duke.edu/fall09/cps296.1/csecon_hardness_barrier_to_manipulation.ppt Interesting. Thanks for the link! > > Spatial model + Benham > > V=29, C=3 --> 0.1233-0.1365 (95% c.i.), simple=1.00, majority=0.73 > > V=29, C=4 --> 0.2811-0.2989 (95% c.i.), simple=0.97, majority=0.52 > > V=29, C=5 --> 0.4186-0.4384 (95% c.i.), simple=0.94, majority=0.37 > > V=29, C=6 --> 0.5388-0.5575 (95% c.i.), simple=0.92, majority=0.26 > > That's odd: the results are quite close to my impartial culture ones, > and significantly removed from JGA's spatial model ones for IRV. Do you > get results closer to JGA's for V=99? I don't see a huge discrepancy. Note that this was done with N=1, so considering the low V=29 I don't think it's *that* removed from JGA. Right now I have only one test with V=99 and that's the one I posted a few paragraphs above. So for V=99,N=1,C=5 I get 0.4645-0.5068 (95% c.i.) and that interval contains the 0.487 value reported by JGA on Table 1. So it looks like it's the number of voters that changed the result. I've noticed that increasing the number of voters makes elections easier to manipulate; at least in the spatial model. Cheers, -- Dr. Daniel Carrera Postdoctoral Research Associate Iowa State University
DC
Daniel Carrera
Fri, Jan 14, 2022 11:45 AM

On Thu, Jan 13, 2022 at 8:05 AM Kristofer Munsterhjelm km_elmet@t-online.de
wrote:

Maybe you could get a (very slight?) improvement by ranking the
candidates in reverse social order, e.g. if A is the winner and the
social order is A>B>C>D>E>F, then the B>A faction votes B>F>E>D>C>A.

Could be worth a try, at least; but 92% of the time for a 6-candidate
election is already pretty good!

So... I've been experimenting with this idea and I have an interesting
report. Now... the strategy you suggested is quite sophisticated for a real
election. I'm more interested in a strategy that a regular group of voters
could implement if it was explained to them. So let me offer a variation:

  1. Let 'A' be the winner
  2. Make an educated guess as to how 'A' would cast his own ballot, and
    reverse that (and put your preferred candidate on top).

So in your example, if you estimate that 'A' will probably vote A>B>C>D>E>F,
then the B>A faction votes B>F>E>D>C>A.

My reasoning is that this should be a reasonable poor man's approximation
of reverse social order. If 'A' is the presumed winner in a sincere
election, then maybe 'A' is close to the center of mass of the issue space,
and his ballot might approximate social order. If you have an election
between Joe Biden, Bernie Sanders, and Donald Trump, and I ask you to guess
which way each candidate would cast his ballot, you'd have little trouble
coming up with the answers. So I ran my program again. I removed the
"simple" strategy that I had before and inserted the "reverse" strategy
above. I removed the "advanced" strategy because it was getting really
expensive and after many tests it never once succeeded. So the new
simulations only have three strategies:

  1. Trivial:  Rank c_k on top, w_A at the bottom, and the other candidates
    are ranked according to each voter's preference.

  2. Reverse: Compute w_A's ballot, reverse it, and move c_k to the top.
    Everyone in the c_k > w_A coalition casts that ballot.

  3. Moderate / JGA: Iterate through every single possible ballot that the
    c_k > w_A coalition might cast.

I increased the number of elections to 100,000 to get more resolution. Here
are the results:

N, V , C, 95% c.i.    , trivial, reverse, moderate, majority
1, 99, 5, 0.4849-0.4913, 0.884  , 0.1158 , 0.0000  , 0.314
2, 99, 5, 0.1783-0.1832, 0.953  , 0.0452 , 0.0022  , 0.121
3, 99, 5, 0.0797-0.0830, 0.971  , 0.0272 , 0.0021  , 0.119
4, 99, 5, 0.0481-0.0507, 0.978  , 0.0201 , 0.0022  , 0.134

As in my last email, the "trivial", "reverse", and "moderate" columns are
the fraction of strategy successes that were attributed to each strategy. I
think the result is really interesting:

  1. If an election is susceptible to strategy, 88-98% of the time the
    trivial strategy will work.

  2. Out of the remaining strategy successes, 90-95% are attributed to the
    "reverse" / "poor man's social order" strategy.

So... your reverse social order strategy works pretty well. It seems to
grab all the low hanging fruit, and it's very hard for a ballot search to
do better than that. For completeness, here's how often the JGA / moderate
strategy produced a result:

  • For N=1 --> JGA helped 0 out of SS = 48,804 times
  • For N=2 --> JGA helped 39 out of SS = 18,072 times
  • For N=3 --> JGA helped 17 out of SS = 8,131 times
  • For N=4 --> JGA helped 11 out of SS = 4,936 times

Cheers,

Dr. Daniel Carrera
Postdoctoral Research Associate
Iowa State University

On Thu, Jan 13, 2022 at 8:05 AM Kristofer Munsterhjelm <km_elmet@t-online.de> wrote: > Maybe you could get a (very slight?) improvement by ranking the > candidates in reverse social order, e.g. if A is the winner and the > social order is A>B>C>D>E>F, then the B>A faction votes B>F>E>D>C>A. > > Could be worth a try, at least; but 92% of the time for a 6-candidate > election is already pretty good! > So... I've been experimenting with this idea and I have an interesting report. Now... the strategy you suggested is quite sophisticated for a real election. I'm more interested in a strategy that a regular group of voters could implement if it was explained to them. So let me offer a variation: 1. Let 'A' be the winner 2. Make an educated guess as to how 'A' would cast his own ballot, and reverse that (and put your preferred candidate on top). So in your example, if you estimate that 'A' will probably vote A>B>C>D>E>F, then the B>A faction votes B>F>E>D>C>A. My reasoning is that this should be a reasonable poor man's approximation of reverse social order. If 'A' is the presumed winner in a sincere election, then maybe 'A' is close to the center of mass of the issue space, and his ballot might approximate social order. If you have an election between Joe Biden, Bernie Sanders, and Donald Trump, and I ask you to guess which way each candidate would cast his ballot, you'd have little trouble coming up with the answers. So I ran my program again. I removed the "simple" strategy that I had before and inserted the "reverse" strategy above. I removed the "advanced" strategy because it was getting really expensive and after many tests it never once succeeded. So the new simulations only have three strategies: 1) Trivial: Rank c_k on top, w_A at the bottom, and the other candidates are ranked according to each voter's preference. 2) Reverse: Compute w_A's ballot, reverse it, and move c_k to the top. Everyone in the c_k > w_A coalition casts that ballot. 3) Moderate / JGA: Iterate through every single possible ballot that the c_k > w_A coalition might cast. I increased the number of elections to 100,000 to get more resolution. Here are the results: N, V , C, 95% c.i. , trivial, reverse, moderate, majority 1, 99, 5, 0.4849-0.4913, 0.884 , 0.1158 , 0.0000 , 0.314 2, 99, 5, 0.1783-0.1832, 0.953 , 0.0452 , 0.0022 , 0.121 3, 99, 5, 0.0797-0.0830, 0.971 , 0.0272 , 0.0021 , 0.119 4, 99, 5, 0.0481-0.0507, 0.978 , 0.0201 , 0.0022 , 0.134 As in my last email, the "trivial", "reverse", and "moderate" columns are the fraction of strategy successes that were attributed to each strategy. I think the result is really interesting: 1) If an election is susceptible to strategy, 88-98% of the time the trivial strategy will work. 2) Out of the remaining strategy successes, 90-95% are attributed to the "reverse" / "poor man's social order" strategy. So... your reverse social order strategy works pretty well. It seems to grab all the low hanging fruit, and it's very hard for a ballot search to do better than that. For completeness, here's how often the JGA / moderate strategy produced a result: * For N=1 --> JGA helped 0 out of SS = 48,804 times * For N=2 --> JGA helped 39 out of SS = 18,072 times * For N=3 --> JGA helped 17 out of SS = 8,131 times * For N=4 --> JGA helped 11 out of SS = 4,936 times Cheers, -- Dr. Daniel Carrera Postdoctoral Research Associate Iowa State University