Similar presentations:
Построение оптимального маршрута в задаче коммивояжера методом ветвей и границ
1. Построение оптимального маршрута в задаче коммивояжера методом ветвей и границ
Лекция 71
2. План лекции
I Постановка задачиII Алгоритм метода ветвей и границ
III Пример решения
2
3. Постановка задачи
Даноn – объектов / мест / городов, которые должен
объехать коммивояжер
сij – стоимость переезда из i-го объекта/города в j-й
(i=1,..n j=1..n), выраженная:
1) расстоянием в км.
2) временем (ч., мин.)
3) затратами на переезд (ден. ед.)
При этом необязательно с ij c ji
Коммивояжер должен выехать из первого города,
побывать во всех городах ровно один раз и вернутся
в исходный, так чтобы суммарные затраты на
переезд были минимальны.
3
4. Математическая модель
1, если коммивояжер из города i перезжает в город j; j, i 1,2,..., n; j i;xij
0, в противном случае.
Целевая функция
n
n
F(x) сijx ij min 1
i 1 j 1
1) из каждого города коммивояжер выезжает
n
только 1раз:
x ij 1, j 1, n 2
i 1
2) в каждый город коммивояжер въезжает 1 раз:
n
x ij 1, i 1, n 3
j 1
3) замкнутость маршрута и отсутствие петель:
где ui ,uj – произвольные действительные числа , ui принимает
значение k, если коммивояжер прибыл в i-й город после k-го переезда.
4
u i u j n x ij n 1 i 1, n , j 1, n , i j 4
5. Идея метода ветвей и границ
Пусть G0 – множество допустимых решений задачи, в которой средисовокупности х G0 требуется найти то х, при котором целевая
функция F имеет минимум. По некоторому закону (правилу)
поставим в соответствие множеству G 0 число Z0, которое является
оценкой нижней границы целевой функции на множестве G0.
Разобьем множество G0 на конечное число непересекающихся
подмножеств (для наглядности на два) G1 и G2 для которых
выполнены условия:
G 0 G1 G 2
G1 G 2
Определим по выбранному закону (правилу) оценки нижней
границы целевой функции на этих подмножествах Z1 и Z2.
Z0
Z2
G2
G0
Z1
Z3
G1
G3
Z4
G4
Рисунок 1 – схема ветвления в методе ветвей и границ
5
6. Определения
ОПРЕДЕЛЕНИЕ 1 Циклом t назовем набор из "n"упорядоченных пар городов, образующих маршрут,
который проходит через каждый город только один
раз:
t={(i1, i2 ), (i2, i3),…, (in-1, in), (in, i1)}.
ОПРЕДЕЛЕНИЕ 2 Издержками Z(t) для цикла t назовем
величину:
n 1
Z(t) сi k ,i k 1 сi n , i1 5
k 1
В нашей интерпретации Z(t) – это длина замкнутого
маршрута, образованного циклом t.
6
7. Обоснование метода
Если Z(t) – издержки цикла t для исходной матрицы, a Z '(t) – издержки цикла tпосле приведения, то Z (t) = Z '(t) + h и, очевидно, что h является нижней
границей издержек для всех циклов t исходной матрицы расстояний, поскольку
h – сумма минимальных элементов строк и столбцов. Следовательно, будем
использовать h в качестве оценки разветвляемых подмножеств.
Принцип разбиения
Пусть G0 – множество всех маршрутов. Разобьем G0 на два подмножества: первое
подмножество состоит из всех маршрутов, включающих переезд из города «i» в
город «j», говорят содержащих пару (i,j), а второе подмножество состоит из
множества маршрутов не содержащих пару (i,j). Пару городов (i,j) для ветвления
будем выбирать среди тех пар, которым в приведенной матрице соответствуют
нулевые элементы, причем выбирается такая пара (i,j), чтобы подмножество, не
содержащее пару (i,j) имело максимальную оценку.
Разветвляя, последовательно, мы построим дерево ветвей, на вершине которого
будет подмножество, содержащее две пары городов, завершающих маршрут.
Спускаясь по дереву ветвей, мы по парам городов, определяющих ветвление,
определим все пары городов, составляющих маршрут
7
8. Алгоритм метода ветвей и границ
1) Осуществим приведение матрицы С по строкам истолбцам, получим приведенную матрицу .
2) Вычислим сумму приводящих констант h(k) - это
оценка для исходного множества маршрутов G0.
Обозначим оценку ω(G о) = h .
3) Выберем претендентов для ветвления, т.е. те (i, j)
i=l, 2, ..., j = l, 2, ..., i ≠ j, для которых сij (k)= 0 и
вычислим для всех таких сij(k) величины
θij min c i j min c ij , j 1,2,..., i 1,2... 6
j j
i i
4) Выберем для ветвления ту пару (i, j) из
претендентов на ветвление, для которой θ ij
получится максимальным.
8
9. Алгоритм метода ветвей и границ
5) В качестве оценки множества всех маршрутов, не содержащихвыбранную пару (i, j), возьмем оценку того множества, которое
разветвляли плюс max θij.
6) Так как из каждого города можно выезжать только один раз и в каждый
город можно въезжать только один раз, то строку «i» и столбец «j» можно
из дальнейшего рассмотрения исключить. Чтобы не получить замкнутых
неполных циклов, нужно наложить необходимые запреты, в частности, на
переезд из «j» в «i» то есть положить ∞.
7) Если полученная после вычеркивания строки столбца и наложения
запретов матрица имеет размерность 2x2, то определяемые ею пары
городов завершают маршрут. Приводя эту матрицу и добавляя приводящую
константу к оценке последнего разветвляемого множества, получим оценку
маршрута. Если эта оценка не больше оценки всех тупиковых ветвей, то
маршрут, описываемый деревом ветвей, является оптимальным, иначе
процесс ветвления должен быть продолжен, исходя из множества с
меньшей оценкой.
8) Если усеченная матрица не имеет размерности 2x2, то приводим
полученную матрицу и находим оценку множества {i, j}, то есть множества
маршрутов, содержащих пару (i, j), как сумму приводящей константы и
оценки разветвляемого множества. Переходим к п. 3.
9
10. Постановка задачи
Имеется четыре магазина, расстояние междукоторыми описано матрицей расстояний (км.).
Найти оптимальный (минимальный) замкнутый
маршрут объезда.
1
2
3
4
1 13 12 4
2 13 7 8
С
3 12 7 5
4 4 8 5
1, если коммивояжер из города i перезжает в город j; j, i 1,2,..., n; j i;
x ij
0, в противном случае.
10
11. Приведение матрицы
Приведение по строкам1 2 3 4
min
1 13 12 4
2 13 7 8
3 12 7 5
4 4 8 5
1 2 3 4
1 9 8 0
7
2 6 0 1
5
3 7 2 0
4
4 0 4 1
4
Приведение по столбцам
1 2 3 4
1 9 8 0
2 6 0 1
3 7 2 0
4 0 4 1
min 0 2 0 0
11
1 2 3 4
1 7 8 0
2 6 0 1
3 7 0 0
4 0 2 1
h (1) 4 7 5 4 2 22
12. Первая итерация метода
12
3 4
1 7 8 0
2 6 0 1
С
3 7 0 0
4 0 2 1
2. Оценки претендентов на
ветвление
4. Усечение матрицы
стоимости
14 7 0 7
1
32 0 2 2
41 1 6 7
с 41
22+7=29
{1,4}
5. Приведение матрицы
1 2 3
1,4
22+7=29
Рисунок 2- схема ветвления шаг 1
min
1 2 3
1 2 3
2 6 0 0
2 6 0
2 0 0
3 7 0 0 3 7 0 3 1 0
4 2 1 1
4 1 0
4 1 0
min 6 0 0
h ( 2) 0 0 1 6 0 0 7
12
3 4
1 7 8 0
2 6 0 1
С
3 7 0 0
4 0 2 1
23 1 1 2
34 0 0 2
22
G0
2
13. Вторая итерация
7. Оценки претендентов на ветвление21 0 1 1
1 2 3
23 0 0 0
2 0 0
С 3 1 0
4 1 0
32 1 1 2
41 1 0 1
8. Усечение матрицы стоимости
1 2 3
29
1,4
22
29
G0
{1,4}
29+2=31
3,2
Рисунок 3- схема ветвления шаг 2
29+0=29
3,2
2 0 0
С 3 1 0
4 1 0
с 23
9. Приведение матрицы
1 3
2 0
С
4 0
h ( 3) 0
13
14. Заключительная итерация
1 32 0
С
4 0
10. Так как матрица размерности 2x2, то не запрещенные пары (2,1) и (4,3)
завершают маршрут
22
G0
29
31
1,4
3,2
29
29
29
{1,4}
3,2
2, 1
4, 3
∞
2, 1
4, 3
Рисунок 4- итоговая схема ветвления
11. Критерий оптимальности: если оценка итогового маршрута не больше оценок
всех тупиковых ветвей, решение оптимально.
14
15. Замечания
1. Если критерий оптимальности не выполненисследуем тупиковую ветвь, где он не выполнен ( i, j ).
Для этого ставим в исходной матрице запрет на
соответствующий переезд сij и повторяем весь
алгоритм заново.
2. Недостаток метода (следствие из предыдущего):
алгоритм может свестись к полному перебору
возможных вариантов.
3. На каждом шаге метода количество запретов на
переезд должно быть не меньше размерности
матрицы. Если не удалось поставить прямой запрет,
анализируют уже «выпавшие звенья» и запрещают
переезд, который может образовать неполный цикл.
15