Применение методов решения задачи коммивояжера на практике
Курсовая работа, 16 Апреля 2014, автор: пользователь скрыл имя
Краткое описание
В современном мире происходит стремительное развитие науки и техники. С каждым годом число предприятий по производству различного рода продукции становится всё больше и больше. Но чтобы предприятие успешно развивалось и приносило прибыль, нужно взвешивать все плюсы и минусы не только вопросов касающихся затрат на закупку сырья и оборудования, но и вопросов связанных с транспортировкой груза к месту реализации, с нахождением оптимального маршрута и минимизацией затрат.
Именно задача коммивояжера помогает найти кратчайший путь с минимальными затратами.
Содержание
Введение…………………………………………………………………..…...6
1 Общие сведения о задаче коммивояжёра………………………………....8
Экономические ситуации, приводящие к задаче коммивояжера…....9
Постановка и математическая модель задачи коммивояжера…..…10
Методы решения задачи коммивояжера………………………..……12
Метод ветвей и границ………………………………………………….12
Венгерский метод…………………………………………..…………..14
Применение методов решения задачи коммивояжера на практике...16
3.1 Решение задачи коммивояжера методом ветвей и границ….……….16
3.2 Решение задачи коммивояжера венгерским методом……………….…25
Заключение……………………………………………………………..….…32
Глоссарий ………………………………………………………………..…..33
Список используемых источников…………
Вложенные файлы: 1 файл
TGTU_080100_62_009_-_KR_Kozhevnikova_V_A_BEK23..docx
— 168.82 Кб (Скачать файл)
d(1,6) = 1 + 0 = 1; d(2,1) = 0 + 1 = 1; d(2,3) = 0 + 0 = 0; d(3,5) = 2 + 0 = 2; d(4,6) = 1 + 0 = 1; d(5,2) = 1 + 3 = 4; d(6,3) = 0 + 0 = 0; d(6,4) = 0 + 1 = 1; d(6,5) = 0 + 0 = 0;
Наибольшая сумма констант приведения равна (1 + 3) = 4 для ребра (5,2), следовательно, множество разбивается на два подмножества (5,2) и (5*,2*). Нижняя граница этого подмножества:
H(5*,2*) = 8 + 4 = 12
Исключение ребра (5,2) проводим путем замены элемента d52 = 0 на M, после чего осуществляем очередное приведение матрицы расстояний для образовавшегося подмножества (5*,2*), в результате получим редуцированную матрицу. (Таблица 7)
Таблица 7 Приведение матрицы расстояний для подмножества (5*,2*), матрица размерностью 6´6
i j |
1 |
2 |
3 |
4 |
5 |
6 |
di |
1 |
M |
4 |
2 |
1 |
3 |
0 |
0 |
2 |
0 |
M |
0 |
3 |
4 |
6 |
0 |
3 |
5 |
3 |
M |
2 |
0 |
2 |
0 |
4 |
3 |
4 |
5 |
M |
1 |
0 |
0 |
5 |
1 |
M |
2 |
6 |
M |
4 |
1 |
6 |
4 |
6 |
0 |
0 |
0 |
M |
0 |
dj |
0 |
3 |
0 |
0 |
0 |
0 |
4 |
Включение ребра (5,2) проводится путем исключения всех элементов 5-ой строки и 2-го столбца, в которой элемент d25 заменяем на М, для исключения образования негамильтонова цикла.
В результате получим другую сокращенную матрицу (5 x 5), которая подлежит операции приведения.
Сумма констант приведения сокращенной матрицы: ∑di + ∑dj = 0
После операции приведения сокращенная матрица будет иметь вид: (Таблица 8)
Таблица 8 Сокращённая матрица, матрица размерностью 5´5
i j |
1 |
3 |
4 |
5 |
6 |
di |
1 |
M |
2 |
1 |
3 |
0 |
0 |
2 |
0 |
0 |
3 |
M |
6 |
0 |
3 |
5 |
M |
2 |
0 |
2 |
0 |
4 |
3 |
5 |
M |
1 |
0 |
0 |
6 |
4 |
0 |
0 |
0 |
M |
0 |
dj |
0 |
0 |
0 |
0 |
0 |
0 |
Нижняя граница подмножества (5,2) равна: H(5,2) = 8 + 0 = 8 ≤ 12
Поскольку нижняя граница этого подмножества (5,2) меньше, чем подмножества (5*,2*), то ребро (5,2) включаем в маршрут с новой границей H = 8
Шаг №2. Определяем ребро ветвления и разобьем все множество маршрутов относительно этого ребра на два подмножества (i,j) и (i*,j*).
С этой целью для всех клеток матрицы с нулевыми элементами заменяем поочередно нули на М (бесконечность) и определяем для них сумму образовавшихся констант приведения, они приведены в скобках. (Таблица 9)
Таблица 9 Определение ребра ветвления (5,2), матрица размерностью 5´5
i j |
1 |
3 |
4 |
5 |
6 |
di |
1 |
M |
2 |
1 |
3 |
0(1) |
1 |
2 |
0(3) |
0(0) |
3 |
M |
6 |
0 |
3 |
5 |
M |
2 |
0(2) |
2 |
2 |
Продолжение таблицы 9 Сумма образовавшихся констант приведения, матрица размерностью 5´5
4 |
3 |
5 |
M |
1 |
0(1) |
1 |
6 |
4 |
0(0) |
0(1) |
0(0) |
M |
0 |
dj |
3 |
0 |
1 |
0 |
0 |
0 |
d(1,6) = 1 + 0 = 1; d(2,1) = 0 + 3 = 3; d(2,3) = 0 + 0 = 0; d(3,5) = 2 + 0 = 2; d(4,6) = 1 + 0 = 1; d(6,3) = 0 + 0 = 0; d(6,4) = 0 + 1 = 1; d(6,5) = 0 + 0 = 0;
Наибольшая сумма констант приведения равна (0 + 3) = 3 для ребра (2,1), следовательно, множество разбивается на два подмножества (2,1) и (2*,1*).
Нижняя граница гамильтоновых циклов этого подмножества:
H(2*,1*) = 8 + 3 = 11
Исключение ребра (2,1) проводим путем замены элемента d21 = 0 на M, после чего осуществляем очередное приведение матрицы расстояний для образовавшегося подмножества (2*,1*), в результате получим редуцированную матрицу. (Таблица 10)
Таблица 10 Приведение матрицы расстояний для подмножества (2*,1*) матрица размерностью 5´5
i j |
1 |
3 |
4 |
5 |
6 |
di |
1 |
M |
2 |
1 |
3 |
0 |
0 |
2 |
M |
0 |
3 |
M |
6 |
0 |
3 |
5 |
M |
2 |
0 |
2 |
0 |
4 |
3 |
5 |
M |
1 |
0 |
0 |
6 |
4 |
0 |
0 |
0 |
M |
0 |
dj |
3 |
0 |
0 |
0 |
0 |
3 |
Включение ребра (2,1) проводится путем исключения всех элементов 2-ой строки и 1-го столбца, в которой элемент d12 заменяем на М, для исключения образования негамильтонова цикла.
В результате получим другую сокращенную матрицу (4 x 4), которая подлежит операции приведения.
Сумма констант приведения сокращенной матрицы: ∑di + ∑dj = 0
После операции приведения сокращенная матрица будет иметь вид (Таблица 11):
Таблица 11 Сокращённая матрица, матрица размерностью 4´4
i j |
3 |
4 |
5 |
6 |
di |
1 |
2 |
1 |
М |
0 |
0 |
3 |
M |
2 |
0 |
2 |
0 |
4 |
5 |
M |
1 |
0 |
0 |
6 |
0 |
0 |
0 |
M |
0 |
dj |
0 |
0 |
0 |
0 |
0 |
Нижняя граница подмножества (2,1) равна:
H(2,1) = 8 + 0 = 8 ≤ 11
Чтобы исключить подциклы, запретим следующие переходы: (1,5),
Поскольку нижняя граница этого подмножества (2,1) меньше, чем подмножества (2*,1*), то ребро (2,1) включаем в маршрут с новой границей H = 8
Шаг №3. Определяем ребро ветвления и разобьем все множество маршрутов относительно этого ребра на два подмножества (i,j) и (i*,j*).
С этой целью для всех клеток матрицы с нулевыми элементами заменяем поочередно нули на М (бесконечность) и определяем для них сумму образовавшихся констант приведения, они приведены в скобках. (Таблица 12)
Таблица 12 Определение ребра ветвления (2,1) матрица размерностью 4´4
i j |
3 |
4 |
5 |
6 |
di |
1 |
2 |
1 |
M |
0(1) |
1 |
3 |
M |
2 |
0(2) |
2 |
2 |
4 |
5 |
M |
1 |
0(1) |
1 |
6 |
0(2) |
0(1) |
0(0) |
M |
0 |
dj |
2 |
1 |
0 |
0 |
0 |