Hedonic Game Simulator

Welcome to the hedonic game simulator! I will be presenting this at the 2017 Algorithmic Decision Theory Doctoral Consortium. I uploaded my extended abstract to arXiv.

This software doesn't work at all on smartphones. Desktop with recent chrome or firefox recommended. You can click and drag the nodes in the box.

What is a hedonic game?

Basic idea

You have a set of people which for some reason needs to split into groups. The people are called players and the groups are called coalitions. Maybe the set of people is your kindergarten class and they need to split up so each group can build a lego tower. A player might really want to be in some coalitions, but not in others. These are the player's preferences. Once the whole set of players is split into coalitions, it's called a partition or a coalition formation. Hedonic games are the study of how people cooperate and form groups together and when partitions are stable and when partitions fall apart.

More at Wikipedia or in [Woe2013].

Hedonic games were independently introduced in [BKS2001] and [BJ2002].

Notation

\(N\) is the set of players, \(n = |N|\) is the number of players, and \(\Gamma\) is a partition of \(N\). Usually, \(A \subseteq N\) is a coalition and \(a\) is a player in \(A\). And \(i\) is a player from anywhere in \(N\).

If some player \(i\) would rather be in coalition \(A\) than coalition \(B\), then we say \(A >_i B\). In principle, \(i\)'s preferences are defined by listing all the subsets of \(N\) which contain \(i\) in order of decreasing desirability. But that would take tons of computer memory or paper and ink, so we mainly focus on hedonic games which are compactly representable. This means that there is some concise way of describing each player's preferences over the possible coalitions. Sometimes that means you have a score function which takes a player and a coalition as input and outputs a real number; the larger the number the more that player likes that coalition. Once you know the score functions, you can concisely say that \(A >_i B\) if and only if \(score_i(A) > score_i(B)\).

Most of the notation here is from [NRRRS2016]. Other stuff I added to make it more programmer-friendly.

References

In no particular order...

Public domain dedication. No rights reserved. Look at the source!

Hosted on Github. Using graph library sigmajs.

To request a feature or report a bug, you can use github or you can email luke.lambda@uky.edu . There is a standing bounty of $2.56, to be mailed to the first person to find a bug.