Первые две точки являются ограничениями для задачи.Третий пункт указывает способ сортировки возможных решений, если вы формализуете его, вы получите проблему оптимизации.На самом деле вы пытаетесь свести к минимуму различия в рабочих распределениях.
Обратите внимание, что из-за ограничений проблема может не иметь приемлемого решения.
Это проблема комбинаторной оптимизации, которую вы можете решитьэто точно с помощью методов целочисленного линейного программирования или приблизительно с помощью методов стохастического локального поиска (они также известны как метаэвристика или многие другие имена), таких как генетические алгоритмы, имитационный отжиг, поиск по табу, повторный локальный поиск, оптимизация колоний муравьев и т.1005 *
Этот специфический класс проблем известен как планирование работы, и есть много литературы об этом с большим количеством вариантов.
Если это не домашняя работа, я думаю, этого должно быть достаточно для удовлетворения вашего любопытства, если это так, я думаю, что я сказал вам, что вы можете посмотреть.