У меня есть проблема с расписанием задач / заданий, и я хотел бы найти, предпочтительно, эффективные алгоритмы для ее решения.
Допустим, есть некоторые работники.Каждый работник может выполнять различный набор задач / заданий.Следующий пример может прояснить это:
Worker A (can do): T2, T3
Worker B : T1, T3, T4
Worker C : T3, T5
Теперь у нас есть список задач, которые необходимо выполнить.Например, список выглядит примерно так: T1, T3, T5
Есть некоторые ограничения:
- Каждая задача должна выполняться одним рабочим
- Несколько задач могутприниматься одновременно
- Но работник может выполнять только одну задачу одновременно.(Он / она недоступен до завершения задания)
Для приведенного выше примера у нас может быть расписание, подобное этому:
T1 --> Worker B
T3 --> Worker C T5 --> Worker C
Как вы могли заметить, приведенное вышеграфик не оптимальный.Потому что Т5 должен ждать работника С, чтобы закончить Т3.Лучше будет использовать следующее решение:
T1 --> Worker B
T3 --> Worker A
T5 --> Worker C
Поскольку ожидания нет.
Теперь предположим, что я знаю матрицу рабочих задач (какой работник может выполнять какие задачи). Задачи будут приходить одна за другой, но не знаю, что это будет. Меня просят спланировать планировщик, который автоматически находит свободного работника для каждой предстоящей задачи.И когда, наконец, все задачи выполнены, наступает минимальное время ожидания.
Поэтому мне нужен алгоритм для этого планировщика.Я не хочу изобретать велосипед, если идеальное колесо уже существует.Может ли кто-нибудь помочь?
Спасибо.