diff --git a/docs/options.md b/docs/options.md index e0211c0..d32881d 100644 --- a/docs/options.md +++ b/docs/options.md @@ -167,10 +167,33 @@ The algorithm used by the random number generator is specified at [rng.md](https This file selector allows you to load a [CON file](https://yingtongli.me/git/OpenTally/about/docs/con-fmt.md) specifying constraints on the election. For example, if a certain minimum or maximum number of candidates can be elected from a particular category. -OpenTally applies constraints using the Grey–Fitzgerald method. Whenever a candidate is declared elected or excluded, any candidate who must be elected to secure a conformant result is deemed *guarded*, and any candidate who must not be elected to secure a conformant result is deemed *doomed*. Any candidate who is doomed is excluded at the next opportunity. Any candidate who is guarded is prevented from being excluded. +### Constraint method (--constraint-method) + +This dropdown allows you to select how constraints are applied. The options are: + +*Guard/doom* (default): + +When this option is selected, OpenTally applies constraints using the Grey–Fitzgerald method. Whenever a candidate is declared elected or excluded, any candidate who must be elected to secure a conformant result is deemed *guarded*, and any candidate who must not be elected to secure a conformant result is deemed *doomed*. Any candidate who is doomed is excluded at the next opportunity. Any candidate who is guarded is prevented from being excluded. Multiple constraints are supported using the method described by Hill ([*Voting Matters* 1998;(9):2–4](http://www.votingmatters.org.uk/ISSUE9/P1.HTM)) and Otten ([*Voting Matters* 2001;(13):4–7](http://www.votingmatters.org.uk/ISSUE13/P3.HTM)). +*Repeat count*: + +When this option is selected, only constraints specifying a maximum number of candidates to be elected from a particular group are supported. Other constraint groups will be **silently ignored**. Note that each candidate must still be assigned to exactly one group within each constraint. + +The count proceeds as normal, until the point that a candidate would be elected who would violate the constraint. At this point, that candidate and all other candidates from the constrained group are excluded, and all previously excluded candidates from the non-constrained group are reintroduced. + +All ballot papers are removed from the count, and redistributed among the candidates in the following order: + +* Any undistributed surpluses, each surplus comprising one stage +* Any exhausted ballot papers, in one or more stages (according to *Exclusion method*) +* The ballot papers of each continuing candidate from the non-constrained group, in one or more stages (according to *Exclusion method*), candidate-by-candidate in random order or an order specified by the user (according to *Ties*, with options other than *Random* and *Prompt* ignored) +* The ballot papers of each continuing candidate from the constrained group, in like manner + +Once all ballot papers have been so redistributed, the count resumes as usual. + +This method is specified, for example, in Schedule 1.1 of the [Monash Student Association *Election Regulations* (2021)](https://msa.monash.edu/app/uploads/2021/07/MSA-Election-Regulations-2021.pdf). + ## Report options ### Report style diff --git a/html/index.html b/html/index.html index f9d5670..d26c216 100644 --- a/html/index.html +++ b/html/index.html @@ -183,7 +183,16 @@ Constraints: