Simulating plausible ballot paper preferences from STV count sheets
When analysing single transferable vote (STV) elections, we often desire a record of the preferences lodged by voters, so that voting patterns can be analysed in detail, or to see how changes in voters' preferences or in the rules of the count might impact… »
OpenTally dev log: Battery of optimisations leads to 108% performance improvement
Using rational arithmetic, OpenTally e825ca1 processes the 3,821,539-vote 2022 Australian Senate election for Victoria in a mean 11.34 (95% CI ± 0.03) seconds on my Intel i5-7500. This week I put some time into cutting this figure down.
Later-no-harm and the ‘Wright’ method of single transferable vote
Later-no-harm is a criterion for preferential voting methods which provides that ‘Adding a later preference to a ballot should not harm any candidate already listed’ . The most well-known voting systems which comply with later-no-harm are the single transferable vote (STV), and its single-winner… »
Curiosities in drafting for the weighted inclusive Gregory method of STV
In Australia, 2 jurisdictions make use of the weighted inclusive Gregory method of the single transferable vote (STV). The weighted inclusive Gregory method of STV is one of 2 systems recommended by the Proportional Representation Society of Australia as part of a gold standard electoral… »
The failure of unweighted inclusive Gregory STV
The single transferable vote (STV) is a family of voting systems designed to achieve proportional representation. It is widely used in Australia in multi-winner elections, in both governments and private contexts.
Most STV systems in use in Australia fall into one of two categories: exclusive… »
A conceptual primer on the single transferable vote – 6: Meek method
In part 5, we presented the weighted inclusive Gregory method. In that part and all previous parts, during the distribution of preferences we have ‘skipped over’ any candidates who have already been elected, as we said that to give extra votes to any of… »
A conceptual primer on the single transferable vote – 5: Weighted inclusive Gregory method
In part 4, we presented the Gregory method, which removes random effects from STV. In that part, we continued with a decision made in part 3 to restrict the ballot papers which can contribute to a surplus distribution, yielding the exclusive Gregory method.
A conceptual primer on the single transferable vote – 4: Exclusive Gregory method
In part 3, we discussed a refinement to random transfer STV, noting that even in refined form it is still subject to random effects. In this part, we introduce a method which eliminates randomness from STV completely.
For the sake of illustration, let's again… »
A conceptual primer on the single transferable vote – 3: Refining random transfer STV
In part 2, we described the original 1873 implementation of STV by Thomas Hare, noting that the method then proposed was highly influenced by the effect of random chance. In this part, we will introduce some strategies to reduce this effect somewhat.
For the… »
A conceptual primer on the single transferable vote – 2: Andrae's and Hare's methods
At the end of part 1, we provided an outline of STV:
a voting system which mimics the effect of repeated SNTV, where each voter has only 1 vote at a time, but where the voting system automatically redirects wasted votes from candidates elected
A conceptual primer on the single transferable vote – 1: Building a fair voting system
The single transferable vote (STV) is a family of multiple-winner voting systems which provide proportional representation by allowing voters to rank candidates in order of preference.
This series provides a primer on the principles of STV, from its conceptual foundations through to contemporary developments in… »
Parcels? Subparcels? Not just for STV hand counts! – OpenTally dev log
Single transferable vote rules designed for hand-counting often contain references to ‘parcels’ (or ‘bundles’ or ‘batches’), ‘further parcels’ and sometimes even ‘subparcels’.
For example, consider the 4th stage of the ERS97 model election. 107 of Glazier's and Wright's ballot papers are aggregated according to… »
Implementing a BLT parser by hand in Rust (vs pest and combine): OpenTally dev log
OpenTally is open-source software which can count single transferable vote elections specified using the BLT file format.
Earlier this month, I replaced OpenTally's previous naive string-manipulation-based BLT parser with one using pest. A new parser was necessary to support extensions to the BLT… »
Asyncify with vanilla JS/WebAssembly (wasm-bindgen compatible)
WebAssembly is a technology for executing compiled programs in the web browser at near-native speeds. However, it has a number of current limitations, including that it does not support coroutines/asynchronicity.
In OpenTally, WebAssembly is used to run code for counting an election. This… »
Model rules for a computerised STV election using the weighted inclusive Gregory method
OpenTally is open-source software for counting single transferable vote (STV) elections. The default preset in OpenTally is ‘OpenTally WIGM’, a recommended set of simple STV rules designed for computer counting, using the weighted inclusive Gregory method, exact quotas and rational arithmetic.
The weighted inclusive Gregory… »
Reducing binary size with DIY dynamic dispatch: OpenTally dev log
OpenTally is open source software for the counting of preferential voting elections. One feature of OpenTally is support for various different representations of numbers, from floating-point arithmetic through to exact rational representations.
In OpenTally, these are implemented using generics. For example, consider the following… »
Compiling I D Hill's New Zealand Meek STV implementation: OpenTally dev log
In , I D Hill describes an implementation of Meek STV written in Pascal, which had been privately circulated since as early as 1999 . The implementation is similar to the earlier ‘Algorithm 123’ Pascal implementation of Meek STV by Hill, Wichmann and… »
Multiple constraints in STV elections: OpenTally dev log
OpenTally is open source software currently under development for the counting of elections using STV and related systems. Part of its feature set is the implementation of constraints on elections: for example, where a certain minimum or maximum number of candidates must be elected from… »
Porting Python to Rust/WebAssembly: OpenTally dev log
Background and motivation
pyRCV2 is software for open-source election counting. It is intended to be usable across multiple platforms – as a web application, for the convenience of users less technologically inclined, and as a standalone CLI desktop application, for better performance. To this end,… »