4.4. Задача «о назначениях»
Задача представляет собой частный случай Т-задачи, когда pi = = dj = 1. Отсюда и вид ее модели ЛП.
Модель ЛП
при ограничениях на хij:
где хij = 0 и 1.
Такие ограничения означают, что в каждой строке и каждом столбце матрицы ||хij|| содержится ровно по одной единице. Поэтому уравнение баланса превращается в условиеm = n.
Однако число уравнений остается равным m + n = m + m = 2m. Столько же и переменных хij, не равных тождественно 0. Из них m переменных равны 1, поскольку каждая единица содержится в строке и столбце одновременно. Остальные переменные равны 0 (так называемая нулевая поставка в распределительном методе).
Отсюда ясно, что алгоритм задачи может быть значительно упрощен.
Решение задачи «О назначениях»
(венгерский метод)
Этот метод позволяет работать с большими матрицами, что делает его популярным при ручной обработке данных.
Лемма. Если элементы какой-либо строки или столбца матрицы стоимостей ||сij|| изменить на какое-нибудь число, то назначение от этого не изменится, т.е. решение задачи сохраняется.
Алгоритм решения задачи теперь опишем по шагам.
Шаг 1. Замена минимальных значений сij в строках и столбцах матрицы ||сij|| нулями с помощью преобразований:
– в строках фиксировано,
– в столбцах фиксировано.
По лемме эти преобразования не меняют решение задачи. Теперь каждая строка и каждый столбец содержит, по крайней мере, по нулю.
Шаг 2. Пробное max назначение. Метятся нули в строках с единственным нулем. Остальные нули в столбцах с помеченным нулем зачеркиваются. Если такие строки исчерпаны, то переходят к столбцам с единственным нулем. В результате все нули в матрице ||сij|| оказываются либо помеченными, либо зачеркнутыми. Если назначение полное, то КОНЕЦ. Иначе – переход на шаг 3.
Шаг 3. Построение min опоры (по операциям):
а) помечаем строку без назначения (такая строка найдется, иначе назначение было бы полным);
б) помечаем столбец с зачеркнутым нулем в помеченной строке (такой ноль найдется, иначе строка имела бы назначение);
в) помечаем строку с назначением в помеченном столбце (ноль с назначением в столбце найдется, иначе в нем не было бы зачеркнутого нуля);
г) повторяем операции б и в пока возможно.
Шаг 4. В матрице ||сij|| вычеркиваем помеченные столбцы и непомеченные строки. При этом гарантируется, что вычеркнутые столбцы и строки содержат все нули матрицы ||сij|| и их число минимально.
Шаг 5. Среди оставшихся элементов матрицы ||сij|| находим минимальный и вычитаем его из них (появляются новые нули), а к элементам на пересечении вычеркнутых строк и столбцов прибавляем его. Остальные элементы остаются без изменения. Переход на шаг 2.
Выводы:
1)
2) теперь можно вычислить Fц:
где сij являются элементами исходной матрицы стоимостей ||сij||.
Замечания к решению задачи
1. Если условие баланса нарушено (m ≠ n), то матрица ||сij|| дополняется фиктивной строкой или столбцом с нулевыми элементами.
2. Если исходная задача на max Fц, то она сводится к задаче на min Fц преобразованием матрицы ||сij||:
3. Если на втором шаге оказалось, что строк и столбцов с единственным нулем нет, то это означает, что задача имеет варианты решения с тем же значением Fц.
Иллюстративный пример
Пусть требуется решить задачу о назначениях на max Fц с матрицей стоимостей, представленной ниже. Преобразовав ее в соответствии с замечаниями 1 и 2, последовательно получим матрицы 1 и 2.
| 1 | 2 | 3 | 4 | 5 | Матрица 1 | |||||||
1 | 3 | 3 | 2 | 0 | 8 | ||||||||
2 | 10 | 1 | 8 | 9 | 1 | ||||||||
3 | 10 | 3 | 6 | 8 | 4 | ||||||||
4 | 7 | 8 | 4 | 6 | 9 | ||||||||
5 | 1 | 9 | 4 | 3 | 8 |
| 3 | 3 | 2 | 0 | 8 | 0 | |
6 | 9 | 2 | 3 | 6 | 1 | 10 | 1 | 8 | 9 | 1 | 0 | ||
Матрица 2 | 10 | 3 | 6 | 8 | 4 | 0 | |||||||
7 | 8 | 4 | 6 | 9 | 0 | ||||||||
7 | 7 | 8 | 10 | 2 | 10 | 2 |
| 1 | 9 | 4 | 3 | 8 | 0 |
0 | 9 | 2 | 1 | 9 | 10 | 0 | 9 | 2 | 3 | 6 | 1 | 0 | |
0 | 7 | 4 | 2 | 6 | 10 | 0 | max cij = 10 |
| |||||
3 | 2 | 6 | 4 | 1 | 10 | 1 |
| ||||||
9 | 1 | 6 | 7 | 2 | 10 | 1 |
| ||||||
1 | 8 | 7 | 4 | 9 | 10 | 1 |
Задача свелась к задаче на minFц, а матрица стоимостей стала квадратной. Теперь к ней можно применить алгоритм. Сделаем замену минимумов в строках и столбцах нулями = шаг 1 (матр. 2–4).
Матрица 3Матрица 4 Матрица 5
5 | 5 | 6 | 8 | 0 | 8 |
| 5 | 5 | 4 | 7 | 0 | 0 |
| 5 | 5 | 4 | 7 | 0 | 0 | 4 |
0 | 9 | 2 | 1 | 9 | 10 |
| 0 | 9 | 0 | 0 | 9 | 2 |
| 0 | 9 | 0 | 0 | 9 | 2 | 5 |
0 | 7 | 4 | 2 | 6 | 10 |
| 0 | 7 | 2 | 1 | 6 | 2 |
| 0 | 7 | 2 | 1 | 6 | 2 | 1* |
2 | 1 | 5 | 3 | 0 | 9 |
| 2 | 1 | 3 | 2 | 0 | 1 |
| 2 | 1 | 3 | 2 | 0 | 1 | 2 |
8 | 0 | 5 | 6 | 1 | 9 |
| 8 | 0 | 3 | 5 | 1 | 1 |
| 8 | 0 | 3 | 5 | 1 | 1 | 3 |
0 | 7 | 6 | 3 | 8 | 9 |
| 0 | 7 | 4 | 2 | 8 | 1 |
| 0 | 7 | 4 | 2 | 8 | 1 | * |
0 | 0 | 2 | 1 | 0 | 8 |
|
|
|
|
|
|
|
| * |
|
|
|
|
|
|
Делаем пробное назначение: помечаем и зачеркиваем соответствующие нули = шаг 2 (матр. 5). Назначение неполное – переходим к шагу 3. На этой же таблице помечаем соответствующие строки и столбцы (см. алгоритм). Вычеркиваем помеченные столбцы и непомеченные строки = шаг 4.
Получаем матрицу 6.
Матрица 6 Матрица 7
|
|
|
|
|
|
| 6 | 5 | 4 | 7 | 0 | 0 | 3 |
| 0 | 0 | 0 | 0 | 0 | 1 |
|
|
|
|
|
|
| 1 | 9 | 0 | 0 | 9 | 2 | 6 |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 7 | 2 | 1 | 6 | 2 |
| 0 | 6 | 1 | 0 | 5 | 1 | 5 |
| 0 | 0 | 0 | 1 | 0 | 0 |
|
|
|
|
|
|
| 3 | 1 | 3 | 2 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 1 | 0 |
|
|
|
|
|
|
| 9 | 0 | 3 | 5 | 1 | 1 | 2 |
| 0 | 1 | 0 | 0 | 0 | 0 |
| 7 | 4 | 2 | 8 | 1 |
| 0 | 6 | 3 | 1 | 7 | 0 | 4 |
| 1 | 0 | 0 | 0 | 0 | 0 |
Из оставшихся элементов находим min cij и выполняем шаг 5. Получаем матрицу 7 и переходим к шагу 2: снова делаем пробное назначение на этой же матрице. Получаем полное назначение, следовательно, задача решена. Матрица ||xij||, являющаяся решением задачи, выписывается очевидным образом из матрицы 7. После этого можно вычислить целевую функцию в исходных стоимостях:
Yandex.RTB R-A-252273-3
- Б.К. Алабин
- 1.2. Основные понятия и определения исследования операций
- 1.3. Общая постановка задачи исследования операций
- Тема 2 индексный метод (теория графов)
- 2.1. Основные понятия и определения индексного метода (им)
- 2.2. Постановка задачи маршрутизации в им
- 2.3. Идея решения задачи
- 2.4. Алгоритм решения задачи с помощью произвольного дерева маршрутов
- 2.5. О порядковой функции
- 2.6. Общая теория индексного метода на матрице орграфа
- 2.7. Общий алгоритм решения задачи маршрутизации на матрице орграфа
- 2.8. Иллюстративный пример
- 2.9. Последовательные графы в им
- 2.10. Решение задачи распределения ресурсов индексным методом
- 3.4. Условия, которым должна удовлетворять задача, описываемая моделью дп
- 3.5. Вычислительная схема дп для обратного хода
- 3.6. Особенности вычислительной схемы дп для прямого хода
- 3.7. Основные достоинства метода дп
- 3.8. Типовые задачи в моделях дп
- Тема 4 методы линейного программирования (лп)
- 4.1. Систематизация моделей лп
- 4.2. Возможные исходы решения задач лп
- 4.3. Транспортная задача (т-задача)
- Метод потенциалов для оценки Δij в т-задаче
- Замечания к решению т-задачи
- 4.4. Задача «о назначениях»
- 4.5. Задача планирования производства при фиксированном фонде времени
- Иллюстративный пример
- Тема 5 задача и модель «черного ящика»
- 5.1. Общие замечания
- 5.2. Содержательная постановка задачи
- 5.3. Формальная постановка задачи
- 5.4. Математическая модель и математическая постановка задачи
- 5.5. О решении задачи
- 5.6. Иллюстративный пример
- Рекомендуемая литература
- Содержание