1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
This program takes AEC electoral data and runs the Single Transferable Vote
algorithm on it to calculate election outcomes.
To compile this program, the following dependencies are needed:
ghc (of course)
gnu make
Note however that make isn't strictly necessary if you have a look in the
makefile to see the compilation commands required.
Aside from base, the cabal packages required to compile this program are:
directory
either-unwrap
either
transformers
parsec
vector
array
time
Compilation is done by 'make all'. Further instruction on how to use this
program can be obtained from the '--help' switch, once compiled.
The required data files this program expects can be obtained from
http://results.aec.gov.au/20499/Website/SenateDownloadsMenu-20499-Csv.htm
Specifically, the files listed under 'Formal Preferences'. At the moment this
program can only handle AEC Senate data from 2016 or later. Processing of State
Legislative Council data and more general STV data is a goal of future versions.
Valid parameters for the '--state' option are 'NSW', 'QLD', 'VIC', 'TAS, 'SA',
'WA', 'ACT', 'NT', all uppercase.
Note that the number of count logs this program outputs differs from the
number that the AEC provides. This is because the AEC's program merges a
few more logs compared to this one, eg the initial count, and counts that
elect candidates. On the other hand, the AEC program is also a lot more
verbose on the distribution of preferences, and doesn't do bulk exclusions.
Finally, be aware that processing STV data takes a long time. It also takes a
lot of memory for the larger datasets. If you want to be sure that progress is
happening, either turn on the '--verbose' switch or monitor the output log
directory.
|