/event-seating-optimizer

Python code to optimize event seating. Supports multiple tables of different sizes. Optimizes arrangements based on pair-wise scores.

Primary LanguageJupyter Notebook

Event Seating Optimizer

This project uses linear programming in python to optimize event seating. It supports multiple tables of different sizes. The seating arrangements are optimized based on pair-wise happiness scores assigned to pairs of event attendees.

Problem Setup

The problem uses the pulp python library to optimize the seating arrangements. It requires a list of guests, the number and capacity of each table, and happiness scores for each pair of attendees. Guests are provided as a space-separated string. The table capacity is a list of tuples, with each element representing the (table capacity, number of tables). The constraints are that each person must be seated at a table, and only one table and the number and capacity of each table are respected.

image

Happiness Scores

A csv file is used to score pairs of attendees. Every possible combination of pairs is listed in the pairs column. Set large negative values for undesirable combinations (-200), in this case, we don't want anyone seated at a table alone. Partners that you want at the same table should be assigned a large positive score (+200). People that know each other can be given a small positive score (+50) and people that don't know each other can have a neutral score of zero or slightly negative.

image

Optimizing the Seating Arrangements

In the example, 32 guests are seated at one of six tables of four people, or five tables of two people. The function prints out the optimal seating based on the happiness scores and problem constraints. image