Пожалуйста, дайте мне знать, какой алгоритм подходит для проблемы ниже:
У нас есть конечное количество проектов за заданный 3-месячный период (обычно ‹ 50). Каждый проект рассчитан на определенное количество часов.
У нас есть конечное количество ресурсов (обычно ‹ 100) за тот же 3-месячный период.
Каждый ресурс может потреблять уникальное количество часов в месяц (с учетом праздников, личных отпусков и т. д. — это количество часов в месяц уже рассчитано для каждого ресурса и доступно).
Можно выделить один ресурс для нескольких проектов.
Я думаю, что это похоже на проблему упаковки контейнеров, перевернутую с ног на голову, если мы рассматриваем проекты как контейнеры, ресурсы как объекты, а часы как объем объектов. По крайней мере две вещи заставляют его отклоняться от формальной задачи упаковки в контейнеры:
- Ресурсы — это текучие объекты, которые могут капать несколько часов в одну корзину и несколько часов в другую.
- Оптимальное решение состоит не в том, чтобы свести к минимуму количество используемых бинов (проектов), а в том, чтобы свести к минимуму количество раз, когда ресурс должен разделяться между проектами и гарантировать использование всех проектов.
Я чувствую, что могу гоняться за гусями с углом упаковки мусорного ведра. Есть ли более подходящий для этого алгоритм?