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

ЛР / ЛР5 / ПМО ЛР5

.pdf
Скачиваний:
3
Добавлен:
25.06.2023
Размер:
192.42 Кб
Скачать

ГУАП

КАФЕДРА №41

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

ПРЕПОДАВАТЕЛЬ

ассистент

 

 

 

Б.К. Акопян

 

 

 

 

 

 

 

 

 

должность, уч. степень, звание

 

подпись, дата

 

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №5

ПРИМЕНЕНИЕ МЕТОДА ВЕТВЕЙ И ГРАНИЦ ДЛЯ РЕШЕНИЯ ЗАДАЧИ КОММИВОЯЖЕРА

по курсу: Прикладные методы оптимизации

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ ГР. №

подпись, дата

 

инициалы, фамилия

Санкт-Петербург 2022

Цель работы

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

Индивидуальный вариант

Индивидуальный вариант номер 10 в соответствии с таблицей 1.

Таблица 1 – Индивидуальный вариант задания

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

X0 = {(1,2); (2,3); (3,4); (4,1)}

Тогда F(X0) = 7 + 1 + 1 + 10 = 19

Ход работы

1.Определили значения α и β, дополнить ими исходную матрицу расстояний

(Таблица 1).

1 = 2, 2 = 1, 3 = 1, 4 = 51 = 2 2 = 3 3 = 0 4 = 0

N

1

 

2

3

4

di

 

 

 

 

 

 

 

1

 

-

7

4

2

2

 

 

 

 

 

 

 

2

 

3

-

1

8

1

 

 

 

 

 

 

 

3

 

5

7

-

1

1

 

 

 

 

 

 

 

4

 

10

8

5

-

5

 

 

 

 

 

 

 

dj

 

2

3

0

0

0

 

 

 

 

 

 

 

2.Вычислили нижнюю границу на всем множестве допустимых решений D.

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

H(D)=H ({1}, )= 2+1+1+5+2+3+0+0 = 14

2

3.Осуществить ветвление имеющегося множества на подмножества.

I= {1,2}, J= и I= {1}, J= {2}

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

Первое ветвление

 

1

 

2

 

3

 

4

di

 

 

 

 

 

 

 

 

 

1

 

-

 

2

 

2

0 (2)

2

 

 

 

 

 

 

 

 

 

2

 

0 (2)

 

-

 

0 (0)

7

0

 

 

 

 

 

 

 

 

 

3

 

2

 

3

 

-

0 (2)

2

 

 

 

 

 

 

 

 

 

4

 

3

 

0 (2)

 

0 (0)

-

0

 

 

 

 

 

 

 

 

 

dj

 

2

 

2

 

0

0

0

 

 

 

 

 

 

 

 

 

d(1,4) = 2 + 0 = 2;

d(2,1) = 0 + 2 = 2;

d(2,3) = 0 + 0 = 0;

d(3,4) = 2 + 0 = 2;

d(4,2) = 0 + 2 = 2;

d(4,3) = 0 + 0 = 0

Наибольшая сумма констант приведения равна (2 + 0) = 2 для ребра (1,4),

следовательно, множество разбивается на два подмножества (1,4) и (1*,4*).

Исключение ребра

 

1

 

2

3

4

di

 

 

 

 

 

 

 

1

 

-

2

2

-

2

 

 

 

 

 

 

 

2

 

0

-

0

7

0

 

 

 

 

 

 

 

3

 

2

3

-

0

0

 

 

 

 

 

 

 

4

 

3

0

0

-

0

 

 

 

 

 

 

 

dj

 

0

0

0

0

2

 

 

 

 

 

 

H(1*,4*) = 14 + 2 = 16

 

 

 

 

Включение ребра

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

3

di

 

 

 

 

 

 

 

 

2

 

0

-

0

0

 

 

 

 

 

 

 

 

3

 

2

3

-

0

 

 

 

 

 

 

 

 

4

 

3

0

0

0

 

 

 

 

 

 

 

 

dj

 

0

0

0

2

 

 

 

 

 

 

 

 

H(1,4) = 14 + 2 = 16 ≤ 16

3

Поскольку нижние границы подмножества (1,4) и подмножества (1*,4*) равны, то

ребро (1,4) включаем в маршрут с новой границей H = 16

Второе ветвление

 

1

 

2

 

3

di

 

 

 

 

 

 

 

2

 

0 (0)

 

-

0 (0)

0

 

 

 

 

 

 

 

3

 

0 (1)

 

1

-

1

 

 

 

 

 

 

 

4

 

-

 

0 (1)

0 (0)

0

 

 

 

 

 

 

 

dj

 

0

 

1

0

0

 

 

 

 

 

 

 

d(2,1) = 0 + 0 = 0;

d(2,3) = 0 + 0 = 0;

d(3,1) = 1 + 0 = 1;

d(4,2) = 0 + 1 = 1;

d(4,3) = 0 + 0 = 0

Наибольшая сумма констант приведения равна (1 + 0) = 1 для ребра (3,1),

следовательно, множество разбивается на два подмножества (3,1) и (3*,1*).

Исключение ребра

 

1

 

2

 

3

 

di

 

 

 

 

 

 

 

 

2

 

0

 

-

 

0

0

 

 

 

 

 

 

 

 

3

 

-

 

1

 

-

1

 

 

 

 

 

 

 

 

4

 

-

 

0

 

0

0

 

 

 

 

 

 

 

 

dj

 

0

 

0

 

0

1

 

 

 

 

 

 

 

 

H(3*,1*) = 16 + 1 = 17

 

 

 

 

 

 

Включение ребра

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

3

 

di

 

 

 

 

 

 

 

 

 

 

2

 

-

 

0

 

0

 

 

 

 

 

 

 

 

 

4

 

0

 

0

 

0

 

 

 

 

 

 

 

 

 

dj

 

0

 

0

 

0

 

 

 

 

 

 

 

 

 

H(3,1) = 16 + 0 = 16 ≤ 17

 

 

 

 

 

 

Поскольку нижняя граница этого подмножества (3,1) меньше, чем подмножества

(3*,1*), то ребро (3,1) включаем в маршрут с новой границей H = 16

Всоответствии с этой матрицей включаем в гамильтонов маршрут ребра (2,3) и (4,2).

Врезультате по дереву ветвлений гамильтонов цикл образуют ребра:

(1,4), (4,2), (2,3), (3,1),

Длина маршрута равна F(Mk) = 16

4

Вывод

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

5