Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций ДМ.doc
Скачиваний:
25
Добавлен:
16.11.2019
Размер:
3.29 Mб
Скачать

4.5.4 Транспортная задача

Транспортная задача – задача наиболее рационального распределения потока по дугам транспортной сети.

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

1 задача - транспортная задача по критерию стоимости;

2 задача - транспортная задача по критерию времени.

Часто транспортная задача трактуется как задача по организации перевозки некоторого груза.

Считают, что есть пунктов отправки груза, пунктов потребления груза: , .

В пунктах отправки имеется груз в количестве , а в пунктах приёма необходимо получить груз .

Необходимо выполнение условия баланса:

Транспортная задача по критерию стоимости

Известно, что стоимость перевозки по дуге единицы груза .

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

Задача решается исходя из теории потоков.

Введём обозначения:

- пропускная способность дуги из в ;

- стоимость прохождения единицы потока по дуге ;

- поток, проходящий по дуге .

Стоимость всего пути по дуге : .

Считают, что задана транспортная сеть с наибольшим потоком . Требуется пропустить по данной сети поток, не превышающий таким образом, чтобы общая стоимость прохождения потока была наименьшей, т.е. обеспечивался минимум:

где , поток по дуге не должен превышать пропускную способность.

Считаем, что - длина пути, тогда стоимость прохождения некоторого потока по пути из в равна: .

Существует два варианта решения транспортной задачи:

1 вариант. На пропускную способность дуг не накладывается никаких ограничений. Тогда задача решается простым нахождением кратчайшего пути.

2 вариант. На пропускную способность дуг накладываются ограничения. В этом случае задача решается методом частичных потоков.

Алгоритм метода частичных потоков

  1. В простейшем графе ищем кратчайший путь из в , .

  2. Пусть в результате пункта 1 определили путь , имеющий пропускную способность , т.е. .

  3. Пропускаем по данному пути поток , так что

  1. Производим замену пропускной способности дуг по правилу:

  1. Поток, который необходимо пропустить по транспортной сети, уменьшаем на , .

  2. Исключаем из дальнейшего рассмотрения дуги, у которых .

  3. Рассматриваем новый граф , как частичный граф исходного и переходим к пункту 1 для пропуска по транспортной сети потока .

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

  1. Алгоритм останавливается, когда , .

Общая стоимость перевозки определяется по формуле (1).

Решение данной задачи основано на определении кратчайшего пути в графе, который определяется для каждого частичного графа, в частности по алгоритму Дейкстры.

Пример решения транспортной задачи по критерию стоимости

Имеется однородный груз в трёх пунктах отправления. Требуется доставить груз в четыре пункта назначения при соблюдении условия баланса. Стоимость перевозки . Т.е. сколько груза вести из каждого пункта отправления в пункт назначения, чтобы стоимость перевозки была минимальной.

Таблица 4.11 – Таблица стоимости и количества перевозимого груза

5

10

20

15

10

8

3

5

2

15

4

1

6

7

25

1

9

4

3

1.Проверяем условие баланса: .

2.Строим транспортную сеть. Выбираем начальную вершину и соединяем её с вершинами дугами с пропускной способностью равной аi. Вершины соединяют с выходом сети с пропускной способностью равной . Считаем, что стоимость перевозки из в и из в равна нулю.

3. Находим кратчайший путь из в . Присваиваем всем вершинам метку 0. Начиная с вершины присваиваем всем вершинам метку, которая равна стоимости перевозки груза по соединяющей их дуге. Рядом с меткой ставим вершину, из которой была присвоена метка. Проводя следующую индексацию из , заменяем метки вершин , если стоимость дуги меньше, чем метка, которую имеет вершина. Метку делаем постоянной. Заканчиваем индексацию, когда пройдены все вершины . Из меток вершин выбираем минимальную и присваиваем метку выходу сети . По вершинам возле постоянных меток возвращаемся назад и отмечаем кратчайший путь.

4. Применяем алгоритм метода частичных потоков.

x1 8 y1

10 3 5

4

1

2 5 y2 10

6

x0 15 x2 z

7 y3 20

25 1 9 15

x3 4 y4

3

Рисунок 4.12 – Транспортная сеть для таблицы 4.11

1-ый этап. Кратчайший путь: .

Стоимость по дуге: .

Частичный поток: . Стоимость груза: .

Осталось груза: .

x1 y1

10 5

y2 10

x0 15 x2 z

y3 20

25 15

x3 y4

Рисунок 4.13 – Первый путь перевозки груза по ТС

x1 y1

10

y2 10

x0 15 x2 z

y3 20

20 5 15

x3 y4

Рисунок 4.14 – Второй путь перевозки груза по ТС

x1 y1

10

y2

x0 5 x2 10 ыыz

y3 20

20 5 15

x3 y4

Рисунок 4.15 – Третий путь перевозки груза по ТС

x1 y1

10

y2

x0 5 x2 10 z

y3 20

20 5 5

x3 y4

Рисунок 4.16 – Четвёртый путь перевозки груза по ТС

x1 y1

10

y2

x0 5 x2 10 z

y3 20

15 5

x3 y4

5

Рисунок 4.17 – Пятый путь перевозки груза по ТС

x1 y1

10

y2

x0 5 x2 10 z

y3 5

5 15

x3 y4

5

Рисунок 4.18 – Шестой путь перевозки груза по ТС

Таблица 4.12 – Решение транспортной задачи в виде таблицы

1

2

3

4

5

5

1

10

10

5

15

5

1

1

2

3

4

6

5

10

20

15

60

30

45

35

25

20

5

0

Стоимость перевозки всего груза:

.

Транспортная задача по критерию времени

Дана транспортная сеть с некоторым распределением потока φz (см. транспортную сеть, полученную в результате решения транспортной задачи по критерию стоимости).

Задача:

Найти такое распределение потока, которое бы обеспечивало минимальное время его распределения Tmin.

Здесь веса дуг трактуются как время, необходимое для доставки груза по данной дуге: dij = tij .

Решение заключается в следующем:

1) Находится некоторое распределение потока φz по дугам транспортной сети. Т.е. получаем некоторый частичный граф G1’, в который включаются дуги, участвующие в передаче потока. Каждая из этих дуг входит в состав пути из x0 в z и определяет время прохождения данного потока tμ . Таких путей x0 в z может быть конечное множество:

G1’ = { μ1, μ2, … , μn }, которым соответствует время прохождения по пути

Т = { tμ1, tμ2, … , tμn }.

Общее время прохождения потока:

Т = max tμ. μG1

Для нашего случая, когда Т = max {1, 1, 2, 3, 6, 4} = 6.

Т.о. Тmin = min T = min max tμ – минимакс.

2) Находим частичное решение. Выведем из графа G1’ наиболее продолжительный путь и введем ранее неиспользованные дуги, у которых вес меньше, чем у выведенной дуги. Во вновь образованном графе G2’ перераспределим исходный поток φz, используя алгоритм нахождения максимального потока в графе (Форда и Фалкерсона). Этот пункт повторяем до тех пор, пока выведенные пути наибольшей продолжительности будут возмещаться новым распределением потока φz.

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

yj : = xn + j.

Для нашего примера: yj : = x3 + j.

x1 y1 = x4

10 3 5

4

1

2 5 x5 10

x0 15 x2 z

x6 20

25 1 4 15

x3 3 x7

Рисунок 4.19 – Преобразованная транспортная сеть

После исключения дуги (х2, х6) со временем прохождения по ней

t = 6 результирующий поток транспортной сети уменьшается на 5 единиц:

φz = φz – 5 = 50 – 5 = 45.

К полученному графу добавляем дуги, которые не участвовали в исходном распределении потока, но с длиной меньше 6:

(х2, х4), (х1, х5), (х1, х6) – Т = {3, 5, 4}.

Перераспределим 5 единиц потока, используя данные дуги, пропустив его по пути = (х0, х2, х4, х3, х6, z), применив алгоритм Форда и Фалкерсона нахождения максимального потока в транспортной сети.

Получаем φz’’ = φz + 5 = 45 + 5 = 50 = φz.

При этом Т2 = max ­{t14, t21, t22, t33, t34} = {2, 4, 1, 4, 3} = 4.

Таким образом граф G2 будет иметь следующий вид:

x1 y1 = x4

10 5

4

1

2 (5) (10) x5 10

x0 15 x2 z

(10) x6 20

25 4 (20) 15

x3 3 (5) x7

Рисунок4.20 – Граф G2 после перераспределения 5 единиц потока

Примечание: Если суммарный поток по дуге (хi yj) и (yj хi) равен 0, то данная дуга отбрасывается. В нашем примере это дуга (х3 х4).

Таблица 4.13 – Решение транспортной задачи по критерию стоимости

1

2

3

4

5

6

10

0

10

5

20

5

1

1

2

3

4

4

10

0

20

15

60

20

t μ

1

1

2

3

4

0

Таким образом, алгоритм решения данной задачи следующий:

1. Найти начальное распределение потока в транспортной сети, решив, например, транспортную задачу по критерию стоимости. Найти время прохождения потока в данном распределении t.

2. Построить новый граф, исключив из начального дугу, обеспечивающую максимальное время прохождения потока, и добавив ранее неиспользуемые дуги, у которых tij < t.. При этом поток, проходящий по новому пути, будет меньше на величину потока, проходившего по вычеркнутой дуге.

3. Решить задачу нахождения максимального потока в транспортной сети по алгоритму Форда и Фалкерсона. Если удастся пропустить весь заданный поток, то перейти к пункту 2. Иначе алгоритм останавливается. Минимальное время прохождения потока будет определяться последним временем прохождения исходного потока.