Design and demonstrate an algorithm for optimizing seat assignments as follows:
Seats are assembled into groups. Within those groups seats are assembled next to each other. Some seats are desirable, others are less so.
People are put into teams. The algorithm must prioritize grouping teams into seats together, subject to the following constraints:
1 -- Some people have pre-assigned seats. The optimization must take those into account but cannot move them.
2 -- Desirable seats should be assigned and prioritized above nondesireable seats.
3 -- Ideally teams are seated not only in the same group, but adjacent to each other.
4 -- Teams have a preferred seat group (although this is less important than the other rules above).
We will be coding whatever algorithm you develop, so we need great documentation on the model and also a demonstration for how it works.