Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Математические методы принятия решений

..pdf
Скачиваний:
2
Добавлен:
13.11.2023
Размер:
22.94 Mб
Скачать

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

Рассмотрим решение задачи коммивояжера методом ветвей и границ. Вначале определяют некоторое допустимое решение (допу­ стимый маршрут). После этого множество всех оставшихся марш­ рутов разбивают на все более мелкие подмножества и при каждом разбиении вычисляют нижнюю границу целевой функции текущего наилучшего (в смысле наименьшей стоимости проезда) маршру­ та. С помощью найденных границ проводят дальнейшее разбиение подмножеств допустимых маршрутов и в конечном итоге определя­ ют оптимальный маршрут. Это разбиение подмножеств маршрутов можно рассматривать как узлы дерева. Поэтому данный метод на­ зывают методом поиска по дереву решений, или методом ветвей и границ.

Матрица стоимостей содержит неотрицательные элементы щ . Маршрут Т можно представить как множество упорядоченных пар пунктов Т = {(гь г2), (г2, г3),..., (гп_ь г„), (гп, г,)}. Каждый допу­ стимый маршрут представляет собой цикл, проходя по которому коммивояжер посещает каждый пункт ровно один раз и потом возвращается в исходную точку. Каждая упорядоченная пара (г, j) является дугой, или звеном маршрута. Стоимость маршрута Т рав­ на сумме элементов матрицы стоимостей, но только тех, которые соответствуют пунктам, лежащим на маршруте Т:

г ( Т ) = 2 dj. i .j e T

Величина z(T) определена для любого допустимого маршрута и не может быть меньше длины оптимального маршрута, т. е. те­ кущее значение z(T) является верхней границей zB(T) стоимости оптимального маршрута Т.

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

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

Если z(T) стоимость маршрута Т, определяемая матрицей стоимости до выполнения редукции, z\(Т) — стоимость того же маршрута, определяемая редуцированной матрицей, Н сумма всех констант, используемых при вычислении редуцированной матрицы, то z(T) = z\(T) + Н. Поскольку редуцированная матрица содер­ жит только неотрицательные элементы, то Н является нижней границей стоимости маршрута Г для нередуцированиой матрицы стоимости.

В алгоритме метода ветвей и границ диагональные элементы исходной матрицы стоимости полагают равными оо, т. е. сц = оо.

1. Выберем произвольный допустимый маршрут, состоящий, например, из звеньев (7 ,4), (4, J), (5,5), (5, 6), (6,2), (2 ,1). Вычис­ лим стоимость данного маршрута:

zB(T) = 16 + 18 + 27 + 0 + 5 + 7 = 73,

т. е. для оптимального маршрута стоимость поездки коммивояжера не может превосходить значения zB(T) = 73.

2.Выполним редукцию строк; для этого в каждой строке i определим минимальный элемент и найденное значение с* вычтем из элементов соответствующей строки. Результаты запишем в виде табл. 3.11.

3.В полученной табл. 3.11 проведем редукцию столбцов. Из табл. 3.11 видно, что проводить следует только редукцию первого

Таблица 3.11

Редукция строк

Узел

1

2

3

4

5

6

а

1

оо

и

27

0

14

10

16

2

6

оо

15

0

29

29

1

3

20

13

00

35

5

0

0

4

5

0

9

оо

2

2

16

5

7

41

22

43

оо

0

5

6

18

0

0

4

0

00

5

столбца, так как остальные столбцы содержат нулевые элементы. Редукция столбцов представлена в табл. 3.12.

Таблица 3.12

Редукция столбцов

Узел

1

2

3

4

5

6

7

оо

и

27

0

14

10

2

1

оо

15

0

29

29

3

15

13

оо

35

5

0

4

0

0

9

оо

2

2

5

2

41

22

43

оо

0

б

13

0

0

4

0

оо

Qj

5

0

0

0

0

0

Ci

16

1

0

16

5

5

II

ОО

Строка Qj содержит вычитаемые константы для каждого столб­ ца при редукции столбцов. Значение нижней границы для всех маршрутов в рассматриваемой задаче равно Я — сумме всех вычи­ таемых констант:

66

Я= 1 > + Е ^ = 48-

г=1

j = 1

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

Однако нулевые элементы не единственны в строках и столбцах. Вместо того чтобы одновременно определять все звенья оптималь­

ного маршрута с помощью текущей матрицы стоимости, воспользу­ емся алгоритмом, на каждом шаге которого по матрице стоимости строится одно звено оптимального маршрута. Естественно вначале выбрать звено нулевой длины, а затем последовательно добавить звенья нулевой или минимальной длины. Если выбрать звено (г, j), то решение не должно содержать других звеньев, соответствую­ щих элементам г-й строки и j-ro столбца; если звено (г, j ) можно исключить из окончательного решения, то его можно не рассмат­ ривать при выполнении последующих операций. Следовательно, для каждого звена достаточно рассмотреть следующие два случая: в первом случае звено включают в текущее и все последующие решения до определения оптимального решения; во втором —зве­ но исключают из дальнейшего рассмотрения. В нашем примере мы уже получили начальный узел дерева ветвления, соответству­ ющий множеству всех маршрутов с нижней границей стоимости всех маршрутов, равной Я = 48, и верхней, равной zB(T) = 73, т. е. диапазон (отрезок) стоимости всех маршрутов z(T) равен [48,73].

5. Следующим шагом процедуры является выбор звена, на ко­ тором будет базироваться ветвление. Поскольку в каждой строке и в каждом столбце несколько элементов Су равны нулю, то надо рассмотреть маршруты, не содержащие звено Пункт дол­ жен быть связан с некоторым другим пунктом, и поэтому каждый маршрут, не содержащий звено (i , j ), должен содержать звено А, стоимость которого не меньше минимального элемента г-й строки, кроме Cij = 0. Стоимость звена А обозначим А{. Таким образом, чтобы Ai было равно нулю, в строке должно быть не менее двух нулевых элементов. Аналогично, чтобы в пункт j можно было по­ пасть из некоторого другого города, маршрут, не содержащий звено

(г, j), должет содержать звено В, у которого стоимость не мень­ ше минимального элемента j-ro столбца, кроме Су- = 0. Обозначим стоимость проезда по звену В через B j, а сумму величин А{ и B j через Фу. Величину Фу называют вторичным штрафом, и она

равна минимальному штрафу, которому

мы подвергаемся, если

не включаем звено (г, j) в оптимальный

маршрут. Если штраф

за неиспользование звена вычислить для всех звеньев, у которых Су = 0, то можно сравнить соответствующие значения Фу и вклю­ чить в текущий маршрут звено (г, j), за неиспользование которого

мы заплатили бы максимальный штраф, т. е., включая звено (г, j )9 мы получаем выигрыш в стоимости, равный максимальному значе­ нию Фу. Нижняя граница для соответствующей ветви должна быть выбрана таким образом, чтобы она не превосходила длины ни од­ ного из маршрутов, не содержащих звено (г, j ). Данное требование будет выполнено, если значение новой нижней границы положить равным сумме значений текущей нижней границы и максимального штрафа за неиспользование звена Для определения макси­ мального значения Фу будем исследовать все элементы су = 0; при су ф 0 величина Фу = 0. Данное утверждение справедливо в силу того, что если положить су = оо, а затем провести редукцию г-й строки и jf-ro столбца, то сумма вычитаемых констант будет рав­ на Фу. Для рассматриваемого случая значения А{ и B j приведены в табл. 3.13, а значения Фу (вторичный штраф) для узлов, соответ­ ствующих су = 0 , —в табл. 3.14. Максимальное значение Фу = 10 соответствует звену (7 ,4). Следовательно, в качестве базового звена ветвления выбираем звено (7,4).6

Таблица 3.13

Значения A i и B j

Узел

1

2

3

4

5

6

а

А,

1

ОО

и

2 7

0

14

10

16

10

2

1

о о

15

0

2 9

2 9

1

1

3

15

13

00

35

5

0

0

5

4

0

0

9

00

2

2

16

0

5

2

41

22

43

о о

0

5

2

6

13

0

0

4

0

о о

5

0

Qj

5

0

0

0

0

0

Я = 48

Bj

1

0

9

0

2

0

Таблица 3.14

Значения Фу

Звено (г, j)

(1,4)

(2,4)

(3,6)

(4,1)

(4,2)

(5,6)

(6,2)

(6,3)

(6,5)

Фу = Ai + B j

10

1

5

1

0

2

0

9

2

6.Нижняя граница для маршрутов, не включающих звено (7,4),

вычисоляется по формуле Я + Ф14 = 48 + 10 = 58. Чтобы опреде­ лить новую нижнюю границу для маршрутов, включающих зве­ но (7 ,4), необходимо преобразовать матрицу стоимости. Если мы

включили в маршрут некоторое звено (k, I), то в дальнейшем мы не рассматриваем к-ю строку и I-й столбец. Кроме того, звено (к, I) является тогда звеном некоторого ориентированного цикла и не мо­ жет принадлежать этому же маршруту. Последнее условие можно

ВЫПОЛНИТЬ, ПОЛОЖИВ C/fc = оо.

Из рассмотрения следует исключить и так называемые запре­ щенные звенья — звенья, с помощью которых в дальнейшем мо­ гут быть образованы циклы, включающие в себя неполное мно­ жество пунктов (могут быть образованы подмаршруты). Элемен­ ты матрицы стоимости, соответствующие этим звеньям, полагают равными оо. Преобразованная матрица стоимости представлена в табл. 3.15. Запрещенных звеньев в данном случае не существует. Матрица решений после редукции строк и столбцов, а также с ука­ занием значений Cj, А { и B j для нее приведена в табл. 3.16. Нижняя граница для маршрута, включающего звено (1,4), может быть вы­ числена как сумма всех новых вычитаемых констант Н\ и старой нижней границы, т. е. нижняя граница равна 48 + 1 = 49.

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

Таблица 3.15

Преобразованная матрица стоимости

Узел

1

2

3

5

6

2

1

оо

15

29

29

3

15

13

оо

5

0

4

сю

0

9

2

2

5

2

41

22

оо

0

6

13

0

0

0

оо

Таблица 3.16

Вторая матрица решений

Узел

1

2

3

5

6

а

Ai

2

0

00

14

28

28

1

14

3

15

13

оо

5

0

0

5

4

оо

0

9

2

2

0

2

5

2

41

22

оо

0

0

2

6

13

0

0

0

00

0

0

Q i

0

0

0

0

0

Н\ = 1

 

 

 

 

 

 

 

B j 2 0 9 2 0 — —

 

звено (/, 4) и не включающие звено

 

(1,4). В узлах дерева указаны нижние

 

границы для каждого варианта маршру­

 

та, 48 ^ z(T) ^ 73.

 

 

7.

С выч

Рис. 3.19. Дерево решений

решений начинается

вторая итерация

для первых двух этапов

решения. После второй редукции имеем

Ф21 = 16, Ф36 = 5, Ф42 = 2, Ф56 = 2, Ф62 = 0, Ф6з = 9 и Ф65 = 2. Мак­ симальным среди них является значение Ф21 = 16, т. е. выбирают звено (2,1). Новая нижняя граница для маршрута, не включающего звено (2 ,1), равна 49 + 16 = 65.

Чтобы определить множество маршрутов, содержащих звено (2,1), вычеркнем во второй матрице стоимости (см. табл. 3.16) вторую строку и первый столбец. Стоимость звена (1,2) равна теперь оо, но в третью матрицу решений этот элемент не вхо­ дит. Однако звено (4,2) теперь является запрещенным, поскольку оно могло бы образовать подмаршрут. Поэтому полагаем С42 = оо. В табл. 3.17 приведена третья матрица решений после выполнения редукции.

Таблица 3.17

Третья матрица решений

Узел

2

3

5

6

C i

Ai

3

13

оо

5

0

0

5

4

оо

7

0

0

2

0

5

41

22

оо

0

0

22

6

0

0

0

оо

0

0

Qj

0

0

0

0

Я , = 2

Bj

13

7

0

0

Новая нижняя граница для маршрутов, содержащих звено (2,1), равна 49 + 2 = 51. Ветвление на следующей итерации будет осу­ ществляться от звена (2,1). Полный маршрут приведен на рис. 3.20. Этот маршрут — промежуточное решение.

8. Построенный полный маршрут будет оптимальным, если его длина не превосходит длины любого маршрута, соответствующе­ го другим звеньям дерева. Длина построенного полного маршрута

равна 63, а нижняя граница для звена (7 ,4), равная 58, меньше 63. Необходимо исследовать и подмножество маршрутов, которые не содержат звено (7 ,4 ), т.е. начать расмотрение с исходной матрицы стоимости (см. табл. 3.10). Но для того, чтобы исключить все марш­ руты, содержащие звено (7 ,4), значение элемента си матрицы сто­ имости примем равным оо. Получим табл. 3.18. Процедуру анализа

Таблица 3.18

Матрица стоимости возврата

Узел

1

2

3

4

5

6

7

00

27

43

оо

30

26

2

7

оо

16

1

30

30

3

20

13

оо

35

5

0

4

21

16

25

оо

18

18

5

12

46

27

48

00

5

6

23

5

5

9

5

оо

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

9. С новой матрицей, матрицей стоимости возврата, выполняют описанные процедуры ветвления и построения границ. Получен­ ное при этом дерево изображено на рис. 3.21. Нахождение верхних границ не обязательно, но эта операция иногда позволяет сократить проводимые вычисления. Из рис. 3.21 следует, что нижняя граница даже неполного маршрута, не содержащего звено (7 ,4), превыша­ ет 63. Таким образом, маршрут, содержащий звено (7 ,4), является оптимальным. Оптимальный маршрут состоит из следующих зве­ ньев или пар пунктов: (6 ,2), (4,2), (3,5), (5, 6 ), (2, 7), (7 ,4). Он является ориентированным циклом, стоимость проезда по которому равна 63, т. е. 630 уел. ед.

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

Основная особенность задачи коммивояжера заключается в том, что в ней требуется существование ориентированного цикла, в ко­ торый ровно один раз входят все узлы сети.

§ 3.10. Задача о многополюсной цепи с максимальной пропускной способностью

С задачей о многополюсном максимальном потоке тесно связана задача о многополюсной цепи с максимальной пропускной способно­ стью. Алгоритм, описанный в § 3.8, позволяет находить максималь­ ный поток между каждой парой узлов. Очевидно, максимальному потоку между каждой парой узлов могло соответствовать множе­ ство путей или цепей из источника в сток. В действительности

взадаче о максимальном потоке рассматривают лишь те пути или цепи, с помощью которых можно увеличить поток из одного узла

вдругой. Рассмотрим простую сеть, изображенную на рис. 3.22. (Числа, приписанные дугам, соответствуют верхним границам по­ токов по ним.) Величина максимального потока между узлами А и D равна 40, а соответствующие по­

токи

по дугам

следующие:

х а в

20,

 

х а с

= 25, х с в 5, X B D

= 25, X C D

= 15.

 

Узлы А и D соединены тремя цепями,

 

как показано на рис. 3.22.

 

 

 

Рассмотрим

задачу,

относящуюся к

 

приведенной на

рис.

3.22 сети:

какая

Рис. 3.22. Сеть для зада-

цепь, ведущая из узла А в узел D, имеет

чи 0 цепи с максимальной

максимальную

пропускную

способ-

пропускной способностью

ность? Очевидно, цепь с максимальной пропускной способностью определяют последовательностью узлов A —* B —*D. Величина максимального потока по этой цепи есть Fmax = 20. Задача, ко­ торую мы хотим рассмотреть в настоящем параграфе, это задача о многополюсной цепи с максимальной пропускной способностью, т. е. задача о цепи с максимальным потоком между всеми парами узлов.

Эффективную вычислительную процедуру, которая представля­ ет собой модификацию трехместной операции, используемой при решении задачи о многополюсной кратчайшей цепи (пути), разра­ ботал Т. Ху. Данный алгоритм состоит в следующем.

Соседние файлы в папке книги