Kristen Mazur, Mutiara Sondjaja, Matthew Wright, and Carolyn Yarnall
This github repostory contains a set of python tools for visualizing and generating examples of "circular societies" in approval voting.
Try online: examples-Google_Colab.ipynb
Contents
- Background
- The
circularsocieties
module- Documentation
- Requirements
The development of this tool is motivated by the following papers, which study approval voting in a mathematical context.
- Deborah E. Berg, Serguei Norine, Francis Edward Su, Robin Thomas, and Paul Wollan. "Voting in agreeable societies." The American Mathematical Monthly 117, no. 1 (2010): 27-39. [link]
- Christopher S. Hardin, "Agreement in circular societies." The American Mathematical Monthly 117, no. 1 (2010): 40-49. [link]
- Kristen Mazur, Mutiara Sondjaja, Matthew Wright, and Carolyn Yarnall. "Approval voting in product societies." The American Mathematical Monthly 125, no. 1 (2018): 29-43.[link]
- Francis Edward Su and Shira Zerbib. "Piercing numbers in approval voting." Mathematical Social Sciences 101 (2019): 65-71. [link]
- circularsocieties.py
- Examples (local Jupyter notebook): examples.ipynb
- Examples (online): examples-Google_Colab.ipynb
- numpy (for linear algebra computations)
- matplotlib (for plotting/visualization)
- cvxpy (for computing piercing numbers via integer programming)
- cvxopt (allows cvxpy to use the open source mixed-integer program solver 'GLPK_MI')
- itertools (for generating combinations of k objects from a collection of m objects)