Венгерский алгоритм
Шаг 1. Редукция строк и столбцов.
Цель данного шага состоит в получении максимально возможного числа нулевых элементов в матрице стоимостей. Для этого из всех элементов каждой строки вычитают минимальный элемент соответствующей строки, а затем из всех элементов каждого столбца полученной матрицы вычитают минимальный элемент соответствующего столбца. В результате получают редуцированную матрицу стоимостей и переходят к поиску назначений.
Шаг 2. Определение назначений.
а) Найти строки, содержащие ровно один невычеркнутый нулевой элемент. В каждой такой строке произвести назначение, соответствующее невычеркнутому нулевому элементу. В каждом столбце, в котором было произведено назначение, вычеркнуть все невычеркнутые ранее нулевые элементы. Строки рассматриваются в порядке возрастания их номеров.
б) Найти столбцы, содержащие ровно один невычеркнутый нулевой элемент. В каждом таком столбце произвести назначение, соответствующее невычеркнутому нулевому элементу. В каждой строке, в которой было произведено назначение, вычеркнуть все невычеркнутые ранее нулевые элементы. Столбцы рассматриваются в порядке возрастания их номеров.
в) Выполнять пункты а) и б) до тех пор, пока не будет вычеркнуто максимально возможное число нулевых элементов. Если построенное назначение полное, то оно является оптимальным.
Если некоторые нули остались невычеркнутыми, то можно попытаться найти полное назначение.
Если нельзя найти полного назначения, то необходимо провести дальнейшую модификацию матрицы стоимостей, т.е. перейти к шагу 3.
Шаг 3. Модификация редуцированной матрицы.
Для редуцированной матрицы стоимостей:
а) вычислить число нулей в каждой невычеркнутой строке и каждом невычеркнутом столбце;
б) вычеркнуть строку или столбец с максимальным числом нулей;
в) выполнять пункты а) и б) до тех пор, пока не будут вычеркнуты все нули;
г) из всех невычеркнутых элементов вычесть минимальный невычеркнутый элемент и прибавить его к каждому элементу, расположенному на пересечении двух линий.
Перейти к шагу 2.
Примечания
1) Если число линий, необходимое для того, чтобы вычеркнуть нулевые элементы, равно числу строк (столбцов), то существует полное назначение.
2) Если исходная задача является задачей максимизации, то все элементы матрицы стоимостей следует умножить на (–1) и сложить их с достаточно большим числом так, чтобы матрица не содержала отрицательных элементов. Затем задачу следует решать как задачу минимизации.
Пример 6.7. Покажем работу венгерского алгоритма на примере задачи о назначениях со следующей матрицей стоимостей:
Итерация 1.
Шаг 1. Редукция строк и столбцов.
Значения минимальных элементов строк 1, 2, 3 и 4 равны 2, 4, 11 и 4 соответственно. Вычитая из элементов каждой строки соответствующее минимальное значение, получим следующую матрицу:
Значения минимальных элементов столбцов 1, 2, 3 и 4 равны 0, 0, 5 и 0 соответственно. Вычитая из элементов каждого столбца соответствующее минимальное значение, получим следующую матрицу.
=
Шаг 2. Поиск допустимого решения, для которого все назначения имеют нулевую стоимость.
а) Строки 1, 2 и 4 содержат по одному невычеркнутому нулю. Рассматривая эти строки в порядке возрастания их номеров, произведем вначале назначение, соответствующее элементу (1,1), и вычеркнем нулевой элемент (4,1). Затем произведем назначение, соответствующее элементу (2,2). Строка 4 не может быть использована, поскольку нулевой элемент (4,1) был вычеркнут.
б) Столбцы 3 и 4 содержат по одному невычеркнутому нулю. Рассматривая эти столбцы в порядке возрастания их номеров, мы можем произвести третье назначение, соответствующее элементу (3,3). В столбце 4 назначение невозможно, так как мы произвели назначение, соответствующее элементу (3,3). После выполнения данного шага матрица стоимостей имеет следующий вид:
Таким образом, ни одно полное назначение не может быть получено, и необходимо провести дальнейшую модификацию редуцированной матрицы стоимостей.
Шаг 3. Модификация редуцированной матрицы.
=
а) Число нулей в строках 1, 2, 3 и 4 равно 1, 1, 2 и 1 соответственно. Для столбцов соответствующие величины равны 2, 1, 1 и 1.
б) Максимальное число нулей, по два, содержат строка 3 и столбец 1. Выбираем строку 3 и вычеркиваем все ее элементы горизонтальной линией.
в) Число невычеркнутых нулей в строках 1, 2 и 4 равно 1, 1 и 1 соответственно. Для столбцов соответствующие значения равны 2, 1, 0, и 0. Поэтому мы должны выбрать столбец 1 и вычеркнуть его вертикальной линией. После этого останется только один невычеркнутый нуль – элемент (2,2). Поэтому можно вычеркнуть либо строку 2, либо столбец 2. Вычеркивая строку 2 горизонтальной линией, получаем следующую матрицу:
г) Значение минимального невычеркнутого элемента равно 2. Вычитая его из всех невычеркнутых элементов и складывая его со всеми элементами, расположенными на пересечении двух линий, получаем новую матрицу стоимостей:
Итерация 2.
Шаг 2. Выполняя вновь процедуру построения допустимого решения нулевой стоимости, получаем следующее оптимальное решение:
Оптимальное назначение:
остальные ,
9 + 4 + 11 + 4 = 28.
Пример 6.8 Задача размещения производства.
Компания разрабатывает план выпуска трех новых видов продукции. Предположим, что компания владеет пятью предприятиями и что на трех из них должны производиться новые виды продукции – по одному виду на одно предприятие. Ниже указаны издержки производства и сбыта единицы продукции.
1. Издержки производства единицы продукции (руб.):
Вид продукции | Предприятие | ||||
1 | 2 | 3 | 4 | 5 | |
1 | 20 | 23 | 38 | 15 | 5 |
2 | 8 | 29 | 6 | 35 | 5 |
3 | 5 | 8 | 3 | 4 | 7 |
2. Издержки сбыта единицы продукции (руб.):
Вид продукции | Предприятие | ||||
1 | 2 | 3 | 4 | 5 | |
1 | 20 | 50 | 20 | 10 | 13 |
2 | 7 | 90 | 8 | 35 | 60 |
3 | 5 | 5 | 4 | 15 | 6 |
Плановый объем годового производства, который позволил бы удовлетворить спрос, и плановая стоимость единицы продукции каждого вида следующие:
Вид продукции | Плановый объем производства | Плановая стоимость (руб.) |
1 | 35000 | 55 |
2 | 160000 | 50 |
3 | 54000 | 30 |
Общие издержки на единицу продукции складываются из издержек производства и издержек сбыта. Поскольку продажная цена единицы каждого вида продукции известна, то можно вычислить прибыль на единицу продукции:
Вид продукции | Предприятие | ||||
1 | 2 | 3 | 4 | 5 | |
1 | 15 | –18 | –3 | 30 | 7 |
2 | 35 | –69 | 36 | –20 | –45 |
3 | 20 | 17 | 23 | 11 | 17 |
Умножая прибыль, приходящуюся на единицу продукции, на годовой объем сбыта, можно получить общую годовую прибыль, соответствующую каждой паре вид продукции – предприятие. Данные величины (в тыс. руб.) приведены в следующей таблице:
Вид продукции | Предприятие | ||||
1 | 2 | 3 | 4 | 5 | |
1 | 525 | –630 | –105 | 1050 | 245 |
2 | 5600 | –11040 | 5760 | –3200 | –7200 |
3 | 1080 | 918 | 1242 | 594 | 918 |
Если прибыль рассматривать как отрицательные затраты, то исходная задача максимизации может быть сведена к минимизационной задаче о назначениях. Для того чтобы матрица стоимостей не содержала отрицательных элементов, сложим каждый элемент матрицы с числом 5760 и введем два вида фиктивной продукции (4 и 5), которой соответствует нулевая прибыль. В результате будет получена следующая матрица:
Вид продукции | Предприятие | ||||
1 | 2 | 3 | 4 | 5 | |
1 | –525 | 630 | 105 | –1050 | –245 |
2 | –5600 | 11040 | –5760 | 3200 | 7200 |
3 | –1080 | –918 | –1242 | –594 | –918 |
Вид продукции | Предприятие | ||||
1 | 2 | 3 | 4 | 5 | |
1 | 5235 | 6390 | 5865 | 4710 | 5515 |
2 | 160 | 16800 | 0 | 8960 | 12960 |
3 | 4680 | 4842 | 4518 | 5166 | 4842 |
4 | 0 | 0 | 0 | 0 | 0 |
5 | 0 | 0 | 0 | 0 | 0 |
| 5235 | 6390 | 5865 | 4710 | 5515 |
| 160 | 16800 | 0 | 8960 | 12960 |
Þ С = | 4680 | 4842 | 4518 | 5166 | 4842 |
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 |
Итерация 1.
Шаг 1.
=
Шаг 2.
Шаг 3.
Итерация 2.
Шаг 2. Воспользуемся замечанием 1. Тогда получим:
Оптимальное решение данной задачи следующее: производство первого вида продукции назначается предприятию 4, второго вида – предприятию 1, третьего вида – предприятию 3, четвертого вида – предприятию 2, пятого вида – предприятию 5. Очевидно, что 2 последних назначения являются фиктивными. Суммарная годовая прибыль, соответствующая данному решению, равна 1050 + 5600 + 1242 = 7892 (тыс. руб).
- Учебное пособие
- Оглавление
- 2. Элементы линейной алгебры 21
- 3. Линейное программирование 48
- 4. Теория двойственности в линейном программировании 98
- 5. Целочисленные модели исследования операций 137
- 6. Экономические задачи, сводящиеся к транспортной модели 160
- Введение в исследование операций
- 1.1 Основные определения
- Этапы исследования операций
- Домашнее задание №1
- 2. Элементы линейной алгебры
- 2.1. Алгебра матриц
- 2.1.1. Виды матриц
- 2.1.2. Действия над матрицами
- Домашнее задание №2
- 2.2. Вычисление определителей
- Домашнее задание №3
- 2.3. Решение систем алгебраических уравнений
- 2.3.1. Основные понятия и определения
- 2.3.2. Формулы крамера и метод обратной матрицы
- 2.3.3. Метод жордана-гаусса
- Домашнее задание №5
- 2.4. Векторное пространство
- 2.4.2. Размерность и базис векторного пространства
- Домашнее задание №6
- 2.5. Решение задач линейной алгебры с помощью ms excel
- 3. Линейное программирование
- 3.1. Постановки задачи линейного программирования
- 3.1.1. Общая постановка задачи линейного программирования
- 3.1.2. Основная задача линейного программирования
- 3.1.3. Каноническая задача линейного программирования
- 3.2. Графический метод решения злп
- Домашнее задание №7
- Домашнее задание №8
- 3.3. Анализ решения (модели) на чувствительность
- Домашнее задание №9
- 3.4. Решение линейных моделей симплекс-методом.
- Переход от одной к-матрицы злп к другой к-матрице
- Алгоритм симплекс-метода
- Домашнее задание №10
- 3.4. Двойственный симплекс-метод (р-метод)
- Определение р-матрицы злп
- Условия перехода от одной р-матрицы злп к другой
- Алгоритм р-метода
- Решение задач р-методом
- Домашнее задание №11
- Домашнее задание №12
- 3.5. Решение злп двухэтапным симплекс-методом
- Первый этап - решение вспомогательной задачи
- Второй этап - решение исходной задачи
- Домашнее задание №13
- 4. Теория двойственности в линейном программировании
- 4.1. Определение и экономический смысл двойственной злп
- 4.2. Основные положения теории двойственности
- Получение оптимального плана двойственной задачи на основании теоремы 4
- На первой итерации получен оптимальный план злп (4.24).
- 4.3. Решение злп с помощью Ms Excel
- 4.4. Анализ решения злп на основе отчетов ms excel
- 5. Целочисленные модели исследования операций
- 5.1. Метод ветвей и границ решения целочисленных задач линейного программирования (цзлп)
- X1, х2 0, целые.
- Подробное описание метода
- 5.2. Задача коммивояжера
- Применение метода ветвей и границ для решения задачи коммивояжера
- Ветвление
- Построение редуцированных матриц и и вычисление оценок снизу
- Формирование списка кандидатов на ветвление
- 6. Экономические задачи, сводящиеся к транспортной модели
- 6.1.Транспортная задача линейного программирования
- Методы составления первоначальных опорных планов
- Метод потенциалов решения транспортной задачи
- Проверка выполнения условия оптимальности для незанятых клеток
- Выбор клетки, в которую необходимо поместить перевозку
- Построение цикла и определение величины перераспределения груза
- Проверка нового плана на оптимальность
- Определение оптимального плана транспортных задач, имеющих некоторые усложнения в их постановке
- 6.2.Экономические задачи, сводящиеся к транспортной модели
- Оптимальное распределение оборудования
- Формирование оптимального штата фирмы
- Задача календарного планирования производства
- Модель без дефицита
- Модель с дефицитом
- 6.3.Задача о назначениях
- Венгерский алгоритм
- Оптимальное исследование рынка
- Оптимальное использование торговых агентов