Описание алгоритма нахождения потока минимальной стоимости
Постановка задачи
Математическая постановка задачи. Общая постановка транспортной задачи состоит в определении оптимального плана перевозок некоторого однородного груза k-пунктов отправления а1,а2,…аi в m пунктов назначения b1,b2,…bj. При этом в качестве критерия оптимальности обычно берется либо минимальная стоимость всего груза, либо минимальное время его доставки. Данная транспортная задача была рассмотрена, где в качестве критерия оптимальности была взята минимальная стоимость перевозок все груза. Были введены следующие обозначения: k – число поставщиков; m – число потребителей; i – индекс производителя i =1,к j – индекс потребителя j = 1,m а1 – возможности i-ro производителя bj – спрос j-ro потребителя сi,j – транспортные издержки (расходы) за доставку продукции от i к j. xi,j – объемы перевозок от i к j. Требуется составить план перевозок для которого: 1. все потребители удовлетворены 2. общие транспортные расходы минимальны Требуется минимизировать функцию:
Ограничения по производству:
Общая сумма производимой продукции больше или равна спросу:
Следовательно ci,j тарифы перевозок единицы груза из i-го пункта отправления в j-й пункт назначения, через ai – запасы груза в i-м пункте отправления, через bj – потребности в грузе в j-м пункте назначения, а через хi,j – количество единиц груза, переводимого из i-го пункта определений в j-й пункт назначения. Тогда математическая постановка транспортной задачи состоит в определении минимального значения функции.
Формулировка задачи
Число производителей k=3 а1=38 Объем производимой продукции а2=45 а3=97
Число потребителей m=4 b1=42 b2=35 Потребности потребителей: b3=63 B4=15
Рис. 1
На рисунке 1 представлен исходный граф, который иллюстрирует транспортную задачу. Для решения данной задачи требуется использовать стандартную форму фиксированного источника и стока. Каждый производитель связан с каждым потребителем. Источник не может иметь связи с потребителем, но зато каждый потребитель, в свою очередь, связан с фиктивным стоком. В обозначении дуги присутствует два параметра. Первый параметр указывает пропускную способность дуги, второй параметр показывает стоимость пересылки единицы потока на дуге. Так, например, из источника выходят дуги содержащие ограничения по пропускной способности, т.к. данная величина характеризует производительную возможность каждого поставщика, стоимость данной дуги равна нулю, т.к. источник – фиксированный элемент нашего графа. Такая же ситуация обстоит с дугами, которые втекают в сток. Дуги, которые выходят из i-ых вершин (производители) и входят j-ые вершины (потребители), т.е. соединяющие поставщика со складок, характеризуются тоже двумя параметрами. Только в этом случае, для данных дуг, в качестве первого параметра берется пропускная способность дуги равная бесконечности, а второй показатель – стоимость пересылки единицы потока.
3. Теоретическое обоснование. Общие вопросы Сеть (транспортная сеть) – частный случай ориентированного графа. Транспортная сеть G=(V,E) – ориентированный граф, в котором каждое ребро имеет неотрицательную пропускную способность. Выделяются две вершины: источник v и сток u такие, что любая другая вершина сети лежит на пути из v в u. v – это единственная вершина (v – источник), которая не содержит входящих дуг, а содержит только выходящие дуги. u – это единственная вершина (u - сток), которая не содержит выходящих дуг. Все остальные вершины – промежуточные вершины. Для любой промежуточной вершины существует путь из источника в сток. Сеть не содержит контуров. Если для сети указаны пропускные способности, то такая сеть называется транспортной сетью.
Поток – это определенная величина на дуге е. Поток в сети G=(V,E) – это функция f, заданная на дугах сети, значение на дуге е – это величина на дуге е. Для всех промежуточных вершин соответствует сумма величин потоков на дугах входящих в вершину w, которая равна выходящему из вершины потоку.
Величина потока в сети. Величина всего потока в сети модуля равна сумме величин потока выходящих из источника или сумме входящих величин потока входящих в сток.
Поток минимальной стоимости – задача о потоке минимальной стоимости состоит в нахождении самого дешевого способа передачи определенного количества потока через транспортную сеть. Обозначения: Для всех дуг имеется пропускная способность: Стоимость пересылки единицы потока по дуге e: C(e) Накладываются следующие условия: 1. Ограничение пропускной способности . Поток не может превысить пропускную способность. 2. Антисимметричность: . Поток из u в v должен быть противоположен потоку из v в u.
Описание алгоритма нахождения потока минимальной стоимости Вход: транспортная сеть G=(V,E)с пропускной способностью дуг B(e) Выход: максимальный поток с минимальной стоимостью. Идея: Каждая итерация ставит своей целью увеличить поток в сети. Для этих целей предназначен инкрементальный граф, который позволяет увеличить поток на некоторую фиксированную величину. Наличие прямых дуг позволяет увеличить поток на соответствующей дуге сети. Обратная дуга уменьшает поток. Алгоритм заканчивается когда в инкрементальном графе нет пути от источника к стоку. Алгоритм: Шаг 0 Данный шаг осуществляется только один раз. Вначале мы присваиваем всем дугам нулевой поток: Шаг 1 Для текущего потока строится инкрементальный граф. Прямые дуги имеются, если поток на этой дуге меньше, чем пропускная способность:
Обратные дуги (дуги противоположны по отношению к ориентации прямых дуг) имеются, если на дугах имеется поток.
Каждой дуге переписываем стоимость дуги. Если е прямая, то длинна, равна стоимости пересылки, если е обратная, то ее длинна – это стоимость, но при отрицательном значении. Назначаем длины дуг для инкрементального графа: · Для прямой дуги: e:C(e) · Для обратной дуги: e: - C(e) Шаг 2 Нахождение кратчайшего пути в инкрементальном графе из источника v в сток u. Если такого пути нет, то происходит конец алгоритма. Найденный путь является максимальным. Шаг 3 Нахождение минимального Δ. Просматриваем дуги кратчайших путей в инкрементальном графе. Для каждой дуги определяем величину Δ. Для каждой прямой дуги:
Для каждой обратной дуги:
Величина, на которую можно увеличить поток. Находим минимальное значение на всех этих дугах.
Шаг 4 Наращивание потока в сети. Корректируем поток на дугах в соответствии последнего пути в инкрементальном графе. На этих дугах, поток изменяется по правилам: Для прямых дуг:
Для обратных дуг:
Алгоритм завершается, если заданная величина потока достигнута. Переход к шагу 1.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|