Венгерский метод решения задач линейного программирования

Данным методом решаются задачи о назначениях, которые являются частным случаем транспортных задач. Метод состоит из следующих шагов:

1) Преобразование строк и столбцов матрицы. Цель данного шага – получение максимально возможного числа нулевых элементов в исходной матрице. Для этого из всех элементов каждой строки вычитаем минимальный элемент соответствующей строки, а из всех элементов каждого столбца вычитаем минимальный элемент соответствующего столбца.

2) Определение назначения. Если после выполнения первого шага в каждой строке и каждом столбце матрицы можно выбрать по одному нулевому элементу, то полученное решение будет оптимальным назначением.

3) Модификация преобразованной матрицы. Если допустимое решение, состоящее из нулей, не найдено, то проводим минимальное число прямых через некоторые столбцы и строки так, чтобы все нули оказались вычеркнутыми. Выбираем наименьший невычеркнутый элемент. Этот элемент вычитаем из каждого невычеркнутого элемента и прибавляем к каждому элементу, стоящему на пересечении проведенных прямых.

Если после третьего шага оптимальное решение достигнуто, то процедуру проведения прямых следует повторять до тех пор, пока не будет получено допустимое решение.

Примечания. 1. Если исходная матрица не является квадратной, то нужно ввести фиктивные ресурсы или фиктивные объекты, чтобы матрица стала квадратной.

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

3. Если исходная задача является задачей максимизации, то все элементы исходной матрицы следует умножить на (-1) и сложить их с достаточно большим числом так, чтобы матрица не содержала отрицательных элементов. Затем задачу следует решать как задачу минимизации.

4. Если число линий, необходимое для того, чтобы вычеркнуть нулевые элементы, равно числу строк или столбцов (квадратной матрицы), то существует назначение нулевой стоимости.

Пример. Распределить ресурсы по объектам, если задана матрица

.

Решение: 1-й шаг. Значения минимальных элементов строк 1, 2, 3 и 4 равны 2, 4, 11 и 4 соответственно. Вычитая из элементов каждой строки соответствующее минимальное значение, получим

Значения минимальных элементов столбцов 1, 2, 3 и 4 равны 0, 0, 5 и 0 соответственно. Вычитая из элементов каждого столбца соответствующее минимальное значение, получим

2-й шаг. Ни одно полное назначение не получено, необходимо провести модификацию матрицы стоимостей.

3-й шаг. Вычеркиваем столбец 1, строку 3, строку 2 (или столбец 2). Значение минимального невычеркнутого элемента равно 2:

.

Вычитаем его из всех невычеркнутых элементов и, складывая его со всеми элементами, расположенными на пересечении двух линий, получим

. Итак, .

Ответ: Первый ресурс направляем на 3-й объект, второй – на 2-й объект, четвертый – на 1-й объект, третий – на 4-й объект. Стоимость назначения: 9+4+11+4=28.