Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Teoria_igr_i_issled_operatsy.doc
Скачиваний:
170
Добавлен:
07.06.2015
Размер:
5.21 Mб
Скачать

Самостоятельная работа № 11.

Решить задачу 4.2 методом Ленд и Дойг, исходные данные по вариантам взять в лабораторной работе № 10.

5.4. Метод ветвей и границ для решения задачи о коммивояжере.

Пусть имеется (n+1) городовA0, A1, A2, A3,..., An. Между всеми парами городов известно расстояниеci,j0.Коммивояжер, который находится в городеA0, должен обойти все города, побывав в каждом ровно один раз и вернуться в городA0так, чтобы длина пройденного пути была наименьшей. Путь коммивояжераi0,i1,i2,...,in,i0образует замкнутый маршрут. Его длина

l(i0,i1,i2,...,in,i0)=

Так как это задача на перестановках, то число таких маршрутов равно n!. Для поиска минимального (оптимального) маршрута применим метод ветвей и границ. Общая схема этого метода приведена в разделе «Комбинаторные методы решения задач целочисленного линейного программирования». Дадим описание этого метода для задачи о коммивояжере.

Алгоритм.

Шаг 1. Задание множества X0,1 и вычисление оценки 0,1.

Множество X0,1есть множество всех возможных маршрутов коммивояжера. Оценку0,1получаем, используя процедуруприведения матрицыC0,1=C=(ci,j), i=1,2,3,…, n, j=1,2,3,…, n, следующим образом.

Для всех i=1,2,3,…, n, hi:= min{ci,j | j=1,2,3,…, n},

c'i,j := ci,j – hi, i=1,2,3,…, n, j=1,2,3,…, n.

Для всех j=1,2,3,…, n, Hj:= min{c'i,j | i=1,2,3,…, n },

c" i,j:= c' i,j – Hj, i=1,2,3,…, n, j=1,2,3,…, n.

Переменные hi, Hjназывают коэффициентами приведения. МатрицуC"0,1= (c"i,j),i=1,2,3,…, n, j=1,2,3,…, n, называют приведенной матрицей.

Полагаем

Шаг 2 .Разбиение множества Xr,t на подмножества.

Пусть построено подмножество Xr,tи нижняя оценка функционалаr,tна нем. Этому подмножеству соответствует приведенная матрицаC"r,t. Подмножество разбиваем на два:Xr+1,m+1, Xr+1,m+2, каждому из которых будут соответствовать свои оценкиr+1,m+1, r+1,m+2и приведенные матрицыС"r+1,m+1, С"r+1,m+2. ПодмножествоXr+1,m+1 получается изXr,tдобавлением условия: из пунктаpнепосредственно идти в пунктq. ПодмножествоXr+1,m+2получается добавлением условия: из пунктаpнепосредственно в пунктq идти запрещается. Пару (p,q) выбирают таким образом, чтобы с наибольшей вероятностью подмножествоXr+1,m+1 содержало оптимальный цикл, аXr+1,m+2не содержало его. Для этого пару (p,q) выбирают таким образом, чтобыcp,q=0, при этом, чтобы величина min{cp,jjq}+min{ci,qip} была максимальной, гдеcp,j, ci,qберутся из матрицыC"r,t

Шаг 3 . Преобразование матриц расстояний, пересчет оценок.

Матрицу C"r+1,m+2 строим следующим образом. Полагаем Cr+1,m+2=Cr,t, в нейсp,q:=M, гдеM – достаточно большое число, принимаемое за бесконечность. МатрицаC"r+1,m+2получается изCr+1,m+2процедурой приведения. Для полученияr+1,m+2 складываемr,tс полученными коэффициентами приведения. МатрицуC"r+1,m+1строим следующим образом. ПолагаемCr+1,m+1=Cr,t, и в ней вычеркиваем строкуpи столбецq. Налагаем условие, иключающее образование малых циклов. Для этого восстанавливаем части маршрута, образованные непосредственными переходами вXr+1,m+1. Если добавление любой пары (i,j) к этим маршрутам образует малый цикл, то в матрицеCr+1,m+1 ci,j:=–M. МатрицаC"r+1,m+1получается изCr+1,m+1процедурой приведения. Для полученияr+1,m+2складываемr,tс полученными коэффициентами приведения.

Пример.

Рассмотрим задачу, в которой матрица расстояний имеет вид:

C0,1

j

 

0

1

2

3

4

5

hi

i

0

M

4

10

13

4

8

4

1

2

M

9

7

6

7

2

2

8

5

M

5

5

9

5

3

5

8

5

M

7

10

5

4

6

4

4

9

M

4

4

5

5

1

4

8

3

M

1

 

0

0

0

0

0

0

 

Hj

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

Решение.

Шаг 0. Приводим матрицуC0,1.Находимhiи вычитаем изci,j. Получим матрицу

C'0,1

j

 

0

1

2

3

4

5

hi

i

0

M

0

6

9

0

4

4

1

0

M

7

5

4

5

2

2

3

0

M

0

0

4

5

3

0

3

0

M

2

5

5

4

2

0

0

5

M

0

4

5

4

0

3

7

2

M

1

 

0

0

0

0

0

0

 

Hj

Величины Hjзаписаны в последней строке этой таблицы, вычитаем их изc'i,j, получим следующую таблицу

C"0,1

j

 

0

1

2

3

4

5

hi

i

0

M

0

6

9

0

4

 

1

0

M

7

5

4

5

 

2

3

0

M

0

0

4

 

3

0

3

0

M

2

5

 

4

2

0

0

5

M

0

 

5

4

0

3

7

2

M

 

 

 

 

 

 

 

 

0,1=21

Hj

Строим дерево разбиения

Шаг 1.

Разбиваем множество X0,1на подмножестваX1,1,X1,2.В качестве пары (p,q) берем (2,3).Для нееc"2,3=0 и (min{c2,j)|j3} + min{ci,3| i2}) максимально. Для подмножестваX1,1из пункта 2 идти в пункт 3.Матрица расстояний будет иметь вид:

C11

j

 

0

1

2

4

5

hi

i

0

M

0

6

0

4

 

1

0

M

7

4

5

 

3

0

3

0

2

5

 

4

2

0

0

M

0

 

5

4

0

3

2

M

 

 

 

 

 

 

 

 

Hj

Для запрета малых циклов запрещаем переход из пункта 3 в пункт 2, получаем

C11

j

 

0

1

2

4

5

hi

i

0

M

0

6

0

4

 

1

0

M

7

4

5

 

3

0

3

M

2

5

 

4

2

0

0

M

0

 

5

4

0

3

2

M

 

 

 

 

 

 

 

 

Hj

Все коэффициенты приведения равны 0, поэтому С"1,1=С1,1, 1,1= 0,1=21.

Подмножество X1,2получаем их подмножестваX1,1запретом перехода из пункта 2 непосредственно в пункт 3. Матрица расстояний будет иметь вид

C1,2

j

 

0

1

2

3

4

5

hi

i

0

M

0

6

9

0

4

 0

1

0

M

7

5

4

5

 0

2

3

0

M

M

0

4

 0

3

0

3

0

M

2

5

 0

4

2

0

0

5

M

0

 0

5

4

0

3

7

2

M

 0

 

 0

0

0

5

0

0

Hj

После приведения получим матрицу C1,2.

C1,2

j

 

0

1

2

3

4

5

hi

i

0

M

0

6

4

0

4

 

1

0

M

7

0

4

5

 

2

3

2

M

M

0

4

 

3

0

3

0

M

2

5

 

4

2

0

0

0

M

0

 

5

4

0

3

2

2

M

 

 

 

 

 

 

 

 

 

Hj

1,2=26

При этом оценка получит значение: 1,2=21+5=26.

Достраиваем дерево разбиения

Шаг 2. Минимальная оценка 1,1, поэтому разбиваем подмножествоX1,1. В качестве пары (p,q), относительно которой проводим ветвление, используем пару (4,5).Для подмножестваX2,1

C21

j

0

1

2

4

hi

i

0

M

0

6

0

 

1

0

M

7

4

 

3

0

3

M

2

 

5

4

0

3

M

 

 

 

3

 

 

Hj

2,1=24

В этой матрице с целью запрета малых циклов запрещен перeход из 5 в 4. H2=3, поэтому2,1=21+3=24.Приведенная матрица будет иметь вид

j

C"2,1

0

1

2

4

hi

i

0

M

0

3

0

 

1

0

M

4

4

 

3

0

3

M

2

 

5

4

0

0

M

 

 

 

 

 

 

 

Hj

Для подмножества X2,2

j

C22 

0

1

2

4

5

hi

i

0

M

0

6

0

4

 

1

0

M

7

4

5

 

3

0

3

M

2

5

 

4

2

0

0

M

M

 

5

4

0

3

2

M

 

 

 

 

 

 

4

 

Hj

После приведения получим

j

C22 

0

1

2

4

5

hi

i

0

M

0

6

0

0

 

1

0

M

7

4

1

 

3

0

3

M

2

1

 

4

2

0

0

M

M

 

5

4

0

3

2

M

 

 

 

 

 

 

 

 

Hj

2,2=25

Оценка принимает вид: 2,2=21+4=25. Достраиваем дерево разбиения

На последующих шагах получим

3,4=28

X3,4

3,3=25

X3,3

Для подмножества X5,1 будем иметь:

 C51 

4

5

hi

i

0

0

М

 

3

M

0

 

 

 

 

 

Hj

 5,1=26

т.е. остаются переходы из 0 в 4, из 3 в 5. Эти переходы и переходы, выбранные при движении по дереву от вершины для подмножества X5,1до вершины подмножестваX0,1, получаем цикл 0423510 , длина которогоl=26.Так как всеr,tдля концевых вершин дерева не меньше 26, то этот цикл оптимальный.

Если требуется найти все оптимальные решения, то работу алгоритма необходимо продолжить, т.к. на подмножестве X3,1оценка3,1=26 и на этом подмножестве могут быть оптимальные решения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]