Задача назначения на несколько дней


10

У меня есть проблема, которая может быть сведена к проблеме назначения. (В предыдущем вопросе я узнал, как это сделать.)

Это означает, что у нас есть набор агентов и набор задач а также функция стоимости . Нам нужно найти назначение, чтобы общая стоимость была минимальной.Ac ( i , j )Tс(я,J)

Венгерский алгоритм может найти оптимальное решение по крайней мере . Что звучит хорошо для меня.О(N4)

Моя новая проблема: есть определенное количество дней. Я должен решить задачу назначения для каждого дня, чтобы каждая задача выполнялась каждый день, и ни один агент не выполнял одну и ту же задачу дважды .

Что я пробовал: мы могли запускать венгерский алгоритм отдельно для каждого дня и ограничивать количество возможных комбинаций на основе результата предыдущего дня. Но это может привести к проблемам в более поздние дни, когда, скорее всего, будет невозможно найти выполнимое решение.

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

Проблемы, с которыми мне приходится сталкиваться, будут где-то рядом . Матрица затрат будет иметь много одинаковых значений (например, в основном 1 или бесконечность, только некоторые 2 или 3). Таким образом, во время венгерского алгоритма есть много места для создания различных оптимальных решений за один день.С ( i , j )|A|знак равно|T|знак равно500С(я,J)

Я был бы рад услышать некоторые идеи или советы, как найти хорошее решение проблемы. Заранее спасибо.


1
Это большой вопрос! Я бы предложил использовать минимальную стоимость, теорему Холла о браке и максимальное двустороннее сопоставление.
Питер Шор

Ответы:


6

Есть путь к этому в полиномиальное время. Я нарисую алгоритм (в обратном порядке ... сначала выполните шаг 2, а затем шаг 1).

  1. если мы сможем найти набор из пар агент-задача ( i , j ) , так что каждая задача будет ровно k пар, каждый агент будет ровно k пар и ни одна пара не появится более одного раза, тогда мы сможем найти k назначений которые вместе покрывают этот п K пар агента задач. Мы делаем это путем многократного использования алгоритма максимального двудольного сопоставления, чтобы найти идеальное совпадение в соответствующем двудольном графе, и удаления этого назначения из графа. Теорема Холла о браке гарантирует, что мы можем сделать это.NК(я,J)КККNК

  2. NКsTК0К0яJ1с(я,J)01(я,J)1

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


Последний вопрос: алгоритм минимизации затрат на шаге 2 (для начала я выбрал отмену цикла) обеспечивает оптимальное решение. Максимальный алгоритм соответствия на шаге 1 делает это с. Обязательно ли это означает, что все решение является оптимальным? Потому что, я думаю, проблема в NP-Complete.
Патрик Шмидт

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