You may be familiar with Paul Graham\'s essay, \"Maker\'s Schedule, Manager\'s Schedule\". The crux of the essay is that for creative and technical professional
Try taking a look at Simulated Annealing. It's similar to Genetic Algorithms as Jeremy E describes, but instead of randomly generating your starting set of schedules you start with some valid but non optimal schedule. The idea is to generate some "neighbor" of the original schedule by randomly shuffling around some meeting times, then testing fitness before iterating.
S' = Starting Schedule
S = S'
while( Fitness( S ) < Minimum Fitness )
{
NS = Neighbor( S )
if( Fitness( NS ) > Fitness( F ) )
{
S = NS
}
}
Return( S )
Instead of testing against some minimum fitness level, you could also specify a set number of iterations so you could deterministically tell when the program would finish executing.
The thing about this algorithm is the final result tends to look like the starting state, so if you wanted to weight say a large meeting (in terms of size of makers) early in the day, you could do so.