Explore SAVE Voters

Serial Approval Vote Election

Serial Approval Vote Election (SAVE)

Explore SAVE Voters

Serial Approval Vote Election Simulations ,,fold,,

Here in Figure 1 we have augmented the basic SAVE explorable with the variety of electorate generation option of the Aggregation explorable, and added controls to modify voter behavior.

Description of Simulation Controls ,,fold,,

The top section of the control panel, from Electorate PRNG: to the Add best motion button, is exactly the same as the top of the Aggregation explorable. The only difference is the initial state of the lock data checkbox, which is checked.

The bottom section of the panel is where the new stuff comes in.

AV Threshold
This is baseline approval of motions that differ from the voter's ideal. For the 0 to 50 range, each voter looks at the subjective distance to the worst motion, and will initially approve motions closer than the AV Threshold value times the worst motion distance. The special case of 51 is an alternative setting where the threshold is set to the voter's subjective distance to the origin.
Tolerance delta
The tolerance value is a model variable acting as a proxy for voters' changing approval thresholds as more information comes in. The tolerance value increments every time a motion is repeat as a focus. The tolerance delta is the amount of the increment.
Focus vote
A focus vote is a vote to stop the process with the current focus motion becoming the final winner. The seven items in the list are different rules for deciding whether or not to vote for the focus. Their order is roughly from most restrictive to least restrictive. The checks are:
ideal
The focus motion is close to the voter's ideal. Tolerance is used to determine how close a focus motion needs to be to get a voter's final approval.
cluster
The cluster is the set of motions that have most recently been foci. For this check to trigger, the difference between a voter's subjective distance to the furthest motion in the cluster and the distance to the closest motion must be less than the tolerance times the distance to the subjective worse overall motion.
top-half
This is similar to the cluster except the cluster distance spread is less that 3 times the tolerance distance, and the current focus must be in the better half of that range.
limited
This method looks at the possibility of new motions, and the possible gain of a new, better motion over the possible loss of a new worse motion. If the upside is limited, the voter will vote for the focus to limit the potential downside.
peak
During the rounds, the series of foci generally gets varies between being closer and further. The peak focus vote check simply looks at how close a focus motion was to the voter before the next focus was further, and if this focus distance is as good or better than that distance, vote for the peak focus.
accepted
Once a vote has voted for any focus for any reason, the accepted rule can be applied. A voter using this rule will vote for any focus motion at or closer than the furthest distant focus motion previously accepted.
approved
This method is the only method used in the basic SAVE explorable, and just votes for focus motions within the voter's initial AV Threshold, extended by the tolerance. Just using this single rule is one reason the basic SAVE explorable takes so long to terminate.
Voter shuffle PRNG
The addition of motions by voters is something that is inherently disordered. Motions are proposed on a first come first served basis. Since this is not asynchronous, parallel code, shuffling the order of the voters provides a way to do something similar.
auto add
Checking this box has the simulated voters propose their own motions. If this box is not checked the only way to get new motions is for the user to add them. (Unlock the data, then add motions as in the aggregation explorable. But see the note on repeatability below.)
diversity
This box only has an effect if auto add is also checked. Diversity motions are motions proposed when there are no motions near the voter that they find at all acceptable. This is important for (at least) two reasons: socially, we believe people will be more likely to vote if they have motions to vote for, as opposed to only voting against bad motions. Systemically, diverse motions are important when trying to find reasonable compromises.

Every new control up to this point has been a parameter for the SAVE run. The next five buttons let you explore this process more conveniently. The three Run to buttons all trigger one or more rounds rounds, with different stopping conditions.

Next step button
This button does the same thing as the Next step button in the SAVE basics explorable. It just advances to the next round.
Voter proposals button
initially and often disabled, this button initiates a round of new motion proposals by the voters. This action is done automatically when auto add is checked.
Run to next add button
This just essentially clicks the Next step" button until the next time a motion repeats as a focus and voters are allowed to add new motions. If *auto add is not checked, the Voter proposals button will be enabled when the process pauses. If auto add is checked, the Voter proposal action will be triggered at the start of the pause, and any new motions will appear in red.
Run to winner button
This is like Run to next add but only ends when the final winner is known.
Run to mandate
This button goes one step further than Run to winner, in that it goes to the end of the final mandate AV round.

In all cases, the history rounds are presented and preserved in the same fashion as SAVE basics, but with a bit more data.

A note on reproducibility: The first pseudo random number generator (PRNG) in both the Electorate and Voter shuffle lists, is a very good algorithm that in this implementation does not allow the setting of an initial seed. This means when you select random for your PRNG, anything you do will be new. For exploring purposes, it is often useful to try different things under the same conditions. This can be done by choosing a different PRNG and supplying a seed for it. If you do not supply a seed, a new seed will be generated for you and it will show up in one of the two header lines above the main graphic box. If you copy the seed (the stuff inside the single quotes) into the corresponding seed input, the explorable will repeat what just did.

Decoding the header lines: the line staring Electorate refers to the Electorate PRNG, while Shuffle refers to the Voter shuffle PRNG. The next item in either list is a single capital letter, that corresponds to the first letter of the PRNG algorithm selected. The next thing in the list is the seed string. The algorithm and the seed are all that is needed for the Voter shuffle, but the Electorate takes a bit more. The number after 'm:' is the number of initial motions, and the number after 'v:' is the number of initial voters. The next upper-case letter is a U for a uniform distribution for the electorate, an N for a normal distribution, or a C for a constrained electorate of 100 voters and 3 motions in which A beats B, B beats C, and C beats A, with all the margins being 60:40. The final group indicates the metric used in the creation of the electorate. L1 is the taxicab metric, L2 is the standard Euclidean metric, and L0 is the Chebyshev metric. (Sorry about that last symbol. It really should be L∞, but I was using ASCII instead of Unicode, and had to pick something I would never otherwise use.) The metric may have a w at the end. If so, Use weights should be checked. If not, Use weights should be unchecked.

SAVE Simulation

null.svg

Figure 1: Introductory simulation of the serial approval vote election procedure. This first simulation uses simple Euclidean distance for a two-dimensional choice.

Date: 2025-03-18 Tue 00:00

Author: Thomas Edward Cavin

Created: 2025-08-14 Thu 21:19

Validate