We're just about a month from the wedding and things are starting to get tight. It's hard to tell for sure though because I can't keep everything that needs to be done in my head at the same time. Lately I've been mostly focusing on our trip to Italy (ie. the honeymoon). I'm almost done booking accommodations and figuring out where we want to be and when. It would be nice to have a full month and just wander the country at our leisure, but with only two weeks it seemed more prudent to plan it all out to be sure we hit all the things we really want to see. I'm really excited for this trip.
As for actual wedding planning stuff, that is less exciting. Most of it is boring details that make me tired when I try to think about them. I don't think I'm cut out for event planning. Or even assistant event planning. I'm more the kind of person who is happy to lift things and move them around on the day of the event, following the instructions of some other, more useful individual.
One of the things we need to do is create a seating plan for the reception. Of course this is painfully difficult given all the requirements and the fact that the guest list isn't quite final yet. I started thinking about how to write a program to calculate an optimal (or at least acceptable) seating arrangement and I quickly realized that would be a lot of work, but maybe not impossible. However it is probably too much work given the amount of time I have left.
My first thoughts on this problem were to assign each person a list of people they must be seated with and a list of people they cannot be seated with. That alone should be enough information to at least produce a seating arrangement that prevents open warfare. However the hope is that the tables produce happy times for as many guests as possible. This would require more properties for each guest, things like age, whether the guest is from the bride's or groom's side, and more specifically if the guest is a family member. Then it would be important to arrange the tables such that either there is a balance between the people at the table or else the table is completely matching on properties. For example, a table could have an equal balance of older guests and younger guests or it could be all older guests or all younger guests. You don't want a situation where a table is all older guests except for one or two people as that case may lead to the smaller group being excluded from conversation. The other important factor is whether or not people at the table already know each other. If you have a table where everyone is really good friends except for a single individual, then that individual is sure to be excluded (unless they are very outgoing).
One possible concrete implementation of this mess could be a rating system. Given all the properties for all the people, you could compute compatibility scores between any two people (almost like a dating service) and those scores could be used to find the best table to seat a person at. The overall score for a completed table could be the lowest compatibility score at the table and then the optimal solution becomes the one that maximizes the sum of the table scores. This could maybe perform pretty well and would be easy to extend with more properties any time you thought of some.
Given that I haven't tried to implement this I'm sure there are a lot of holes in it and I don't really have an idea at the moment as to a way to implement it that wouldn't have terrible performance. Given that we have a finite number of guests I suppose performance wouldn't be a big deal (unless it's exponential). Furthermore this all makes the assumption that tables are little worlds onto themselves, when in reality adjacent (or even semi-adjacent) tables will provide opportunities for communication between guests. Perhaps this is more like a weird shortest path graph problem where the score is computed as a function of compatibility between guests and distance between those guests attempting to minimize the distance between the most compatible guests.
Anyway, lots of fun ideas to explore, but no real time to do so. And now it's later at night than I intended to stay up. Whoops.