Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОДЕРЖАНИЕ тпр.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
775.69 Кб
Скачать

2.2 Описание венгерского метода нахождения оптимального плана

Венгерский метод базируется на следующих определениях: суммарная невязка плана, суммарная невязка по строкам и столбцам. Суммарной невязкой плана по строкам называется величина ∂i, которая имеет вид:

(2.2)

Данная величина показывает, сколько единиц продукции остаётся на складах всех поставщиков при использовании данного плана перевозок.

Суммарной невязкой плана по столбцам называется величина вида:

(2.3)

Эта величина имеет смысл суммарной непогашенной потребности потребителей при использовании данного плана перевозок.

Легко заметить, что в сбалансированном плане суммарная невязка по строкам будет эквивалента по величине суммарной невязке по столбцам. Это условие используется для контроля вычислений невязок.

Суммарной невязкой называется величина вида:

∆=∂i+∂j, (2.4)

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

∆/2≥n (2.5)

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

Данное неравенство объясняется тем, что при переходе от одной итерации к другой невязки по строкам и по столбцам уменьшается на определённую величину. И так как минимальная величина этого уменьшения – единица, то худшее число итераций соответствует половине суммарной невязки.

Решение транспортной задачи венгерским методом состоит из одного предварительного этапа и n итераций, которая состоит из комбинации первого, второго и третьего этапов.

Предварительный этап начинается с того, что в каждом столбце матрицы С отыскивается минимальный элемент, который вычитается из всех элементов данного столбца. В итоге получаем матрицу С’.

Аналогичная операция проделывается по строкам матрицы С’. В результате получаем матрицу С0. Для нулей матрицы С0, перемещаясь по столбцам сверху вниз и меняя столбцы слева направо строим начальный план Х0 и определяем невязку этого плана. Если невязка равна нулю, то рассчитывается целевая функция плана, в противном случае переходят к итерационной части алгоритма.

Разметка выполняется в начале итерации и сохраняется до ее конца. В ходе эквивалентных преобразований матрицы С разметка переносится. Различают символом “+” столбцы, невязки которых нулевые и в которых есть существенные нули. Прочие элементы разметки добавляются в ходе итерации. Столбцы (или строки), отмеченные символом “+”, называются выделенными и образуют выделенную часть матрицы С.

Итерация начинается с первого этапа, который носит название поискового. В нём необходимо найти ноль матрицы С, находящий в невыделенной части матрицы и стоящий на строке с положительной невязкой. Если в процессе поиска обнаруживается, что таких нулей нет, то прибегают к эквивалентным преобразованиям матрицы (третий этап). Если ноль найдется, то строят цепочку и корректируют план (второй этап).

Поиск выполняют, двигаясь по невыделенным столбцам сверху вниз. Первый найденный ноль отмечают штрихом и анализируют его невязку по строке. Если невязка положительна, то это искомый ноль. В противном случае невязка по строке равна нулю, строчку выделяют знаком “+”. Просматривают выделенную строку по элементам выделенных столбцов на наличие существенного нуля. Существенным нулем называется нуль матрицы С, соответствующий элемент которого в матрице перевозок X не равен нулю. если на пересечении выделенной строки и выделенного столбца оказывается существенный ноль, то его отмечают “*”, а знак выделения над столбцом снимают, после этого столбец считается невыделенным и в нем можно осуществить поиск. Если же в этой строке невыделенного нуля нет, то происходит поиск невыделенного элемента на пометку знаком «’». Поиск заканчивается, когда найден искомый ноль, либо когда все нули матрицы находятся либо в выделенных строках, либо в выделенных столбцах.

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

Построение цепочки происходит в следующей последовательности: от найденного нуля со штрихом по столбцу к нулю со звездой, а от нуля со звездой по строке к нулю со штрихом. Далее выбирается корректирующий элемент по правилу: невязка строки начала, невязка строки конца и элементы плана Х, которые соответствуют нулю со “*”, входящих в цепочку.  = min {i, j,  Х*ij  цепочка}

Как только найден такой элемент, план корректируют. Из элементов, которые соответствуют нулям со звездочкой, вычитают , а к элементам соответствующим нулям со штрихом прибавляют . Затем происходит расчёт невязок. разметка и переход к первому этапу следующей итерации.

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