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

3.3.2. Метод ветвей и границ

Метод ветвей и границ относится к комбинаторным оптимизационным методам. Он предполагает направленный перебор вариантов и в ряде случае позволяет уйти от полного перебора. Метод основан на разбиении всего множества решений задачи на подмножества (ветвление) и оценивании стоимости решения на каждом подмножестве.

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

Пусть  – множество всех замкнутых маршрутов, проходящих через все города по одному разу. Такие маршруты называют гамильтоновыми контурами. Для каждого маршрута известна его длина. Основная идея метода состоит в том, что вначале находят нижнюю границу длин всех гамильтоновых контуров 0, т.е. число, не большее, чем длина любого гамильтонова контура (нижняя оценка длины маршрута ). Это число может быть найдено до того, как найден сам наиболее короткий маршрут.

Далее все множество гамильтоновых контуров разбивается на два подмножества таким образом, чтобы любой контур в первом множестве содержал некоторую дугу (i, j), т.е. переход из города i в город j; второе множество состоит из контуров, эту дугу не содержащих. Для каждого из этих подмножеств определяются нижние границы длины входящих в них гамильтоновых контуров (нижняя оценка длины маршрута) аналогично тому, как это определялось для всего множества. Для дальнейшего рассмотрения выбирается подмножество с меньшей оценкой. Это подмножество в свою очередь подвергается ветвлению на два, для каждого из которых определяется нижняя оценка длины маршрута. Из всех не исследованных к данному моменту подмножеств (т. е. таких, которые еще не были подвергнуты разбиению, или ветвлению ) для дальнейшего рассмотрения выбирается подмножество с меньшей оценкой и т. д. пока не будет определен гамильтонов контур минимальной длины. Параллельно расчетам строится дерево ветвления.

Рассмотрим основные шаги решения.

1 шаг. Осуществить приведение матрицы по строкам: определить минимальный элемент каждой строки и вычесть из элементов строк найденный минимальный элемент.

2 шаг. Осуществить приведение матрицы по столбцам: определить минимальный элемент в каждом столбце и вычесть из элементов столбцов найденный минимальный элемент.

3 шаг. Найти константу приведения (0) как сумму найденных минимальных элементов строк и столбцов. Константа приведения 0 является нижней границей длины для множества гамильтоновых контуров.

4 шаг. Для каждого нуля приведенной матрицы определить его «степень» как сумму минимальных элементов строки и столбца, содержащих этот нуль.

5 шаг. Нулевой элемент с наибольшей степенью задает дугу (t0, j0), по которой проводится разбиение множества гамильтоновых контуров (t0 – строка, а j0 – столбец, на пересечении которых находится выбранный нулевой элемент). В множество включаются все контуры, содержащие эту дугу, в множество – не содержащие ее.

6 шаг. Матрицу, описывающую множество , получаем из приведенной матрицы путем вычеркивания строки to и столбца jo. На дереве ветвления обозначаем, что рассматриваются контуры, включающие дугу (t0, j0). Вводя в маршрут дугу (to, jo), следует заблокировать все изолированные контуры, которые могут содержать эту дугу. Для блокировки в соответствующую клетку матрицы вводится «». В частности, значение элемента (jo, to) в матрице заменяем на , так как рассматриваются маршруты, содержащие переход из города t0 в j0, а значит, обратный переход из города jo в to уже невозможен.

7 шаг. Выполнить приведение матрицы множества по строкам и столбцам и определить нижнюю границу этого множества по формуле:

,

где

– сумма минимальных элементов, используемых для приведения матрицы множества .

8 шаг. Матрицу множества получаем из исходной матрицы, рассматриваемой на шаге 4, заменой элемента (to, jo) на .

9 шаг. Для полученной матрицы множества определить константу приведения () и нижнюю границу множества по формуле

,

выполнить приведение матрицы.

10 шаг. Дальнейшему ветвлению подвергается подмножество, имеющее меньшее значение нижней границы.

11 шаг. Для выбранного множества повторить шаги 4–9.

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

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

Задача

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

Города

1

2

3

4

5

6

1

10

12

8

9

11

2

21

7

5

21

3

3

13

19

13

4

15

4

15

20

14

10

10

5

7

15

9

12

23

6

16

3

11

8

17