Какой алгоритм следует использовать для создания функции автоматического планирования персонала?


18

Представьте себе небольшой местный бизнес (в моем случае это дневной уход за собаками) с несколькими десятками сотрудников, занятых неполный рабочий день. Цель состоит в том, чтобы автоматически создавать еженедельные штатные расписания. Мой вопрос о том, какие алгоритмические подходы исследовать для этой проблемы.

Необходимо помнить о многих ограничениях, главным образом (1) наличие персонала и (2) потребности каждой смены, а не только количество персонала для каждой смены, но навыки, необходимые для каждой смены (например, для определенной смены, вам может понадобиться кто-то, кто знает, как водить машину, чтобы делать пикапы / высадку собак, для другого, кто-то, кто знает, как принимать собачьи ванны и т. д.).

Другие ограничения включают такие вещи, как избегание или требование определенных комбинаций персонала - возможно, из-за личностных конфликтов, с одной стороны, или необходимости обучения с помощью осмоса от старшего до младшего персонала, с другой.

Также есть предпочтения, которые необходимо учитывать. Некоторые сотрудники предпочитают утро, иногда два дня подряд, а не понедельник и четверг и т. Д. Мы знаем, что не всегда можем учесть предпочтения каждого. На самом деле у нас есть иерархия, в которой сотрудники получают первые награды за свой выбор.

У меня есть догадка, что есть способ уменьшить или выразить эту проблему в существующий, уже решенный алгоритм. Но я не знаю, какие алгоритмы исследовать. Какие существующие конкретные алгоритмы будут наиболее перспективными?



3
И, кроме того, я никогда не находил алгоритм, который бы работал для этой проблемы, кроме самых простых ограничений в прошлом, кроме того, что «ставить всех на график случайным образом, игнорируя любые другие ограничения, и позволяйте им менять или принимать смены по желанию».

4
На сайте JBoss Drools доступно полное решение: optaplanner.org - вам необходимо систематизировать ограничения планирования, такие как максимальное количество часов в неделю и т. Д.
BobDalgleish

Я подозреваю, что это эквивалентно проблеме SAT, которая, как известно, является NP-полной, но нет никаких сомнений в хороших алгоритмах, которые дают разумные результаты.
Дэвид Конрад

Ответы:


16

Такие алгоритмы, как локальный поиск (поиск по табу , имитация отжига , запоздалое принятие ), очень хорошо работают с такими проблемами.

Как предполагает Боб, если вы работаете в Java, взгляните на OptaPlanner (с открытым исходным кодом). Смотрите это видео по списку сотрудников .


3
Не могли бы вы объяснить алгоритмы или добавить ссылки в какое-нибудь место, где это делается? Если вы добавляете ссылки, пожалуйста, добавьте немного информации со страницы, которая имеет отношение к делу.
Адам Цукерман

Выполнено. Примечание: многие из них также описаны в википедии.
Джеффри Де Смет
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.