Задача о назначении минимального количества исполнителей
Из Википедии, бесплатной энциклопедии
В прикладной математике под задачей о назначении минимального количества исполнителей понимается задача комбинаторной оптимизации, обобщающая задачу о покрытии множества и схожая по постановке с задачей о назначениях.
В этой задаче множество исполнителей имеет размер не обязательно равный размеру множества работ. При этом исполнитель может быть назначен для выполнения нескольких работ одновременно, а на каждую работу назначается только по одному исполнителю. Имеется общий бюджет на выполнение всех работ, который является ограничением при назначении. Требуется найти такое назначение исполнителей для выполнения работ, чтобы количество задействованных на выполнение работ исполнителей было минимально и не произошло превышения выделенного на весь комплекс работ бюджета.
Определение
[править | править код]Имеется n исполнителей и m работ. Для каждой пары исполнитель и работа заданы затраты на выполнения работы . Имеется общий бюджет на выполнения всего комплекса работ. Решением является подмножество исполнителей U и распределение назначения исполнителей из U по работам. Решение допустимо, если назначены исполнители для всех работ и сумма затрат для этого не превосходит бюджета . Требуется минимизировать количество назначенных исполнителей (L). Другими словами, требуется подобрать минимальное по размеру (мощности) множество исполнителей, которые вместе смогут выполнить все работы.
Задача может решаться путем разбиения на две задачи:
- Подбор минимальной по численности группы исполнителей, которые вместе смогут выполнить все работы и уложатся в бюджет . Данная проблема NP-трудная, т.к. является обобщением NP-полной задачи о покрытии множества.
- Назначение в подобранной группе исполнителей по работам.
Математически задачу о назначениях минимального количества исполнителей можно сформулировать следующим образом[1]:
- minimize
- subject to
- ;
- .
В данной постановке целевая функция задачи нелинейна, что не позволяет напрямую найти оптимальное решение точными методами линейного программирования, включая симплекс-метод. Однако, задачу можно линеаризовать, включив дополнительные переменные , показывающие факт выбора в группу исполнителя , . Требуется также связать переменные и . Тогда целевая функция примет вид
- minimize .
Связь же переменных можно задать следующим условием:
Приближённые алгоритмы
[править | править код]Для быстрого решения задач большой размерности целесообразно использовать приближенные алгоритмы: алгоритм максимального количества минимальных элементов (МКМЭ) и алгоритм максимального количества допустимых элементов (МКДЭ)[2].
См. также
[править | править код]Примечания
[править | править код]- ↑ Катаев А.В., Катаева Т.М., Коженко Я.В. Оптимизация численного состава команды проекта: экономико-математический инструментарий / А. В. Катаев, Т. М. Катаева, Я. В. Коженко // Конкурентоспособность в глобальном мире: экономика, наука, технологии. 2016. – № 8-3 (22). – С. 101-104
- ↑ Катаев А.В., Катаева Т.М. Управление проектами на базе динамической сети партнеров: монография. – Ростов-на-Дону – Таганрог: Издательство Южного федерального университета, 2017. – 125 с.