Вы также можете взглянуть на технику, называемую «имитация отжига». Как и генетические алгоритмы, здесь используется функция оценки для определения качества возможных решений, но генерация кандидатов, как правило, проще. Каждый тип алгоритма дает лучшие результаты в определенных обстоятельствах - из краткого опроса Google кажется, что генетический имеет преимущество, но отжиг будет быстрее осуществить.
Вот документ для сравнения (для другого домена, без планирования):
http://www.ee.utulsa.edu/~tmanikas/Pubs/gasa-TR-96-101.pdf
Мы использовали моделируемый отжиг в большом приложении планирования, и он работал хорошо.
Честно говоря, если численность персонала составляет менее 40, я бы рекомендовал дать визуальное представление списка и дать пользователю возможность завершить график. Возможно, вам следует использовать алгоритм для создания расписания кандидатов, а затем позволить пользователю поиграть с ним. Вы все еще можете использовать функцию оценки, чтобы проверить работу пользователя и дать отзыв о том, насколько хорошо его решение.