Венгерский метод транспортной задачи
Основные принципы венгерского метода решения классической транспортной задачи, транспортной задачи в сетевой постановке с отсутствием прямых связей между "поставщиками" и "потребителями", с промежуточными пунктами и ограничениями пропускных способностей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 19.02.2012 |
Размер файла | 320,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
1 ВЕНГЕРСКИЙ МЕТОД РЕШЕНИЯ КЛАССИЧЕСКОЙ ТРАНСПОРТНОЙ ЗАДАЧИ
Обсуждаемый метод называют венгерским, так как его идея высказана еще в 1931 году венгерским математиком Эгервари. Эта забытая работа была открыта в 1953 году американским математиком Г. Куном, который развил эту идею и назвал созданный им метод венгерским.
В отличие от ранее рассмотренного метода Данцига здесь берем какой-то план сопряженной задачи и по соображениям второй теоремы двойственности ищем решение исходной (максимальный поток в допустимой сети). Если таковое не удалось получить, то берем другой опорный план сопряженной задачи (другую допустимую сеть) и т.д.
Этот метод позволяет решать не только классическую транспортную задачу, но и транспортную задачу в сетевой постановке с отсутствием прямых связей между «поставщиками» и «потребителями», с промежуточными пунктами и ограничениями пропускных способностей.
Рассмотрим идеологию и алгоритм метода на примере классической транспортной задачи минимизации.
при условиях
Xij 0, i = 1 .. m, j = 1 .. n (4)
Как показано ранее, сопряженная задача сводится к максимизации
при условиях
Ui + Vj ? Cij при всех i, j. (7)
Если построить матрицу
то очевидна неотрицательность элементов этой матрицы, т.е. найденные значения двойственных переменных удовлетворяют условиям (7).
Рассмотрим вспомогательную сеть, состоящую из дуг исходной сети, для которых Tij = Cij - Ui - Vj равны нулю,
Если в этой сети удастся найти максимальный поток, удовлетворяющий (2)-(5), то по второй теореме двойственности он дает решение исходной задачи.
Для классической транспортной задачи воспользуемся компактной схемой поиска максимального потока с использованием матрицы m*n.
Пусть найден некоторый поток в сети S, удовлетворяющий условиям
Для строк i, в которых
сопоставим метки
Выбираем отмеченные строки (например, i-ю) и отмечаем неотмеченные столбцы j такие, что (i j) ? S, метками
Затем берем отмеченные столбцы (например, j - й) и для неотмеченных строк i, в которых Xij > 0, сопоставляем метки
Повторяем процесс отмечания столбцов и строк до тех пор, пока не будет отмечен «ненасыщенный» столбец j*, для которого
Отыскиваем величину
определяющую величину потока в найденном пути; поочередно добавляем и вычитаем из значений Xij в цепочке
и вновь продолжаем процесс отмечаний.
Если не удастся отметить ни одного из ненасыщенных столбцов, то перестраиваем сеть: отыскиваем величину
где I, J - множества отмеченных строк и столбцов, вычитаем K из отмеченных строк матрицы T и добавляем к отмеченным столбцам. Это действие эквивалентно корректуре двойственных переменных
Такой процесс продолжается до тех пор, пока максимальный поток не окажется насыщающим для строк и столбцов.
Рассмотрим пример решения задачи при следующих данных:
Отыскав значения двойственных переменных (9)-(10)
U1 = 2, U2 = 2, U3 = 3, V1 = 1, V2 = 0, V3 = 0, V4 = 0,
строим матрицу T и ищем в допустимой сети некоторый поток, например, по правилу минимальной стоимости:
Отмечаем ненасыщенные строки. Из отмеченных строк по «допустимым» клеткам отмечаем неотмеченные столбцы.
Попытка отметить неотмеченные строки по положительным значениям Xij в отмеченных столбцах не увенчивается успехом. Следовательно, в выбранной сети найденный поток максимален и требуется перестройка сети.
Находим
вычитаем K из строк 1 и 3 и добавляем к столбцам 2 и 3 матрицы T0, сохраняя в новой сети тот же поток:
Продолжая процесс отмечаний, имеем
Поскольку отмечен ненасыщенный столбец 1, ищем величину коррекции потока ? = min(?1, 4-0) = 1 и выявляем «минимизирующую цепочку»:
которая определяет последовательность [X21 X24 X34].
Поочередное добавление-вычитание ? дает поток X1.
Повторяем процесс отмечаний и обнаруживаем невозможность последующих отмечаний. Отыскиваем значение корректуры двойственных переменных
вычитаем K из строки 1 и добавляем к столбцу 2 матрицы T1, сохраняя в новой сети тот же поток:
Продолжая процесс отмечаний. Величина корректуры потока равна и минимизирующая цепочка, согласно
состоит их единственного элемента X11; отсюда получаем улучшенный поток X2, который является насыщающим и дает решение поставленной задачи. Заметим, что при другой системе отмечаний дающей ?=3 и цепочку [X21, X24, X34, X33, X13], получаем другой оптимальный поток X2'.
2 ВЕНГЕРСКИЙ МЕТОД ДЛЯ ТРАНСПОРТНОЙ ЗАДАЧИ В СЕТЕВОЙ ПОСТАНОВКЕ
Рассмотрим более общую задачу на примере нижеприведенной сети, где числа на дугах определяют стоимость единичной перевозки, вершины 1 и 2 - пункты производства продукта в количествах 20 и 10 единиц, вершины6 и 7 - пункты потребления в количествах 15 и 15 единиц. К тому же на маршрутах 2 - 5 и 3 - 6 пропускная способность не превышает соответственно 5 и 7 единиц продукта.
Воплощая основную идею венгерского метода, введем фиктивные вход 0 и выход 8. Соединим вход 0 с вершинами 1 и 2 дугами с пропускной способностью, равной объемам производства, и вершины 6 и 7 с выходом 8 - дугами с пропускной способностью, равной объемам потребления. Стоимости перевозок на этих дугах берем нулевыми.
В полученной сети ищем максимальный поток от входа к выходу, обеспечивающий минимум стоимости перевозок
при условиях
Если переписать (4) в виде
где Vj - неопределенная величина, не превышающая A, то мы получаем задачу, внешне похожую на классическую транспортную, тем не менее, более сложную за счет ограничений на пропускные способности.
Один из возможных алгоритмов состоит в следующем. Отмечаем вход некоторым значком (множество отмеченных вершин в дальнейшем будем обозначать через М). Отыскиваем неотмеченные вершины ( j ), в которые ведут ненасыщенные дуги с нулевыми стоимостями перевозок из вершин множества М, т.е. дуги с характеристиками CMj = 0, XMj < dMj. При отсутствии таковых переходим к пункту 3 алгоритма и при наличии - к пункту 4.
Отыскиваем среди неотмеченных вершину, из которой идет дуга во множество М с нулевой стоимостью и ненулевой перевозкой, и переходим к пункту 4. При отсутствии таких - к пункту 7.
Выбранную вершину включаем во множество М и, если выход остался непомеченным, переходим к пункту 2.
По меткам, сопоставленным отмеченным вершинам (откуда и сколько), отыскиваем путь от входа к выходу и его пропускную способность и корректируем суммарный поток и пропускные способности (по аналогии с поиском максимального потока в простейшем случае).
Если пропускные способности дуг, исходящих из вершины входа, не исчерпаны, переходим к пункту 1.
Выясняем наличие дуг, для которых CMj > 0 при j M или CiM < 0 при i ? M. Если таковых нет, задача неразрешима.
Среди модулей найденных CMj и CiM отыскиваем минимальное значение и корректируем матрицу стоимостей, вычитая ? из стоимостей на дугах, ведущих из множества М, и добавляя к стоимостям на дугах, ведущих во множество М. Возвращаемся к пункту 2.
Покажем реализацию алгоритма в матричной форме для вышеприведенной сети.
Выбрав для начала нулевой поток X0, устанавливаем начальные метки:
Так как в отмеченных строках не обнаруживается нулевых стоимостей
CMj, j ? M, дальнейшее отмечание невозможно.
Отыскиваем
вычитаем из отмеченных строк матрицы C, добавляя к отмеченным столбцам (получаем матрицу С1) и, продолжая процедуру отмечаний с учетом С1 и D, получаем возможность отметить в дополнение к отмеченным ранее вершину 5:
после чего опять-таки приходится расширять сеть путем коррекции матрицы C1 на величину
получая матрицу С2.
Продолжив отмечания, имеем:
Обратным ходом по меткам выясняем путь с пропускной способностью V8 = 5 и корректируем матрицу D, уменьшая ее элементы, соответствующие дугам пути в прямом направлении, и увеличивая симметричные элементы на V8 = 5.
Повторяя процедуру отмечаний (на основе C2,D1 и X1), имеем:
(вершину 5 отметить не удается, так как D25=0). Соответственно находим ? = min(4,3,7,2)=2 (значение С25=0 не учитываем, так как соответствующей дуги на этом этапе решения нет). После вычитания из отмеченных строк добавления к отмеченным столбцам получаем матрицу С3.
Продолжая процесс отмечаний, имеем: откуда получаем путь с пропускной способностью 5.
Выполнив обычную коррекцию матрицы пропускных способностей и потока, получаем D2 и X2.
Повторяя процедуру отмечаний, имеем: ?0 = -1, V0 = 20; т.е. путь с величиной потока 2.
Повторяя процедуру отмечаний, имеем. Находим ? = min(3, 2, 2) = 2 и получаем матрицу С4 (продолжение опять-таки невозможно). Ищем min(1, 8, 6, 6) = 1 и получаем матрицу С5, из которой возникает возможность отметить вершину 2 (но не выход сети).
Опять-таки ищем min(5, 5) = 5 и перестраиваем матрицу стоимостей к виду С6.
Процедура отмечаний обнаруживает возможность перехода с пропускной способностью 3:
Здесь обнаруживается возможность отмечания всех вершин, кроме 7 и 8. Находим ? = min(2, 8) = 2 и перестраиваем матрицу стоимостей к виду С7.
Теперь очевидна возможность отмечания всех вершин и обнаруживается путь с пропускной способностью 15.
В итоге получаем D5 и X5.
Граф максимального потока представлен на рисунке.
Заметим, что матрицу X5 можно получать и по окончании счета, вычитая D5 из исходной матрицы D0.
Нет сомнений, что мало-мальски приличную транспортную задачу вручную никто не будет решать и необходимо прибегнуть к помощи компьютера (если у вас есть соответствующее программное средство).
3 ТРАНСПОРТНАЯ ЗАДАЧА ПО КРИТЕРИЮ ВРЕМЕНИ
транспортный задача венгерский метод
В рассматриваемой задаче критерием качества организации перевозок являются не суммарные затраты, а время реализации перевозок (подобные проблемы возникают при транспортировке скоропортящихся грузов, при переброске сил быстрого реагирования и т.д.).
Пусть имеется m поставщиков продукта в количествах Ai (i=1.. m) и n потребителей в количествах Bj (j = 1 .. n), причем соблюдается баланс предложения и спроса.
Известно время tij доставки груза от i - го поставщика к j - му потребителю, не зависящее от объема перевозки.
Требуется среди всех допустимых планов перевозок X = {Xij} найти план, оптимальный по времени. Очевидно, что время, необходимое для реализации плана, совпадает с наибольшим временем отдельных перевозок и оптимальное время перевозок равно
при условиях
Xij 0, i = 1 .. m, j = 1 .. n
Алгоритм решения базируется на идеях венгерского метода для классической транспортной задачи и элементарном здравом смысле.
Предварительно выбирается минимальное значение tij и строится допустимая сеть по значениям tij, не превышающим выбранного.
В этой сети отыскивается максимальный поток. Если этот поток отвечает условиям задачи, то выбранное время оптимально. В противном случае выбирается очередное наименьшее время, сеть расширяется и в ней вновь ищется максимальный поток.
Очевидно, что для выбора начального времени разумнее отталкиваться не от минимального значения, а от максимального среди минимальных времен в строках и столбцах матрицы
Пример. Пусть задача определена следующими данными.
Минимальные значения tij в строках равны 1, 2, 1 и в столбцах 1, 1, 4, 10.
Выбираем t*=10, строим вспомогательную сеть по tij ? t* и отыскиваем в ней начальное приближение для потока, например, методом северо-западного угла.
Так как найденный поток X0 не является насыщающим, пытаемся его улучшить с использованием процесса отмечаний венгерского метода
Дальнейшее отмечание невозможно и приходится расширить сеть, взяв t*=12 (появится возможность перевозки на маршруте 1 - 4, поток Xo').
Очевидно, что это расширение ничего нового не даст; берем t*=13, поток Xo»).
Отталкиваясь от ранее выбранного потока, пытаемся его улучшить. Продолжая процесс отмечаний, имеем
Так как отмечен ненасыщенный столбец, отыскиваем минимизирующую цепочку [X34 X32 X12] и корректирукорректируем ее на величину ? = min (?4, B4) = 7.
В итоге мы получаем насыщающий поток и можем утверждать, что минимальное время транспортировки составляет 13 единиц.
Размещено на Allbest.ru
Подобные документы
Сущность и постановка транспортной задачи для n переменных, их виды, применение и пример решения в MS Excel. Управляющие структуры ветвления Maple языка (if предложение). Решение транспортной задачи в векторных координатах для двух и трёх матриц.
дипломная работа [109,3 K], добавлен 12.01.2011Особенности решения транспортной задачи распределительным методом и анализ результатов. Построение математической модели, алгоритма. Создание программы для решения транспортной задачи распределительным методом в программной среде Borland Delphi 7.
курсовая работа [1000,7 K], добавлен 23.06.2012Создание и реализация алгоритма решения транспортной задачи методом наименьших стоимостей. Схема алгоритма основной программы. Основные шаги алгоритма решения транспортной задачи. Инструкция по эксплуатации программы и обзор результатов ее выполнения.
курсовая работа [2,0 M], добавлен 12.02.2013Основные этапы решения транспортной задачи, использование метода потенциалов. Алгоритм решения методом аппроксимации Фогеля. Процедура построения цикла. Планирование перевозок из конечного числа пунктов отправления в конечное число пунктов назначения.
контрольная работа [32,6 K], добавлен 26.04.2011Сущность и назначение основных алгоритмов оптимизации. Линейное программирование. Постановка и аналитический метод решения параметрической транспортной задачи, математическая модель. Метод решения задачи об оптимальных перевозках средствами MS Excel.
курсовая работа [465,6 K], добавлен 24.04.2009Постановка задачи о коммивояжере. Нахождение оптимального решения с применением метода ветвей и границ. Основной принцип этого метода, порядок его применения. Использование метода верхних оценок в процедуре построения дерева возможных вариантов.
курсовая работа [167,8 K], добавлен 01.10.2009Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.
курсовая работа [2,5 M], добавлен 22.11.2012Программа для решения транспортной задачи. Метод потенциалов, его математический смысл и порядок действий по его применению. Математические методы решения транспортных задач. Вычисление стоимости перевозок, расхода топлива, общей прибыли и окупаемости.
курсовая работа [33,7 K], добавлен 20.11.2008Составление программы для расчета начального базиса сбалансированной транспортной задачи, где суммарные запасы поставщиков равны суммарным запросам потребителей. Алгоритм метода потенциалов. Пример решения транспортной задачи методом наименьшей стоимости.
отчет по практике [991,3 K], добавлен 06.12.2013Оптимизация затрат на доставку продукции потребителям. Характеристика транспортной задачи, общий вид решения, обобщение; содержательная и математическая постановка задачи, решение с помощью программы MS Excel: листинг программы, анализ результатов.
курсовая работа [514,8 K], добавлен 04.02.2011