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
A good approximation for this can be had by the use of a Genetic algorithm.
Write a function to create 1000 sample random schedules assigning makers and managers randomly.
Write another function (fitness function) that assigns demerits to schedules with problems (people working at the same time, not enough makers, not enough managers, someone not worked enough, someone worked too much).
foreach schedule assign calculate fitness keeping a reference to the lowest scoring (best) schedule.
while (best schedule > minimum fitness value)
foreach schedule s in population of schedules
foreach time slot
if (random < .5)
choose value from best schedule
else
choose value from schedule s
end if
end foreach
score schedule s with fitness function
end foreach
end while
While this method will not produce an optimal schedule and has the possibility of finding local minimums. It will always produce a schedule and you can always add more constraints to the fitness function for any conditions you don't want to see. This type of algorithm can handle many different types of constraint satisifaction problems.
I have personally used a similar algorithm to schedule my Wifes Co-Op preschool for the entire year in about two hours on my laptop.