COMSOC researchers have developed a large number of tools over the years. These tools serve different objectives. Some are meant to help people produce better research. Others are intended for outreach, to bring the benefits and excitement of COMSOC research to a broader audience.
Below you will find a list of such tools, organised by topic of study and by type of tool. Badges are used to indicate relevant features:
For each topic, we have identified some “reference tools”. These are tools that are particularly helpful and that should to be considered by anyone who is thinking of developing new tools on the same topic. Before developing a new tool, explore the reference tools on the topic to assess what the conventions are (data format, etc.). Consider extending the reference tools rather than creating new ones.
Each tool also is assigned a tag based on where in the typical pipeline of a COMSOC problem it is most useful:
Preferences tools to deal with data on preferences
Aggregation tools to perform aggregation of individual preferences into collective decisions
Analysis tools for the analysis of aggregation processes and their outcomes
Application application platforms offering COMSOC tools to the general public
Outreach tools designed for outreach purposes
The development of tools for and by the COMSOC community is guided by the general spirit of this community together with the principles of open-source development. We want to create a vibrant and inclusive ecosystem that benefits everyone. The success of the tools can only come together with support from the community.
To this end, we have assembled a list of best practices to be considered when developing tools:
Below is a list of programming languages together with the number of tools on this page that use them. This can be helpful in determining what might be a suitable programming languages for a future tool.
Tools are often used to conduct numerical experiments. Consult this recent survey paper for advice on how to run such experiments as well as a discussion of current standards and practices (see also the associated database of experimental papers in COMSOC).
PrefLib is a reference library of preference data that provides carefully curated data in a unified format.
Simon Rey, Nick Mattei () and Toby Walsh
Django
PrefSampling is a lightweight Python library that provides preference samplers. These are algorithms that generate random preferences based on precisely defined statistical cultures. It covers both ordinal and approval preferences. This tool is part of the Guide to Numerical Experiments on Elections in Computational Social Choice.
Simon Rey and Stanisław Szufa ()
Python
Mapel is a Python library to generate maps of elections.
Stanisław Szufa () and Andrzej Kaczmarczyk
Python
The Game Academy is an online platform hosting a range of interactive games that can be used to bring to life some of the core concepts in game theory and related fields, such as the notions of strategy, rationalisability, equilibrium, backward induction, or wisdom of the crowd. The platform is a usefull tool for both teaching and outreach activities.
Simon Rey and Ulle Endriss ()
PythonDjango
PrefLib-Tools is a set of Python tools developed to work with preference data from PrefLib.org. It provides input and output operations on PrefLib instances, and several property checks for such instance (such as checking for preference domain membership).
Simon Rey and Nick Mattei ()
Python
Preferential Voting Tools (pref_voting) is a Python library that can be used to study and run elections with different preferential voting methods (graded voting methods and cardinal voting methods are also included for comparison). In a preferential voting election, each voter submits a ranking of the candidates, and the winners are determined based on the submitted rankings. The rankings may include ties between candidates, and some candidates may be left off the ranking.
Eric Pacuit () and Wesley H. Holliday ()
Python
Votelib is a package to evaluate results of elections under various voting rules. It aims to provide reliable implementations of many rules so that they can be evaluated and compared as they are used under real-world conditions. The primary focus is on political decision making, but the library is not limited to evaluating political decisions only.
Jan Šimbera ()
Python
Online tool to compute and visualise the output of the maximal lotteries rule, an attractive randomised voting rule first considered by Germaine Kreweras in 1965 and independently proposed by Peter C. Fishburn in 1984.
Florian Brandl (), Felix Brandt (), René Romen (), Dominik Spies and Christian Stricker
Java Script
This website presents algorithms for various voting rules, with a focus on mechanisms involving the Kendall-tau distance, such as Kemeny consensus and Popular ranking.
Ewan Chelley () and David Manlove
Python
Stable Voting is a free and easy way to make a group decision by voting using the stable voting method.
Eric Pacuit () and Wesley H. Holliday ()
Python
Online polling platform that implements many of the major voting rules.
Sylvain Bouveret (), François Durand (), Michael Ortega () and Marie-Jeanne Natete
Online tool to make consensus-aiming probabilistic single-winner (or more general resource apportionment) decisions with proportional power guarantees, using an interactive version of the Maximum Partial Consensus method. Available in several languages.
Typescript
Approval-based committee rules (ABC rules) are voting methods for selecting a committee, i.e., a fixed-size subset of candidates. ABC rules are also known as approval-based multi-winner rules. The inputs of such rules are approval ballots.
Martin Lackner (), Peter Regner, Benjamin Krenn, Dominik Peters and many more
Python
This is an implementation of common apportionment methods. Apportionment has two main applications: to assign a fixed number of parliamentary seats to parties (proportionally to their vote count), and to assign representatives in a senate to states (proportionally to their population count).
Python
Online tool to visualise the behaviour of different approval-based committee rules. Uses the abcvoting python package as its backend.
Java Script
Online tool to visualise the behaviour of different apportionment rules.
The pabutools are a complete set of tools for working with participatory budgeting instances. It provides the tools to handle PB instances of different kinds, together with voting rules to determine the outcome of an election as well as some analytical tools.
Simon Rey, Grzegorz Pierczyński (), Markus Utke and Piotr Skowron ()
Python
Pabulib is an open PArticipatory BUdgeting LIBrary. The aim of this website is to collect participatory budgeting voting data from all over the world. It also describes a standard data format for representing a PB voting instance.
Dariusz Stolicki (), Stanisław Szufa () and Nimrod Talmon
Online tool to compute the output of the Method of Equal Shares for participatory budgeting.
Java ScriptDocusaurus
Online tool to visualise the behaviour of different participatory budgeting rules. Uses pabutools as its backend.
Pabuviz is an interactive computation and visualisation tool for participatory budgeting.
Markus Utke () and Simon Rey
DjangoReact
Outreach website aiming at collecting resources about the Method of Equal Shares for participatory budgeting and to provide an explanation of the method to interested members of the public, to city officials, and to researchers.
Dominik Peters () and Piotr Skowron ()
Spliddit offers quick, free solutions to everyday fair division problems, using methods that provide indisputable fairness guarantees and build on decades of research in economics, mathematics, and computer science.
Ariel Procaccia (), Jonathan Goldman and Nisarg Shah ()
Fairpyx is a Python library with various algorithms for fair allocation, with an emphasis on course allocation.
Python
Online tool to visualise the behaviour of two different rules for fair rent division.
Fast & Fair is designed to help you achieve a fair division of indivisible items. It offers a variety of algorithmic implementations to ensure a fair distribution of these items, taking into account standard fairness notions such as envy-freeness up to one item (EF1) and weighted envy-freeness (WEF).
Jiatong Han () and Warut Suksompong ()
PythonStreamlit
Kajibuntan proposes a way to divide household chores between two partners.
This application provides an interface to access implementations of almost 40 algorithms to compute matchings and associated structures in instances of matching problems with ordinal preferences.
David Manlove () and many more
Small application presenting visualisation of some matching algorithms.
Java Script
MatchU blends education and research by offering an interactive platform to find how to form mutually beneficial relationships, decide how to distribute resources, or resolve conflicts about a set of alternatives through a suite of algorithms that are rooted in economics, computer science, and artificial intelligence.
Hadi Hosseini (), James Ferris and Yeting Bao