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$).
⚡ 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)$.
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 runoff options
Approval strategy options
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: uses the exact same first-round ballot as Plurality.
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: 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.
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.
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 Runoff Utilities
By default we use the voter's true utilities to determine runoff votes for both Plurality Top 2 and Approval Top 2. This is done for Top 2 runoff methods but not STAR for a simple reason. Unlike in STAR where the runoff is automatically calculated by the ballots submitted by the voters, Top 2 runoffs happen later and can benefit from this extra comparison time. It seems far more plausible that voters can be 100% sure which candidate they truly prefer if they have only two candidates to compare, and time after the initial voting allows them to make this determination accurately.
This setting can be toggled in the simulation options.
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.
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:
- Approve every candidate they prefer to the leader.
- Approve the leader if and only if they prefer the leader to the challenger.
- 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.