A Satisficing Voter Model

How do epistemic noise and participation friction affect voting methods?

What is this?

Standard VSE simulations generally assume perfect voters: everyone knows their preferences and fills out their ballot completely. Real voters face two kinds of imperfection:

📚 Epistemic Noise  t

A voter may not know their own utilities, especially for unfamiliar candidates. The knowledge parameter $t \in [0,1]$ interpolates between pure noise ($t=0$) and perfect self-knowledge ($t=1$).

$$\tilde{u}_i = t \cdot u_i + (1-t) \cdot \eta_i, \quad \eta_i \sim \mathcal{N}(\bar{u}, \sigma_u^2)$$

⚡ Participation Friction  

Even a well-informed voter may not fill out their entire ballot, due to ballot fatigue. The energy parameter $\ell \in [0,1]$ controls what fraction of candidates each voter has the energy to vote for: $K = \max(1, \lceil \ell \cdot m \rceil)$.

$$K = \max\!\left(1,\ \left\lceil \ell \cdot m \right\rceil\right)$$

VSE (Voter Satisfaction Efficiency) measures the expected utility of the winner of the method relative to the utility-maximizing candidate and a random candidate, normalised. 0% would mean the method is as good as picking a name out of a hat, and 100% would mean it always selects the optimal candidate. A negative VSE means the method is worse than random.

Parameters

Methods to include

Display options

Top 2 / Top 3 runoff options

Approval strategy options

Ready

How it works

Spatial model & utility

Voters and candidates are placed uniformly at random in $[-1,1]^d$, where $d$ is the selected spatial dimension. True utility is $u_i(c) = -\|v_i - p_c\|_\nu^2$ — negative squared distance under the selected norm ($\nu\in\{1,2,\infty\}$). The utility-maximising candidate is $c^* = \arg\max_c \frac{1}{n}\sum_i u_i(c)$.

Noise model

Each voter's perceived utility is $\tilde{u}_i = t \cdot u_i + (1-t) \cdot \eta_i$ where $\eta_i \sim \mathcal{N}(\bar{u}, \sigma_u^2)^m$ is drawn once per voter and held fixed. This means even noisy voters have internally consistent beliefs.

Energy & considered set

Each voter considers only their top $K = \max(1, \lceil \ell \cdot m \rceil)$ candidates by perceived utility. Opinions on the remaining $m - K$ candidates are not expressed.

Ballot construction

Plurality: vote for the single top perceived candidate.
Plurality Top 2 / Plurality Condorcet Top 3: honest first-round ballot is the same as Plurality (vote for top perceived candidate). Strategic ballots differ — see Plurality strategic voting below.
RCV / Borda / Condorcet: rank the considered set in order of $\tilde{u}_i$.
Score / STAR: for each voter, first take that voter's perceived utilities $\tilde{u}_i(c)$ over all candidates and find $\tilde{u}_{\min} = \min_c \tilde{u}_i(c)$ and $\tilde{u}_{\max} = \max_c \tilde{u}_i(c)$. Then project each considered candidate to a 0-5 score by voter-specific linear rescaling: $$s_i(c)=5\cdot\frac{\tilde{u}_i(c)-\tilde{u}_{\min}}{\tilde{u}_{\max}-\tilde{u}_{\min}}.$$ Candidates outside the considered set get score 0. (If all perceived utilities tie, considered candidates are assigned 5.)
Approval: approve candidates in the considered set whose $\tilde{u}_i$ exceeds the voter's global personal mean (computed over all $m$ candidates).
Approval Top 2 / Approval Condorcet Top 3: uses the exact same approval ballot as Approval.

How winners are counted (including Condorcet)

Plurality: most top-choice votes wins.
Plurality Top 2: top two by plurality totals advance; in the runoff, each voter supports whichever finalist they prefer between those two, and the finalist with more runoff support wins. By default, this finalist comparison uses true underlying utilities as a separate-election approximation. Turn off the toggle above to use perceived utilities instead.
Plurality Condorcet Top 3: top three by plurality totals advance; the Condorcet winner among those three (the one who wins both head-to-head matchups) is elected. If no Condorcet winner exists (a cycle), Minimax selects the finalist with the smallest worst pairwise defeat margin. Head-to-head comparisons use true utilities by default (same toggle as above).
Approval: most approvals wins.
Approval Top 2: top two by approval totals advance; in the runoff, each voter supports whichever finalist they prefer between those two, and the finalist with more runoff support wins. By default, this finalist comparison uses true underlying utilities as a separate-election approximation: with only two finalists, voters can usually determine with near certainty which finalist they actually prefer. Turn off the toggle above to use perceived utilities instead.
Approval Condorcet Top 3: top three by approval totals advance; the Condorcet winner among those three is elected. If no Condorcet winner exists, Minimax is used as fallback. Head-to-head comparisons use true utilities by default (same toggle as above).
Borda: ranked candidates get $K, K-1, \ldots, 1$ points (unranked get 0); highest total wins.
Score: highest total 0-5 score wins.
STAR: top two by total score advance; winner is preferred by more voters in the pairwise runoff based on their scores.
RCV: eliminate the lowest first-choice candidate each round; transfer to next ranked active choice; exhausted ballots drop out.
Condorcet: counted via Minimax: build pairwise margins from rankings and choose the candidate with the smallest worst pairwise defeat. This coincides with the true Condorcet winner when one exists, but still produces a result when there are cycles.

VSE formula

See the VSE basics for baseline context. $$\text{VSE}_M(t,\ell) = \frac{\mathbb{E}[\text{SW}(w_M)] - \mathbb{E}[\text{SW}(\text{random})]}{\mathbb{E}[\text{SW}(c^*)] - \mathbb{E}[\text{SW}(\text{random})]}$$ Measured using true utilities even though voters act on $\tilde{u}$.

The Saturation Property (Approval)

Approval has a structural advantage: once $K \geq k_i^*$ (voter $i$'s natural approval count), the ballot is identical to the full-energy ballot. For a typical voter $\mathbb{E}[k_i^*] \approx m/2$, so approval "saturates" near $\ell = 0.5$ on average. Ranking/scoring methods lose information monotonically as $\ell$ decreases.

Top 2 / Top 3 Runoff Utilities

By default we use the voter's true utilities to determine finalist comparisons for Plurality Top 2, Approval Top 2, Plurality Condorcet Top 3, and Approval Condorcet Top 3. Unlike STAR where the runoff is automatically calculated from submitted ballots, these runoffs happen later and can benefit from extra comparison time. It seems far more plausible that voters can determine their true preferences accurately when comparing only two finalists than three.

These settings can be toggled independently in the simulation options. The Top 2 case (a head-to-head comparison) is a strong candidate for perfect utility: voters have ample time and a simple binary choice. The Top 3 case is more demanding — voters must rank or compare three candidates, which may still be subject to perceived-utility noise — so you may want to disable it to model a more realistic scenario.

Strategic voting mode

By default, simulation runs assume honest ballots from perceived utilities. Turning on Strategic Voting Enabled (All voters strategic) applies a polling-based strategic model in which every voter uses method-specific tactical behavior.

These strategies are based on the strategic model in Quinn's VSE model, mistakes could have been made in translation, so take results with a grain of salt. In particular, Approval, STAR, Score, and Condorcet appear to become near optimal under strategic voting in ideal conditions, which requires more investigation to verify is not a bug.

This mode is useful for side-by-side comparison against the honest baseline. For technical details on the strategy model and per-method behavior, see README on GitHub.

Plurality strategic voting (multi-winner first rounds)

The plurality strategy generalizes based on how many candidates advance from the first round. In all cases, polls are derived from honest first-choice votes and the energy parameter ($\ell$) does not apply — plurality ballots are always a single vote.

For $M$ candidates advancing, each strategic voter identifies the top $M+1$ candidates by poll totals and votes for whichever of those they prefer most. This is based on the $M+1$ rule by Gary Cox, in his 1994 paper on strategy in SNTV elections.

Plurality ($M=1$): consider the top 2 (frontrunner and runner-up); vote for your favorite between them. This is classical strategic plurality voting.
Plurality Top 2 ($M=2$): consider the top 3; vote for your favorite among them. Since two candidates advance, there is now a reason to vote for a third-place candidate you prefer over either frontrunner — you can try to push them into the runoff.
Plurality Condorcet Top 3 ($M=3$): consider the top 4; vote for your favorite among them. The same logic applies: supporting a candidate outside the top three may lift them into the Condorcet stage.

Approval strategic voting: Laslier's Leader Rule

The two Approval strategy options toggles add extra variants of Approval and Approval Top 2 that appear alongside the base methods in strategic view — they do not replace them. The base Approval and Approval Top 2 methods always use the pivot strategy described below.

Base pivot strategy (Approval and Approval Top 2): Each strategic voter finds a pivot point midway between their perceived utilities for the polling frontrunner and runner-up, approves all considered candidates above that pivot, then forces the frontrunner or runner-up onto or off the ballot depending on which they prefer. This is a tactical heuristic adapted from Quinn's VSE model.

Laslier's Leader Rule (adds Approval (Leader) and Approval Top 2 (Leader) in strategic view when enabled): A preliminary honest approval poll identifies the leader (the honest winner) and the challenger (the runner-up). Each voter then constructs their ballot as:

  1. Approve every candidate they prefer to the leader.
  2. Approve the leader if and only if they prefer the leader to the challenger.
  3. Approve no other candidates.

The energy parameter ($\ell$) truncates this ballot to the voter's top-$K$ considered candidates, just as with all other strategies. This rule is well-grounded in the game-theoretic literature: voters treat the election as a binary contest between leader and challenger, and only support the leader when they prefer them over the main rival.

Approval Top 2: generalized Leader Rule for the first round

Enabling the generalized Leader Rule for Approval Top 2 adds Approval Top 2 (Gen. Leader) in strategic view (replacing Approval Top 2 (Leader) if the Leader Rule is also enabled). This applies a three-way strategic heuristic to the first round, based on the top three candidates ($x_1$, $x_2$, $x_3$) from an initial honest approval poll:

  • Approve $x_1$ if and only if they prefer $x_1$ to $x_3$.
  • Approve $x_2$ if and only if they prefer $x_2$ to $x_3$.
  • Approve all other candidates (including $x_3$) if and only if they prefer that candidate to $x_2$.

The intuition is that voters want to control which two finalists advance. They support the top two only when they beat the third-place threat, and support everyone else only when they beat the second-place frontrunner. Energy truncation applies as usual.