/circular_societies

Python tools for visualizing and generating examples of "circular societies" in approval voting.

Primary LanguageJupyter Notebook

Circular Societies Visualization Tool

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 Open In Colab

Contents

  • Background
  • The circularsocieties module
    • Documentation
    • Requirements

Background

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]

The circularsocieties module

Documentation

Requirements

  • 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)